Information Objektorienterad modellering och diskreta strukturer Lennart Andersson Reviderad 2009-10-14 2009 Tentamen torsdag 22 oktober 8-12/13. Hjälpmedel på tentamen. Martin: PPP Andersson: UML Holm: Java snabbreferens Andersson: F01-F06.pdf och F14.pdf Andersson: F07-F13.pdf, appendix.pdf (EDAF10) Ofärdiga projekt. Computer: vecka 1 i HT2 XL: vecka 4 i HT2 Ofärdiga laborationer. Uppsamlingslaboration i vecka 1 HT2 Nästa föreläsning för EDAF10. Måndag vecka 1 i HT2, kl 9.15. OMD 2009 F14-1 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. OMD 2009 F14-3 OMD 2009 F14-2 Computer Mönster Command Template method Strategy Principer Lokalitetsprincipen Enkelt ansvar Open/closed-principen Inverterat beroende-principen OMD 2009 F14-4
XL Resursanvändning Mönster Model/View/Control Observer/Listener Composite Factory Principer Lokalitetsprincipen Abstrakt representation Ej dubbel representation Dold representation Enkelhet framför allt Optimera bara om det behövs Tidskomplexitet Minneskomplexitet Programmerarkomplexitet Användarkomplexitet OMD 2009 F14-5 Kursenkät 2007 OMD 2009 F14-6 Vad skall man göra för att klara tentamen? Uppgifter från år 2006 inom parentes. Medelstudietid 68 (78) timmar. 4 (3) studenter redovisar studietider på mer än 120 timmar [124, 134, 137 och 150]. Medelvärdet för Computer är 13 (13) timmar. 11 (9) studenter har använt mer än 20 timmar [22-36, 60]. Medeltiden för XL är 18 (20) timmar. 5 (4) studenter har använt mer än 30 timmar [3*35, 40 och 50]. Kursen har i medel tagit 33% (34%) av studietiden. Spridningen är stor. 1/5 (1/4) av studenterna anger mer än 40%. För dessa är medelstudietiden 92 (86) timmar. Gör projekten. Lös övningsproblemen. Gör laborationerna. Hur gör man för att misslyckas? Låt de andra i gruppen göra projekten. Titta på lösningar till övningar och gamla tentor i stället för att lösa problemen själv. OMD 2009 F14-7 OMD 2009 F14-9
061017 Uppgift 1 Template method... Uppgift 1 I ett program som hanterar listor finns två klasser som är identiska så när som på två rader. Den ena klassen visas nedan med de skiljande raderna i den andra klassen inlagda som kommentarer efter den rad de skall ersätta. Använd Template method-mönstret för att eliminera duplicerad kod och visa koden för de klasser som ersätter de befintliga. public class StarList extends java.util.arraylist { //public class EnumList extends java.util.arraylist { public String tostring() { StringBuilder builder = new StringBuilder(); for (int i = 0; i < size(); i++) { builder.append("* "); // builder.append(i + 1).append(". "); builder.append(get(i)); builder.append( \n ); return builder.tostring(); OMD 2009 F14-10 Uppgift 2 Design principles OMD 2009 F14-11 Uppgift 2 Problemförfattaren anser att följande klass har en utmärkt design, men man kan hävda att den strider mot principen om enkelt ansvar (Single Responsibilty Principle) eftersom den både ansvarar för att rita upp sig genom att utvidga JButton och att vara en lyssnare för knapptryckningar. Gör om designen så att lyssnarrollen delegeras till en egen klass. Designen skall redovisas med ett klassdiagram med den nya klassen och de klasser och gränssnitt som förekommer ovan. public class StartButton extends JButton implements ActionListener { private Train train; public StartButton(Train train) { super("start"); this.train = train; addactionlistener(this); public void actionperformed(actionevent event) { train.start(); OMD 2009 F14-15 OMD 2009 F14-16
Uppgift 3 Composite... Uppgift 3 I ett elektroniskt nyhetssystem finns nyhetsgrupper och artiklar. En grupp kan innehålla grupper och artiklar. Både grupper och artiklar har en titel. En artikel innehåller en text. Hela nyhetssystemet är själv en nyhetsgrupp. Det skall finnas en metod find(string title) som returnerar den första grupp eller artikel som hittas med den givna titeln. Rita ett klassdiagram med arv, associationer med multipliciteter, attribut och find-metoden som modellerar systemet. Implementera metoden find i den klass som representerar en nyhetsgrupp. Lösningen skall utnyttja följande klasser och gränssnitt. class ArrayList implements List { boolean add(object object) Iterator iterator() // omissions interface List { boolean add(object object) Iterator iterator(); //omissions interface Iterator { boolean hasnext(); Object next(); void remove(); OMD 2009 F14-19 Uppgift 5 Strategy I en räknedosa finns tre sorters tal som representeras på olika sätt: heltal, flyttal och komplexa tal. Räknedosan kan beräkna aritmetiska uttryck som antingen är ett tal eller en summa eller en produkt av två uttryck. Dosan tillåter bara att man adderar och multiplicerar uttryck vars värden har samma typ. Gör ett klassdiagram som visar representationen av uttryck och tal med arv, associationer med multipliciteter, attribut och en metod som beräknar uttryckets värde och implementera modellen. Modellen får tillåta att man blandar olika typer av uttryck men implementeringen får förutsätta att man inte gör det. Modellen behöver ej utnyttja Template-mönstret. Du behöver ej implementera den klass som representerar flyttal. Om du inte kommer ihåg hur man adderar och multiplicerar komplexa tal kan jourhavande lärare beskriva det. OMD 2009 F14-24 OMD 2009 F14-20 Uppgift Fiktiv 3 Modellering Gör ett klassdiagram för representation av tillståndsdiagram. Det finns fyra sorters tillstånd: vanligt tillstånd, som har ett namn. Ett vanligt tillstånd kan innehålla en sträng som talar om vilken åtgärd som skall vidtagas när man kommer in i tillståndet. starttillstånd. sluttillstånd. sammansatt tillstånd som innehåller ett eller flera tillståndsdiagram. Från ett tillstånd kan det finnas övergångar till ett annat (eller samma) tillstånd. En övergång är märkt med ett händelsenamn. Från ett starttillstånd och ett sammansatt tillstånd finns det exakt en övergång och från ett sluttillstånd finns det inga övningar. I övrigt finns inga restriktioner på antalet övergångar. Klassdiagrammet skall visa alla associationer med multipliciteter och de attribut som anges ovan. OMD 2009 F14-25
Uppgift Fiktiv 5 Designmönster En datorfabrikant tillverkar en dator till vilken man kan ansluta en skrivare med en avlång kontakt och en mus med en liten rund kontakt. En ny datormodell skall lanseras där man också skall kunna ansluta en scanner. Företagets ingenjörer har fått klart för sig att det finns så kallade usb-kontakter på vissa scannermodeller och att det börjar dyka upp skrivare och möss med samma anslutning. Det finns också små komponenter som kallas usb-hubbar som gör att man kan ansluta flera usb-enheter till en usb-kontakt. För att ansluta gamla skrivare och möss finns speciella anpassningsenheter mot usb. Man beslutar att den nya modellen skall ha tre usb-kontakter och inga speciella skrivar- eller muskontakter. Rita klassdiagram för den gamla och nya modellen och visa hur man i den nya modellen ansluter gamla skrivare och möss och nya usb-enheter och hubbar. Ingenjörerna har använt flera av lärobokens designprinciper och designmönster. Vilka? OMD 2009 F14-26 Diskreta strukturer 1 a. Skriv ned alla elementen i {0, 1 P({0, 1). b. Låt A, B och C vara tre godtyckliga mängder. Konstruera mängden av alla element som tillhör exakt två av mängderna A, B och C. Konstruktionen får bara innehålla namnen på mängderna, parenteser och symbolerna för union, snitt och komplement. OMD 2009 F14-27 Diskreta strukturer 3 a. En funktion f A B säges vara ett-till-ett om två olika argument alltid ger olika funktionsvärden. Skriv ett predikat som är sant precis då f är ett-till-ett. Predikatet får bara innehålla satslogiska operatorer, kvantifieringar, variabler, parenteser, = och. Det är tillåtet att utelämna parenteser där våra konventioner tillåter det. b. Ange ett exempel på ett element i (N N) N och ett i N (N N). OMD 2009 F14-28