TDP004 Objektorienterad programmering
Förberedelseuppgifter Klasser och Objektorientering
Uppgifter relaterade till Klasser och Objektorientering
Några uppgifter handlar koncept, tankesätt och modellering - hur programmet struktureras på ett enligt samlad erfarenhet bra sätt. Andra uppgifter handlar mer om syntax och hur objekt skapas och används i C++ - språkstödet för objektorienteringen. Slutligen finns uppgifter som blandar - hur implementeras ett koncept i C++? Hur set det ut i kod?Uppgift 1
Skapa ett klasskelett (enbart deklarationer) för att beskriva ("modellera") ett linjerat papper. Tänk t.ex. att olika papper skall finnas som en del av ett datorspel, och en spelare skall kunna interagera med papper. Tänk igenom vilka medlemsfunktioner som behöver finnas för att den programmerare som skriver koden för spelaren skall kunna låta spelaren interagera med olika papper.Uppgift 2
Cohesion är ett begrepp som förekommer och är viktigt i programdesign. Det diskuteras t.ex. i avsnitt 7.2 i Code Complete. Vad betyder det att något har "strong functional cohesion"? Finns det andra typer av cohesion? Visa exempel.Uppgift 3
Coupling är ett begrepp som är speciellt viktigt för ett objektorienterat program och diskuteras på flera ställen i Code Complete. Vad innebär coupling. Vilka konkreta råd finns för att skapa klasser med låg coupling?Uppgift 4
Förklara begreppet abstraktion ("abstraction") och visa några bra och dåliga exempel på abstraktion i C++ för att tydliggöra din poäng.Uppgift 5
Förklara begreppet inkapsling ("encapsulation") och visa några bra och dåliga exempel på inkapsling i C++ för att tydliggöra din poäng.Uppgift 6
Visa med exempel i C++ vad som är skillnaden på en vanlig "fri" funktion och en medlemsfunktion. Tänk både på skillnad i vilka variabler funktionen har tillgång till och skillnad i hur funktionen anropas.Uppgift 7
Visa med exempel i C++ vad som är skillnaden på en vanlig variabel, en medlemsvariabel och en statisk medlemsvariabel. Tänk både på hur det kan tänkas se ut i minnet och hur/var variabeln kan läsas eller ändras.Uppgift 8
Varför ska man lägga saker privat i en klass? Är det inte bara bra mycket enklare och mindre strul att lägga allt publikt direkt? Leta upp minst tre bra motiv att lägga så mycket som går privat.Uppgift 9
I C++ finns flera typer av konstruktorer. Det finns vanliga konstruktorer default-konstruktorer, kopieringskonstruktorer och delegerande konstruktorer. Vad skiljer dem åt och vad har en konstruktor för syfte? Varför är de viktiga?
Sidansvarig: Eric Ekström
Senast uppdaterad: 2024-10-23