DAVA15 Objekt, klasser Vad är det? Vad är sambandet mellan dem? Vad är skillnaden mellan dem? Tillstånd Signatur Kommunikation Typ Fält, parametrar och lokala variabler Likheter och skillnader Räckvidd Konstruktorer Metoder Accessor, mutator, predicate 1
Abstraktion Modularisering Objektreferens Overloading Klassdiagram och objektdiagram Primitiva typer och objekttyper Samlingar och arrayer Likheter och skillnader Fördelar och nackdelar Traversering av samlingar och arrayer Index vs. Iterator Dokumentation Javadoc Fördelar med dokumentation (och med javadoc speciellt) Gränssnitt Immutable objekt Klassvaribler (statiska variabler) Paketindelning och import Information hiding Public vs private 2
Testning Unit testing Regression testing Walkthroughs Manuella, verbala Utskrifter Vad har de olika teknikerna för fördelar / nackdelar Debugging Coupling Inkapsling Implicit och explicit coupling Cohesion Klass och metod Läsbarhet Återanvändbarhet Tecken på dålig design Ex.. Ansvarsdriven design Refactoring!"# $% & & av arv Superklass, subklass, arvshierarki Fördelar med arv Polymorfism Subtyping av subtyp Jämförelse mot subklass Variabler / parametrar Object-klassen i Java Polymorfiska samlingar 3
'($ & Polymorfism Metoder Statiska och dynamiska typer Omdefinition (overriding) Dynamic method lookup )" Abstrakta klasser och gränssnitt (interface) av båda Likheter och skillnader När skall man använda vad! Multipelt implementationsarv Nackdel? Hur har Java valt att implementera.. Fördelar / nackdelar * Defensiv programmering Interaktion mellan klient och server; ansvarsområden Undantagshantering Javas undantagshanteringsmodell Checked vs unchecked Återhämtning (error recovery) Undvikande (error avoidance) Sätt in kontraktsmodellen i alla dessa sammanhang Samarbetsmöjligheter Javas filhanteringsmodell som exempel 4
Se i ett större perspektiv Prototyping Par-programmering Livscykelmodeller Vattenfallsmodellen Iterativa modeller Designmönster Decorator Singleton Observer +,- $$ Vad är det? Vilka krav ställs på ett programspråk för att det skall anses vara OO? Hur skiljer sig ett OO-språk från imperativa språk som C? Använd laborationer/exempel för att belysa frågeställningar Uppgift 1: Begrepp (5 poäng) Förklara följande begrepp kortfattat: a) Coupling (1 p) b) Cohesion (1 p) c) Override (omdefiniera) (1 p) d) Overload (överlagra) (1 p) e) Design patterns (designmönster) (1 p) 5
Uppgift 2: Samlingar (5 poäng) Nedanstående kod kommer från projektet Notebook i kapitel 4 i kursboken. I första versionen används en ArrayList och i den andra versionen används en array ( fixed-size collection ) istället. a) Förklara skillnaden mellan de båda samlingarna. Ange för och nackdelar med respektive lösning. b) I versionen med ArrayList finns följande metod. Skriv om metoden så att den kan gå igenom listan med noteringar med hjälp av en iterator istället. (Du har tillgång till Javas API för ArrayList och Iterator i bilaga A) Uppgift 3: Arv och polymorfism (5 poäng) I bilaga B finns kod för ett program som lagrar information om CD och videofilmer. En testklass ( DBUI.java ) lägger in 8 föremål och skriver ut dessa. a) Vad skrivs ut när programmet körs? (1 p) b) Förklara, med hjälp av kodexemplet och dina kunskaper från kursboken, begreppen method lookup (3p) och method polymorphism (1p). (3+1 p) Uppgift 4: Gränssnitt, abstrakta klasser och designmönster (15 poäng) 6
Ovanstående exempel är ett klassdiagram för designmönstret Decorator. Med hjälp av dina kunskaper från kursboken och diagrammet, svara på följande: a) Förklara utifrån exemplet vad Decorator-mönstret gör. Ta gärna hjälp av figurer i din beskrivning. (7 p) b) Klassen Decorator i exemplet är abstrakt, medan VisualComponent är ett gränssnitt. Vilka skillnader och likheter finns det mellan abstrakta klasser och gränssnitt (om det finns några)? Vilka är deras respektive uppgifter? (4 p) c) I Java är det inte tillåtet med multipelt arv. Hur har man löst det i Java istället och vilka fördelar och nackdelar finns det med Javas lösning? Uppgift 5: Undantag (5 poäng) a) I Java används två typer av undantag, kontrollerade (checked exceptions) och okontrollerade (unchecked exceptions). Förklara skillnaden mellan dessa två. (2 p) b) När och hur anser du att undantag ska användas tillsammans med kontrakt? Motivera dina svar. Uppgift 6: Objektorientering (5 poäng) Vad anser du vara de viktigaste principerna i objektorienterad programmering, förutom arv och polymorfism? Motivera dina svar. 7