Objekt-orienterad programmering och design DIT953 Niklas Broberg, 2018
Kursteamet Niklas Broberg kursansvarig, föreläsare, examinator Johannes Åman Pohjola föreläsare Assistenter: Karin Wibergh Sarosh Nasir John Lindström Gidskehaug
Vad är objekt-orientering? objekt-orienterat språk? objekt-orienterat program? objekt-orienterad design?
Objekt-orientering är ett sätt att modellera en applikation i termer av kommunicerande objekt. Objekt-orienterad design är skapandet av modellen. Objekt-orienterad programmering är implementationen av modellen. Ett objekt-orienterat språk är ett programspråk med inbyggt stöd för att underlätta implementationssteget. Ett program skrivet i ett objekt-orienterat språk måste inte vara objekt-orienterat. Ett objekt-orienterat program måste inte implementeras i ett objektorienterat språk.
Objekt-orientering: process OO analys => OO design => OO programmering DIT212 Objekt-orienterat programmeringsprojekt (valbar år 2-3, lp4) DIT953 Objekt-orienterad programmering och design DIT012 Imperativ programmering med grundläggande objekt-orientering
Verktyg vs principer Ni har lärt er hur olika verktyg (i Java) fungerar. I den här kursen vill vi svara på frågor som när ska olika verktyg bör användas, varför de bör användas, och hur de bör användas bäst.
Från verktyg till principer Decorator Strategy PATTERNS MVC Singleton Template Adapter Bridge Iterator Low coupling Don t repeat yourself Favor composition Single responsibility PRINCIPLES GRASP FOUNDATIONS Information hiding Abstraction Inheritance Composition SOLID Liskov Substitution Principle Open-Closed Principle High cohesion Observer Factory Facade State Generics Abstract classes Exceptions JAVA Testing Collections Threads equals hashcode
Blooms lärandepyramid DIT012: Verktyg: Applying DIT953: Verktyg: EvaluaIng Principer: Applying
Kurshemsida http://www.cse.chalmers.se/edu/course/dit953
Kursens innehåll Del 1 : Objekt-orientierade verktyg och koncept Objects, references, initialization, Arv interfaces, abstract classes, dynamic binding, overloading, composition, LSP, Generics polymorphism, variance, Exceptions, design-by-contract, Del 2 : Objekt-orienterade designprinciper och mönster Överlapp förekommer
Kursens upplägg 2 moduler per vecka, 8 veckor Modul = Övning -> laborationspass -> reflektion/föreläsning Övning introducerar koncept, låter er arbeta med problemställning. Laborationspass låter er arbeta självständigt, med övningar och laborationer En del laborationspass kommer att användas till specifika workshops Föreläsning knyter ihop ämnet, visar på principer, diskuterar, reflekterar Två obligatoriska laborationer, vardera i två delar Inlämningsuppgift: analys av kod Muntlig tentamen
Jag förväntar mig av er Att ni är närvarande och deltar aktivt på övningar och föreläsningar. Att ni använder laborationstiden konstruktivt. Att ni deltar aktivt i grupparbetet kring laborationerna. Att ni lämnar in/redovisar laborationerna i (god) tid. Då kommer kursen gå bra för er!
Saker ni känner till sedan tidigare(?) Klasser Objekt Subklasser Primitiva typer Typomvandling Enum Interface Metoder Konstruktorer Call by value Call by reference Arv (inheritance) Polymorfism Association Inkapsling Synlighet Overloading Overriding Variabler Klassvariabler Scope Abstrakta klasser Abstrakta metoder Dynamisk bindning Arrayer If/While/For Enkel grafik
Övning Ladda hem DrawPolygons.java från kursens hemsida. Diskutera koden i grupper: Vilka förändringar av koden skulle göra den bättre? Varför? vad betyder bättre? OBS! Övningen går ut på att tänka och diskutera inte skriva kod! För mer utmaning: Fundera över möjligheten att klicka ut nya polygoner. Hur bör denna förändring implementeras?