4.7 Observatörsmönstret

Storlek: px
Starta visningen från sidan:

Download "4.7 Observatörsmönstret"

Transkript

1 4.7 Observatörsmönstret Uppgift 4.11 Modifiera följande programfragment med hjälp av Observer/Observable så att Model-klassen kan kompileras utan tillgång till Gui-klassen. Lösningen ska redovisas med Java-kod. Även konstruktörerna ska vara med. public class Model { private Gui gui; private int state; // attribute representing the state public Model (Gui gui) { this.gui = gui; public void changestate() { // commands changing the state gui.showstate(state); public class Gui extends Frame { public void showstate(int state) { // display state public static void main(string [] arg) { new Model(new Gui()); I Observer/Observable finns public interface Observer { public void update(observable o, Object arg); public class Observable { public void addobserver(observer o) public void notifyobservers(object arg) protected void setchanged() 22

2 Uppgift 4.12 Vi vill ha en klass Stock och en klass Portfolio, enligt beskrivningen nedan. Klassen Stock skall hålla reda på värdet av en given aktie, dess update - metod kommer att anropas av någon annan så snart aktiens värde ändras. Varje gång aktiens värde ändras skall den meddela sina observatörer att den ändrats (Stock skall vara en Observable). Klassen Portfolio skall hantera en aktieportfölj (dvs ett antal aktier), och hålla reda på hur värdet på portföljen har utvecklats sedan vi lade till aktierna (utvecklingen, current yield, är summan av aktuella kurser delat med summan av inköpskurserna). Portfolio skall vara en Observable, och meddela sina observatörer varje gång värdet på en ingående aktie ändras på ett sådant sätt att portföljens utveckling understiger en given gräns (yield limit i specifikationen nedan). Klasserna skall ha följande specifikationer: class Stock extends Observable { public void update(double value) //... din kod... public double value() //... din kod... class Portfolio...din kod... { public Portfolio(double yieldlimit) //... din kod... public void add(stock stock) //... din kod... public double currentyield() //... din kod Implementera Stock och Portfolio enligt beskrivningen ovan. 2. Portfolio har nu två uppgifter, både att räkna samman, och att varna flytta ansvaret för att varna till en ny klass (observera att detta innebär att Portfolio nu bör meddela när dess värde ändrats, oavsett om dess värde är för lågt eller ej). Redovisa med Javakod för den nya klassen och förändringarna i Portfolio-klassen. 23

3 4.8 Fabriksmönstret Uppgift 4.13 En testklass till en simulator för en liten dator innehåller public class Factorial extends Program { public Factorial() { Address n = new Address(0), fac = new Address(1); add(new Copy(new LongWord(5), n)); // omissions Det första argumentet i konstrueraren Copy(Word, Address) skall ha ett argument som implementerar Word och är av den typ som datorns minne har. Testklassen går alltså inte att använda för en dator vars minne innehåller VeryLongWord. Använd någon fabriksteknik Factory så att man kan använda samma Factorialklass för alla minnestyper som implementerar Word. Det argument som anger vilket tal som skall representeras av ett Word skall vara av typen String. Lösningen redovisas med ett Java-gränssnitt som alla Word-fabriker skall implementera och en modifierad version av Factorial som använder en godtycklig sådan fabrik. 4.9 Alla mönster Uppgift 4.14 Denna uppgift innehåller ett antal deluppgifter, där varje deluppgift har ett påstående och en anledning. För varje deluppgift, svara med ett av följande alternativ: A Både påståendet och anledningen är korrekta uttalanden och anledningingen förklarar påståendet på ett korrekt sätt. B Både påståendet och anledningen är korrekta uttalanden, men anledningen förklarar inte påståendet. C Påståendet är ett korrekt uttalande, men anledningen är ett felaktigt uttalande. D Påståendet är felaktigt, men anledningen är ett korrekt uttalande. E Både påståendet och anledningen är felaktiga uttalanden. 24

4 T1 Påstående Genom att använda tillståndsmönstret ökar man antalet klasser i designen. T2 Figur 4.2 visar hur OCP-principen tillämpats. T3 Strategy är ett bra mönster då man vill kunna ändra beteendet hos ett objekt under exekvering T4 T5 T6 Javakoden i figur 7.3 visar ett exempel på mallmetod-mönstret (Template method). Javakoden i figur 7.3 visar ett exempel på dekoratörsmönstret (Decorator). Genom att använda kompositmönstret bryter man mot SRP. T7 Genom att tillämpa Mallmetodmönstret (Template method) bryter man mot DRY principen. T8 Med hjälp av fabriksmetod-mönstret kan man lösa problemet med ramverket i figur 7.1 så att användaren kan lägga till sina egna specialiseringar av Shape. T9 T10 Med hjälp av strategimönstret skulle man i exemplet i figur 4.6 kunna öppna för förändringar i fler dimensioner, t.ex. olika färger eller filter. Dessa kan dessutom variera under livstiden för ett Figure-objekt. Klassen Macro i figur 4.3 visar ett exempel på hur kompositmönstret kan implementeras. Anledning Tillståndsmönstret kapslar in beteendet för olika tillstånd i separata klasser. Figur 4.2 visar ett exempel på Factory-mönstret. Det är lätt att skapa en ny strategi genom att skapa en klass som implementerar strategi-gränssnittet Klassen Slot i figur 7.3 är en abstrakt klass med två mallmetoder. Subklasserna CommentSlot och ExpressionSlot kan lägga till funktionalitet till en instans av Slot utan att andra instanser av Slot påverkas. Kompositmönstret låter användaren behandla hela samlingar och enskilda objekt på ett enhetligt sätt. I Mallmetodmönstret implementeras samma mallmetod i flera subklasser. Fabriksmetod-mönstret innebär att DrawingEditor delegerar instansieringen av de olika Shape-objekten till en abstrakt Fabriksklass. Genom att tillämpa strategimönstret definierar man variationspunkter (familjer av algoritmer) och kapslar in olika implementationer av dem i separata utbytbara objekt. Macro kapslar in anropet av ett kommando så att man kan separera det från dess konstruktion och exekvera det oberoende av var och när det instansieras. 25

5 Figur 4.2: public class Macro extends ArrayList<Command> implements Command{ public void execute(){ for (Command command : this){ command.execute(); Figur 4.3: Macro 26

6 / Nedan beskrivs 3 klasser som ingär i e t t paket, model. Det finns ytterligare 7 klasser i detta paket. Paketet är i sin tur ett av 5 paket i e t t program som hanterar och visualiserar kalkylark "XL". Paketet model har i denna kontext en abstrakthet som är 0.1 och en i n s t a b i l i t e t som är 0.2. Ett 30 t a l klasser i andra paket har beroenden t i l l model paketet. / abstract class Slot { private String slot; private String text; public abstract double getvalue(environment env); public abstract String tostring(environment env); class ExprSlot extends Slot { ExprSlot(String slot, Expr expr){ super(slot, expr.tostring()); this.expr = double getvalue(environment env) { return String tostring(environment env) { NumberAdjustment adj = new NumberAdjustment(0,1); return adj.left(getvalue(env)+""); public class CommentSlot extends Slot { CommentSlot(String slot, String comment){ super(slot, double getvalue(environment env) { return String tostring(environment env) { String s = gettext(); return s.substring(1); Figur 4.4: Slot 27

7 DrawingEditor create(kind:string): Shape 1 0..* Shape move(dx int,dy int) draw() edit() Framework Supplied by user Circle Square Figur 4.5: Ramverk DrawingEditor / Nedan beskrivs en klass Figure. En Figure är en l i s t a med komponenter av typen Object. Figure har en metod draw() som r i t a r figuren genom att iterera äver l i s t a n med komponenter och ritar dessa. / public class Figure extends ArrayList{ public void draw(){ for (Object object: this){ if (object instanceof Square) drawsquare((square) object) else { drawcircle((circle) object) Figur 4.6: Figure 28

8 Uppgift 4.15 Nedan, i figur 4.7, visas ett exempel på ett designmönster. (a) Vilket designmönster visar exemplet? (b) Rita ett objektdiagram där ett objekt av varje shapetyp ingår. (c) Rita ett sekvensdiagram för scenariet att metoden draw i Drawing anropas för ditt objektdiagram. draw() Drawing 1 draw() Shape 2 Circle Square Group 1 draw() draw() draw() Figur 4.7: Klassdiagram Drawing Uppgift 4.16 Ett klientprogram enligt nedan använder sig av en kommunikationskanal för att skicka och ta emot textsträngar. public class Client { ComChannel mycc = new FastComChannel(); private void send(string text) { mycc.send(text); private String receive() { return mycc.receive(); public void startlogg(db loggdb) { mycc = new LoggedComChannel(loggDB, mycc); public void stoplogg() { if (mycc instanceof LoggedComChannel) { mycc = ((LoggedComChannel)myCC).getOrigCC(); 29

9 public interface ComChannel { public void send(string text); public String receive(); public class FastComChannel implements ComChannel { public void send(string text) { // omissions public String receive() { String text = null; // omissions return text; public class LoggedComChannel implements ComChannel { ComChannel origcc; DB loggdb; public LoggedComChannel(DB db, ComChannel origcc) { this.origcc = origcc; this.loggdb = db; public ComChannel getorigcc() { return origcc; public void send(string text) { loggdb.appendsent(text); origcc.send(text); public String receive() { String text; text = origcc.receive(); loggdb.appendreceived(text); return text; 1. De har gjort sin design sådan att de enkelt kan slå på och av loggning av trafiken. Vad heter det mönster de har använt för att uppnå detta? 2. Rita ett klassdiagram för koden, där du får med all information du känner till. 3. Rita ett sekvensdiagram för följande kodrader : 30

10 myapp.send("jag"); myapp.startlogg(mydb); myapp.send("kan"); myapp.stoplogg(); myapp.send("detta"); Du kan förutsätta att myapp och mydb är deklarerade enligt nedan och sedan skapade och initialiserade på rätt sätt. Application myapp; DB mydb; 31

11 Kapitel 5 Ytterligare designprinciper Uppgift 5.1 Studera javadoc-sidan för java.util.stack. Kritisera designen och gör en bättre. Om du vill titta på implementeringen så finns den på Källkoden för alla paketen finns hos Uppgift 5.2 Denna uppgift innehåller ett antal deluppgifter, där varje deluppgift har ett påstående och en anledning. För varje deluppgift, svara med ett av följande alternativ: A Både påståendet och anledningen är korrekta uttalanden och anledningingen förklarar påståendet på ett korrekt sätt. B Både påståendet och anledningen är korrekta uttalanden, men anledningen förklarar inte påståendet. C Påståendet är ett korrekt uttalande, men anledningen är ett felaktigt uttalande. D Påståendet är felaktigt, men anledningen är ett korrekt uttalande. E Både påståendet och anledningen är felaktiga uttalanden. T1 T2 Påstående Aggregering, sammansättning och delegering är att föredra framför arv om man vill ha flexibel kod som är lätt att underhålla, utvidga och återanvända. Arv bör undvikas om man vill ha kod som är lätt att återanvända. Anledning Det omvända leder till brott mot LSP. Arv kan leda till brott mot LSP 32

12 Kapitel 6 Arkitekturmönster 6.1 MVC Uppgift 6.1 Följande klass agerar både modell, vy och kontroll (control). public class Switch extends JButton implements ActionListener { private boolean on = false; public Switch() { super("off"); addactionlistener(this); public void actionperformed(actionevent e) { on =!on; setlabel(on? "ON" : "OFF"); Gör om designen så att MVC-mönstret används med tre separata klasser med användning av Observer-ramverket. 33

13 a) Lösningen redovisas med Java-kod och skall visa hur och var följande metoder används. public interface Observer { public void update(observable observable, Object object); public abstract class Observable { public void addobserver(observer observer) protected void setchanged() public void notifyobservers() b) Rita ett fullständigt klassdiagram av lösningen där dina tre klasser finns med, samt klassen Observable och gränssnittet Observer. 34

14 Kapitel 7 Paketdesign 7.1 Ramverk Uppgift 7.1 I figur 7.1 nedan visas ett försök att designa ett ramverk (framework) med en användaranpassning i form av två egna specialiseringar av Shape. Designen på ramverket har dock en brist vilken kan avhjälpas genom att applicera mönstret Fabriksmetod (Factory method). a) Vad är det för brist? b) Applicera Fabriksmetod-mönstret genom att komplettera (och ändra om det behövs) klassdiagrammet. c) Implementera (i Java) metoden create! DrawingEditor create(kind:string): Shape 1 0..* Shape move(dx int,dy int) draw() edit() Framework Supplied by user Circle Square Figur 7.1: Ramverk DrawingEditor 35

15 7.2 Designprinciper (CRP, REP, CCP, ADP, SDP, SAP) Uppgift 7.2 Denna uppgift innehåller ett antal deluppgifter, där varje deluppgift har ett påstående och en anledning. För varje deluppgift, svara med ett av följande alternativ: A Både påståendet och anledningen är korrekta uttalanden och anledningingen förklarar påståendet på ett korrekt sätt. B Både påståendet och anledningen är korrekta uttalanden, men anledningen förklarar inte påståendet. C Påståendet är ett korrekt uttalande, men anledningen är ett felaktigt uttalande. D Påståendet är felaktigt, men anledningen är ett korrekt uttalande. E Både påståendet och anledningen är felaktiga uttalanden. Påstående T1 Figur 7.2 nedan visar hur ett cirkulärt beroende mellan två paket har tagits bort T2 Genom att följa REP får användaren av ett paket tillgång till de uppdateringar som ägaren av ett mjukvarupaket tillhandahåller. T3 Vid paketdesign bör man ha i åtanke att det vid återanvändning är användaren av paketet som kommer att underhålla och uppdatera paketet. T4 För att tillämpa SAP (Stable- Abstractions)-principen på modelpaketet i figur 7.3 bör man lägga den abstrakta klassen Slot i ett annat paket. T5 Ett stabilt paket är ett paket som inte så många andra paket har beroende till Anledning DIP kan användas för att ta bort cirkulärt beroende mellan två paket REP innebär att återanvändning av mjukvara sker på ett planerat och strukturerat sätt. Användaren bestämmer själv när en ny utgåva av ett paket ska integreras i det egna systemet. Genom att flytta Slot till ett annat paket blir modelpaketet mer instabilt. Ett paket som inte så många andra paket beror av, kan man ändra i utan att ändringarna får så stor spridning. 36

16 * software «interface» Instruction +execute(memory) Operand +getword(memory) Word Print Address hardware Memory * Word Figur 7.2: Computer 37

17 / Nedan beskrivs 3 klasser som ingär i e t t paket, model. Det finns ytterligare 7 klasser i detta paket. Paketet är i sin tur ett av 5 paket i e t t program som hanterar och visualiserar kalkylark "XL". Paketet model har i denna kontext en abstrakthet som är 0.1 och en i n s t a b i l i t e t som är 0.2. Ett 30 t a l klasser i andra paket har beroenden t i l l model paketet. / abstract class Slot { private String slot; private String text; public abstract double getvalue(environment env); public abstract String tostring(environment env); class ExprSlot extends Slot { ExprSlot(String slot, Expr expr){ super(slot, expr.tostring()); this.expr = double getvalue(environment env) { return String tostring(environment env) { NumberAdjustment adj = new NumberAdjustment(0,1); return adj.left(getvalue(env)+""); public class CommentSlot extends Slot { CommentSlot(String slot, String comment){ super(slot, double getvalue(environment env) { return String tostring(environment env) { String s = gettext(); return s.substring(1); Figur 7.3: Slot 38

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Tentamen i EDAF5 juni 07 Skrivtid: 4-9 Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Skriv

Läs mer

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Lunds Tekniska Högskola Datavetenskap Tentamen EDA061 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Vid bedömningen kommer hänsyn att tas till lösningens kvalitet. UML-diagram

Läs mer

Lösningar till tentamen i EDAF25

Lösningar till tentamen i EDAF25 Lösningar till tentamen i EDAF25 1 juni 2017 Lösning 1 Se figur 1. Figure 1: Tillståndsdiagram espressomaskin Lösning 2 (a) Kompositmönstret (b) Se figur 2 (c) Se figur 3 : Square : Drawing : Group : Circle

Läs mer

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg Lunds Tekniska Högskola Datavetenskap Emelie Engström Tentamen EDAF25 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Helsingborg Tentamen består av en teoridel om totalt 5 poäng

Läs mer

Lösningar till tentamen i EDAF25

Lösningar till tentamen i EDAF25 Lösningar till tentamen i EDAF25 21 aug 2017 Lösning 1 Javaklasser (många varianter finns naturligtvis): class Client { private Invoker invoker; public void newcommand(string cmdtext) { Command cmd; if

Läs mer

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och diskreta strukturer Lunds Tekniska Högskola Datavetenskap Tentamen EDAF10 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och diskreta strukturer Vid bedömningen kommer hänsyn att tas till lösningens kvalitet.

Läs mer

HT1 2015, FÖRELÄSNING 14 (INFÖR TENTAN)

HT1 2015, FÖRELÄSNING 14 (INFÖR TENTAN) Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2015, FÖRELÄSNING 14 (INFÖR TENTAN) Dagens agenda Admin DS-föreläsning nästa torsdag 22/10 kl 13-15 Tentatid och plats Tillåtet

Läs mer

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och diskreta strukturer Lunds Tekniska Högskola Datavetenskap Ulf Asklund, Sven Gestegård obertz Tentamen EDAF10 2014 10 31, 14.00 19.00 Tentamen i Objektorienterad modellering och diskreta strukturer Vid bedömningen kommer hänsyn

Läs mer

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur Dagens program Objektorienterad modellering och diskreta strukturer / design Fler mönster och Paketdesign Lennart Andersson Model View Control Observer Paketdesign Namngivning Reviderad 2011 09 12 2011

Läs mer

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda Objektorienterad modellering och design (EDAF25) Föreläsning 3 UML Objektdiagram Agenda UML objekt och sekvensdiagram Design smells Designprinciper (ALP, SRP, OCP, DIP) (, Composite) Att göra denna och

Läs mer

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda Objektorienterad modellering och design (EDAF25) Föreläsning 3 UML Objektdiagram Agenda UML objekt och sekvensdiagram Design smells Designprinciper (DRY, SRP, OCP, DIP) (, ) Att göra denna och nästa vecka:

Läs mer

Förra föreläsningen. Dagens agenda. Command Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Förra föreläsningen. Dagens agenda. Command Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) Förra föreläsningen Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 3 UML: klassdiagram God praxis (metodik), t ex Refaktorisera Design smells, t ex Bräcklighet

Läs mer

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2014, 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

Läs mer

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN) 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

Läs mer

Föreläsningsbilder EDAF10/EDA061 Ht 2015 HT1 2015, FÖRELÄSNING 3

Föreläsningsbilder EDAF10/EDA061 Ht 2015 HT1 2015, FÖRELÄSNING 3 Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2015, FÖRELÄSNING 3 Förra föreläsningen UML: klassdiagram God praxis (metodik), t ex Refaktorisera Design smells, t ex Bräcklighet

Läs mer

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011) Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 8 Två designmönster, MVC och Observer/Observable. Designrekommendation

Läs mer

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och diskreta strukturer Lunds Tekniska Högskola Datavetenskap Ulf Asklund, Sven Gestegård obertz Tentamen EDAF10 2013 10 24, 8.00 13.00 Tentamen i Objektorienterad modellering och diskreta strukturer Vid bedömningen kommer hänsyn

Läs mer

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg 1. a) Figure 1 2015 06 04 GeometryApp GraphicalApp

Läs mer

Förra föreläsningen. Dagens agenda. Dagens agenda. Föreläsningsbilder EDAF10/EDA Ulf Asklund, Datavetenskap/LTH 1

Förra föreläsningen. Dagens agenda. Dagens agenda. Föreläsningsbilder EDAF10/EDA Ulf Asklund, Datavetenskap/LTH 1 Förra föreläsningen Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2014, FÖRELÄSNING 3 UML: klassdiagram God praxis (metodik), t ex Refaktorisera Design smells, t ex Bräcklighet

Läs mer

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg Lunds Tekniska Högskola Datavetenskap Emelie Engström, Ulf Asklund Tentamen EDAF25 2016 06 03 Tentamen i Objektorienterad modellering och design Helsingborg Lösningar. 1. public class VendingMachine {

Läs mer

Projekt 2 XL. Observer-mönstret

Projekt 2 XL. Observer-mönstret Projekt 2 XL Objektorienterad modellering och diskreta strukturer Inför nästa projekt Lennart Andersson Reviderad 2011 10 24 2011 OMD 2011 F15-1 Schema designmöten OMD 2011 F15-2 Observer-mönstret 2 och

Läs mer

LÖSNINGSFÖRSLAG. Tentamen. Objektorienterad modellering och design. EDA665, 4 poäng

LÖSNINGSFÖRSLAG. Tentamen. Objektorienterad modellering och design. EDA665, 4 poäng LUNDS TEKNISKA HÖGSKOLA (5) Institutionen för datavetenskap LÖSNINGSFÖRSLAG Tentamen Objektorienterad modellering och design EDA665, 4 poäng 2003-06-03, 8.00-3.00 Anvisningar: Skrivningen består av 2 uppgifter.

Läs mer

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Tentamen i EDAF60 29 oktober 2018 Skrivtid: 14-19 Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Skriv inte med färgpenna enda tillåtna färg är svart/blått/blyerts.

Läs mer

Computer projekttid. Objektorienterad modellering och diskreta strukturer / design. Rapporter från verkligheten. EDAF10 i HT2

Computer projekttid. Objektorienterad modellering och diskreta strukturer / design. Rapporter från verkligheten. EDAF10 i HT2 Computer projekttid Objektorienterad modellering och diskreta strukturer / design Inför tentamen Lennart Andersson Reviderad 2012 10 18 2012 2011 2012 timmar antal timmar 2 1 4 4 6 8 8 4 10 10 12 6 14

Läs mer

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg Lunds Tekniska Högskola Datavetenskap Roger Henriksson, Mathias Haage, Emelie Engström Tentamen EDAF25 2015-10-28 Tentamen i Objektorienterad modellering och design Helsingborg 1. a. Klassdiagram Lösningar

Läs mer

HT2 2015, FÖRELÄSNING 15 (XL-PROJEKTET)

HT2 2015, FÖRELÄSNING 15 (XL-PROJEKTET) Objektorienterad modellering och diskreta strukturer (EDAF10) HT2 2015, FÖRELÄSNING 15 (XL-PROJEKTET) Dagens agenda Introduktion till projekt 2 ( XL ) EDA061 Repetition MVC-mönstret (Observer-mönstret)

Läs mer

Kursombud. Objektorienterad modellering och diskreta strukturer / design. Agile? Designprinciper EDAF10 EDA061. Lennart Andersson. Grupper för projekt

Kursombud. Objektorienterad modellering och diskreta strukturer / design. Agile? Designprinciper EDAF10 EDA061. Lennart Andersson. Grupper för projekt Kursombud Objektorienterad modellering och diskreta strukturer / design Designprinciper Lennart Andersson EDAF10 EDA061 Reviderad 2010 09 02 2010 OMD 2010 F2-1 Att göra Agile? OMD 2010 F2-2 Grupper för

Läs mer

Designmönster. Kapitel Kommandomönstret

Designmönster. Kapitel Kommandomönstret Kapitel 4 Designmönster 4.1 Kommandomönstret Uppgift 4.1 Vi har ett interface Drawing (se nedan), och vill kunna rita olika slags figurer i ett Drawing-objekt. interface Drawing { void clear(); void useforegroundcolor();

Läs mer

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2014, FÖRELÄSNING 5 Datavetenskap/LTH EDAF10/EDA061 HT2014 Ulf Asklund Förra föreläsningen Designmönster Strategy Singleton Null

Läs mer

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Lunds Tekniska Högskola Datavetenskap Ulf Asklund Tentamen EDA061 2016 06 03, 14:00 18:00 Tentamen i Objektorienterad modellering och design Tentamen består av en teoridel om totalt 5 poäng och en problemdel

Läs mer

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg Lunds Tekniska Högskola Datavetenskap Emelie Engström, Ulf Asklund Tentamen EDAF25 2016 06 03, 14:00 19:00 Tentamen i Objektorienterad modellering och design Helsingborg Tentamen består av en teoridel

Läs mer

HT1 2013, FÖRELÄSNING 5

HT1 2013, FÖRELÄSNING 5 Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 5 Förra föreläsningen Projektgrupper klara?! Redovisningstid inbokad? Designmönster Strategy (exempel) Singleton

Läs mer

HT1 2015, FÖRELÄSNING

HT1 2015, FÖRELÄSNING Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2015, FÖRELÄSNING 2 Förra föreläsningen Kursens upplägg och tidsbudget Mål & Syfte med kursen Substantivmetoden Designprinciper

Läs mer

Övningsuppgifter i Objektorienterad modellering och design (OMD) Helsingborg EDAF25

Övningsuppgifter i Objektorienterad modellering och design (OMD) Helsingborg EDAF25 Övningsuppgifter i Objektorienterad modellering och design (OMD) Helsingborg EDAF25 19 december 2017 Innehåll 1 Objektorienterad modellering 2 2 Design smells 6 3 Grundläggande designprinciper (SRP, OCP,

Läs mer

Laboration 2: Designmönster

Laboration 2: Designmönster Laboration 2: Designmönster Bakgrund Det har visat sig väldigt svårt att beskriva hur ett system, eller en dellösning, skall konstrueras på ett bra sätt. Det har överhuvud taget varit svårt att veta om

Läs mer

Laboration 2: Designmönster

Laboration 2: Designmönster Laboration 2: Designmönster Bakgrund Det har visat sig väldigt svårt att beskriva hur ett system, eller en dellösning, skall konstrueras på ett bra sätt. Det har överhuvud taget varit svårt att veta om

Läs mer

Information. Computer

Information. Computer 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:

Läs mer

LÖSNINGSFÖRSLAG

LÖSNINGSFÖRSLAG LÖSNINGSFÖRSLAG - 100406 Uppgift 1. a) Objekten som tillhör en icke-muterbar klass är oförändliga, dvs de behåller under hela sin livstid det tillstånd som de fick när de skapades. Icke-muterbara objekt

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod

Läs mer

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal Tentamen DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl 14.00 17.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna

Läs mer

Tentamen i Objektorienterad modellering och design (OMD) Helsingborg

Tentamen i Objektorienterad modellering och design (OMD) Helsingborg Tentamen i Objektorienterad modellering och design (OMD) Helsingborg EDAF25 3 juni 219, 8 13 Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Skriv tydligt

Läs mer

DAT043 - Föreläsning 7

DAT043 - Föreläsning 7 DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar

Läs mer

HT1 2015, FÖRELÄSNING

HT1 2015, FÖRELÄSNING Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2015, FÖRELÄSNING 5 Förra föreläsningen Designmönster Strategy Singleton Null object Facade Decorator ISP Interface Segregation

Läs mer

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

Seminarierna Instruktioner. Övningarna Viktiga relationer

Seminarierna Instruktioner. Övningarna Viktiga relationer Objektorienterad modellering och design (EDAF25) Föreläsning 3 Seminarierna Instruktioner Agenda UML objekt och sekvensdiagram Design smells Designprinciper (DRY, SRP, OCP, DIP) Att göra denna och nästa

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla

Läs mer

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (11) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt namn och personnummer på varje blad

Läs mer

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015 Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora

Läs mer

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design Integritetsprincipen Objektorienterad modellering och diskreta strukturer / design Designmönster och fallstudier Integritetsprincipen Gör attribut, metoder och klasser så hemliga de går. Lämna inte ut

Läs mer

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal Tentamen DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl 10.00 13.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna

Läs mer

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem). 1 (11) TENTAMEN: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?

Läs mer

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Laboration 1: Figurer i hierarki

Laboration 1: Figurer i hierarki Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras

Läs mer

Lösningsförslag till tentamen

Lösningsförslag till tentamen till tentamen 1 (5) Kurs Objektorienterad programmering Kursbeteckning DAT042 Program D2, TKDAT Läsår 2012/2013, lp 1 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift

Läs mer

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal Tentamen DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl 9.00 12.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna kan

Läs mer

LULEÅ TEKNISKA UNIVERSITET

LULEÅ TEKNISKA UNIVERSITET LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, Andrey Kruglyak, 491000 Resultatet offentliggörs senast: 2010-04-09. Tillåtna

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015 Objektorienterad Programkonstruktion Föreläsning 7 24 nov 2015 Observer (GoF) Man definierar ett "ett-till-många"-förhållande mellan objekt så att när ett objekt byter tillstånd så uppdateras alla beroende

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut

Läs mer

HT1 2013, FÖRELÄSNING 6

HT1 2013, FÖRELÄSNING 6 Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 6 Förra föreläsningen Fråga från i torsdags: Decorator vs sub class Designmönster Model-View-Control Observer

Läs mer

Förra föreläsningen. Alternativ kurslitteratur. Dagens agenda Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Förra föreläsningen. Alternativ kurslitteratur. Dagens agenda Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) Förra föreläsningen Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 6 Fråga från i torsdags: Decorator vs sub class Designmönster Model-View-Control Observer

Läs mer

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning: Lös koppling mellan programdelar (klasser) eftersträvas ofta i objektorienterad programmering. Om klassen A beror av klassen B, hur kan man lösa upp detta beroende och åstadkomma en lösare koppling mellan

Läs mer

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund Föreläsningsmaterial (Arv) Skrivet av Andreas Lund Inledning Arv är ett begrepp som är tätt förknippat med objektorientering. Principerna bakom arv är grundade i högst vardagliga relationer mellan olika

Läs mer

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012 DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012 Innehåll Testning med JUnit Refactoring Några designprinciper JUnit Ramverk i Java för testning av Java-klasser Utvecklat av Gamma

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (8) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt namn, personnummer och e-postadress på försättsbladet. Skriv rent dina svar.

Läs mer

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt. Tentamen 101213 - LÖSNINGSFÖRSLAG Uppgift 1. a) Ger utskriften c( ) in D b) Ger utskriften true c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt. d) Ger utskriften b( )

Läs mer

Konstruktion av klasser med klasser

Konstruktion av klasser med klasser Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut

Läs mer

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av

Läs mer

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 interface, motivation och bakgrund Antag att vi gör en generell listklass: public class List { protected static class ListNode { public

Läs mer

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal Tentamen DD2385 Programutvecklingsteknik vt 2009 Fredagen den 5 juni 2009 kl 10.00 13.00 Inga hjälpmedel utom penna, sudd och linjal Tentans del I omfattar 22 poäng. Del II har också 22 poäng Preliminära

Läs mer

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

Designmönster/Design patterns

Designmönster/Design patterns Johan Eliasson Design patterns Designmönster/Design patterns Vad är det? Beprövade lösningar till återkommande programmeringsproblem Plattformsoberoende Beskrivs ofta med hjälp av UML Baseras på en bok

Läs mer

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Objektorienterad Programkonstruktion. Föreläsning jan 2016 Objektorienterad Programkonstruktion Föreläsning 13 19 jan 2016 Tentamen Del I, E del Flervalsfrågor 20/25 krävs för godkänt, ger betyg E Upp till 7 möjliga bonuspoäng Del II, Högrebetygsdel Problemfrågor

Läs mer

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 Tentamen 2016 03 18, kl. 14.00 17.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del I

Läs mer

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass). 3 Arv och gränssnitt 3.1 Vad innebär arv? Ett objektorienterat språk bygger på att programmeraren ges möjligheten att modellera verkligheten med hjälp av objekt. Objekt låter sig definieras i form av klasser.

Läs mer

12 Metaprogrammering i Java

12 Metaprogrammering i Java 12 Metaprogrammering i Java Reflektion, introspektion, metaprogrammering Reflektion i Java Klassladdning Tillämpningar (Litteratur: se sista sidan) Flexibilitet Utbyggbarhet Plugginbarhet Vad handlar det

Läs mer

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och Innehåll u OOP snabbintroduktion u Datatyper u Uttryck u Satser u Arv (intro) u Programvaruutveckling och programmering u Klassdesign och metodik (UML, CRC) u Arv, polymorfi och dynamisk bindning u Fält

Läs mer

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur Dagens program Objektorienterad modellering och diskreta strukturer / design Fler mönster och Paketdesign Lennart Andersson Model View Control Observer Paketdesign Namngivning Reviderad 2012 09 17 2012

Läs mer

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk TDA550 - Objektorienterad programvaruutveckling, fk Övning 5. Denna vecka ska vi titta på designmönstren Singleton, State, Observer, Composite och Decorator, samt gränssnittet Comparator. Uppgift 1 Syftet

Läs mer

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 UML Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 UML Unified Modelling Language Grafiskt modelleringsspråk för att beskriva olika aspekter av objektorienterade system. Vi kommer

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Föreläsning 15: Repetition DVGA02

Föreläsning 15: Repetition DVGA02 Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras

Läs mer

Nej! Nej Nej Nej Nej Nej Nej Nej!

Nej! Nej Nej Nej Nej Nej Nej Nej! LongWord Objektorienterad modellering och diskreta strukturer / design Inför nästa projekt Lennart Andersson Reviderad 2010 09 16 2010 I vilken klass skall man beräkna summan av de värden som finns i två

Läs mer

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa 2203$( Föreläsning ii - Mer om Java bla this och konstruktorer Av Björn Eiderbäck Email: bjorne@nada.kth.se Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: 7906277 previous next Exempel: lampa Light1 #

Läs mer

SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. SI-pass 4 Johan Brook och Jesper Persson 25 september 2012 1. Sant eller falskt? Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. Interfaces i Java kan innehålla privata

Läs mer

Objektorienterad programutveckling, fk

Objektorienterad programutveckling, fk till tentamen P r e l i m i n ä r 1 (7) Kurs Objektorienterad programutveckling, fk Program DAI2 Läsår 2017/2018, lp 2 Examinator Uno Holmer Uppgift 1 (7 p) Abstrahera ut aktiviteten i ett gränssnitt Trainee

Läs mer

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).

Läs mer

Design Patterns. En kort introduktion

Design Patterns. En kort introduktion Design Patterns En kort introduktion Vad är ett designmönster? Ett designmönster är en (namngiven) lösning på ett i en viss omgivning ofta återkommande problem. I mjukvaru-världen: En uppsättning klasser

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,

Läs mer