Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN) Dagens agenda Admin Tentatid och plats Tillåtet på tentan EDAF10 Föreläsning inför XL-projektet Uppsamlingslaboration Repetition Kursens syfte & mål Principer Mönster UML EDAF10/EDA061 HT2013, Ulf Asklund 1
Tentamenslokal Tentamen är torsdagen den 24 oktober kl 8.00 EDAF10 i Vic: 1A-C EDA061 i Vic: 1D Tillåten litteratur på tentamen På tentamen får medföras Martin, PPP Föreläsningsbilder F01-06.pdf Andersson, UML Java snabbreferens Andersson, Diskreta strukturer [EDAF10] Sedvanliga anteckningar är OK. Information kopierad från andra dokument får inte förekomma. EDAF10/EDA061 HT2013, Ulf Asklund 2
XL Introduktion till XL-projektet måndag den 28 oktober kl. 15 Skapa grupper och anmäl redovisningstid via SAM. Redovisning 1 i v45 Redovisning 2 i v46 Kursens syfte Kursen ger förmåga till hållbar och resursmedveten utveckling av program som kan återanvändas och modifieras med hänsyn till förändrade krav i ett industriellt sammanhang. Du skall bli en tillgång och inte belastning i din första anställning. EDAF10/EDA061 HT2013, Ulf Asklund 3
Kursens mål Efter genomgången kurs ska studenten kunna lokalisera och känna igen användning av gängse designprinciper och designmönster i givna program, utforma och implementera objektorienterade program med många klasser och några paket, välja och implementera lämpliga designmönster i typiska problem, använda centrala delar av en integrerad utvecklingsmiljö för design, implementering och omstrukturering av program, beskriva programdesign med UML (Unified Modeling Language), utvärdera en programdesign med avseende på designprinciper samt skriva program som är lätta att förstå för den som behöver göra modifieringar. Designprinciper Lokalitetsprincipen Single Responsibilty Principle Open/Closed Principle Dependency Inversion Principle (Abtraktionsprincipen) Integritetsprincipen Liskov Substitution Principle Interface Segregation Principle EDAF10/EDA061 HT2013, Ulf Asklund 4
DIP Bero på abstraktion Dependency Inversion Principle High level classes should not depend on low level classes; both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. UML-pilar skall gå mot gränssnitt och abstrakta klasser. Dependency Inversion EDAF10/EDA061 HT2013, Ulf Asklund 5
Designmönster Command [Computer] Composite [XL, lab 2] Template Method [Computer, lab 2] Strategy [Computer, XL] Decorator [Övning 2] Singleton Null Object Observer [XL] Factory Method [XL, lab 4] Interpretor [Computer] Command EDAF10/EDA061 HT2013, Ulf Asklund 6
Kompositmönstret (Composite) Ni kommer ihåg Comand Nu med Composite EDAF10/EDA061 HT2013, Ulf Asklund 7
Expr har Composite-struktur Strategy EDAF10/EDA061 HT2013, Ulf Asklund 8
Decorator-mönstret i Reader-klasserna reader = new BufferedReader(new FileReader(fileName)); public class BufferedReader extends Reader { private Reader in; // omissions } Factory Method SomeApp <<interface>> Shape Square Circle <<creates>> SomeApp har endast beroende till gränssnittet Shape SomeApp skapar objekt av Square och Circle och blir även beroende till konkreta klasserna Square och Circle. EDAF10/EDA061 HT2013, Ulf Asklund 9
Factory Method SomeApp <<interface>> Shape Factory + makesquare():shape + makecircle():shape <<interface>> Shape ShapeFactory Implementation Square Circle <<creates>> Factory Method tar bort beroendet till de konkreta klasserna UML: objekt- och sekvensdiagram EDAF10/EDA061 HT2013, Ulf Asklund 10
Objektdiagram Objektdiagram (1 + 2) + 3 EDAF10/EDA061 HT2013, Ulf Asklund 11
Sekvensdiagram Om du vill lära dig mer EDA270 Programvaruutveckling i grupp projekt, fokus på utvecklingsprocessen XP med rika tillfällen att göra design. EDA180 Kompilatorteknik, mycket modellering, aspektorienterad programmering. EDAN40 Funktionsprogrammering, en annan paradigm. EDAN01 Constraint programming, ytterligare en paradigm. EDA031 C++ programmering, för den som vill lära sig ett programspråk för objektorienterad modellering från 1970- talet (och som fortfarande används). EDAF10/EDA061 HT2013, Ulf Asklund 12