Tentamen i Objektorienterad modellering och design Helsingborg

Relevanta dokument
Tentamen i Objektorienterad modellering och design Helsingborg

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

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Helsingborg

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

Tentamen i Objektorienterad modellering och diskreta strukturer

Lösningar till tentamen i EDAF25

Tentamen i Objektorienterad modellering och diskreta strukturer

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

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

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design. Vad är Objektorienterad modellering?

Tentamen i Objektorienterad modellering och diskreta strukturer

Föreläsning 13 Innehåll

Lösningar till tentamen i EDAF25

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Grafer. Objektorienterad modellering och design (EDAF25) Föreläsning 2. Grafer. Grafer Traversering Djupet först. Agenda. Grafer

Föreläsning 15: Repetition DVGA02

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:

HT1 2015, FÖRELÄSNING

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

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

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

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

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

Information. Computer

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Föreläsning 3. Stack

Tentamen i Objektorienterad modellering och design Helsingborg

Seminarierna Instruktioner. Övningarna Viktiga relationer

Objektorienterad Programmering (TDDC77)

Designmönster. Kapitel Kommandomönstret

Mål Förklaring av termer

4.7 Observatörsmönstret

Mål Förklaring av termer

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

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Föreläsning 7. Träd och binära sökträd

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

Tentamen i Objektorienterad modellering och design (OMD) Helsingborg

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

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

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

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

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

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

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

10. Mängder och språk

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Institutionen för TENTAMEN CTH HT-14 Datavetenskap TDA550 DAG: TID: 14:00 18:00

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

DAT043 Objektorienterad Programmering

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Konstruktion av klasser med klasser

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

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Lösningsförslag. 1 Lösningsförslag. Uppgift 1

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 10. ADT:er och datastrukturer

Tentamen EDA698 Realtidssystem (Helsingborg)

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Projekt 2 XL. Observer-mönstret

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

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

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

Föreläsning 2. Länkad lista och iterator

Transkript:

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 Uttryck + size():int 1 huvud Atom {abstract Elista + size():int 1 svans Tal Sträng Empty NonEmpty -value:int -value:string b. Null Object - mönstret c. public interface Uttryck { public int s i z e ( ) ; public abstract class Atom implements Uttryck { return 1 ; public interface E l i s t a extends Utryck { public class Empty { return 0 ; public class NonEmpty { Uttryck huvud ; E l i s t a svans ; return huvud. s i z e ( ) + svans. s i z e ( ) ; 2. a. public class C i r c l e { private Point c e n t r e ; private int r a d i u s ; public void move ( int dx, int dy ) { c e n t r e. move ( dx, dy ) ; public class Point { private int x, y ; public void move ( int dx, int dy ) { x += dx ; y += dy ; 1

public class Drawing { private L i s t <C i r c l e > c i r c l e s ; private void movecircle ( C i r c l e ac, int dx, int dy ) { ac. move ( dx, dy ) ; b. (a) Bryter inte mot Lokalitetsprincipen, dvs operationer implementeras där operanderna är lättast tillgängliga. (b) Bättre integritet. Klassen Point och klassen Circle behöver inte ge ut (privata) attribut. (c) Drawing mindre beroende på Circle och Point (Drawing inte alls beroende av Point) (d) Möjliggör att göra Point till ett gränssnitt och därmed kunna ha många olika implementeringar av Point, t ex Point2D och Point3D. 3. a. Klassdiagram public interface Shape { public move ( int dx, int dy ) ; public p a i n t ( Graphics gr ) ; public abstract class SimpleShape implements Shape { private int x, y ; x += dx ; y += dy ; public class Square extends SimpleShape { private int s i d e ; public Square ( int x, int y, int s i d e ) { super ( x, y ) ; this. s i d e = s i d e ; public p a i n t ( Graphics gr ) { gr. drawrectangle ( x, y, s i d e, s i d e ) ; public class Figure extends ArrayList <Shape> { for ( Shape shape : this ) { 2

shape. move ( dx, dy ) ; Circle är analog till Square. b. public class Figure implements Shape { private L i s t <Shape> l i s t = new ArrayList <Shape >(); for ( Shape shape : l i s t ) { shape. move ( dx, dy ) ; public add ( Shape newshape ) { l i s t. add ( newshape ) ; public p a i n t ( Graphics gr ) { for ( Shape shape : l i s t ) { shape. p a i n t ( gr ) ; c. Sekvensdiagram f1:figure s1:square c1:circle gr:graphicsimpl drawrectangle(10,10,30,30) drawcircle(40,40,15) d. public class Drawing ( ) { ShapeFactory sf = new ShapeFactory ( ) ; Figure f 1 = sf. c r e a t e ( Figure ) ; Shape s1 = sf. c r e a t e ( Square 10 10 30 ) ; Shape c1 = sf. c r e a t e ( C i r c l e 40 40 15 ) ; f 1. add ( s1 ) ; f 1. add ( c1 ) ; f 1. p a i n t ( gr ) ; public class ShapeFactory { public Shape c r e a t e ( S t r i n g s t r ) { S t r i n g [ ] tokens = s t r. s p l i t ( \\ s ) ; i f ( tokens [ 0 ]. e q u a l s ( Figure ) ) return new Figure ( ) ; else i f ( tokens [ 0 ]. e q u a l s ( C i r c l e ) ) { int x = I n t e g e r. p a r s e I n t ( tokens [ 1 ] ) ; int y = I n t e g e r. p a r s e I n t ( tokens [ 2 ] ) ; int r = I n t e g e r. p a r s e I n t ( tokens [ 3 ] ) ; return new C i r c l e ( x, y, r ) ; else i f ( tokens [ 0 ]. e q u a l s ( Square ) ) { int x = I n t e g e r. p a r s e I n t ( tokens [ 1 ] ) ; int y = I n t e g e r. p a r s e I n t ( tokens [ 2 ] ) ; int s = I n t e g e r. p a r s e I n t ( tokens [ 3 ] ) ; 3

else return new Square ( x, y, s ) ; return null ; 4. a. UML-diagram expr sheet Interface + value(sheet):double Sheet +value(int):double -address:int +value(sheet):double b. (a) Alla klasser i cirkeln blir beroende av varandra. Alla klasser instabila. (b) Kan inte ha separatkompilering. Om någon av klasserna ändras så måste alla kompileras om och testas på nytt. c. UML-diagram expr Interface + value(env):double Env + value(int):double sheet -address:int +value(env):double Sheet +value(int):double I paketet expr public interface { public double value ( Env environment ) ; public interface Env { public double value ( int a d d r e s s ) ; public class implements { private int a d d r e s s ; public double value ( Env environment ) { return environment. value ( a d d r e s s ) 4

i paketet sheet finns public class Sheet implements Env { private [ ] array ; public double value ( int a d d r e s s ) { return array [ a d d r e s s ]. value ( this ) 5. Vi vill beräkna det maximala flödet i ett nätverk. Låt det aktuella vägnätet representeras av en riktad graf där noderna representerar korsningar och bågarna vägar. Vägar som inte är enkelriktade representeras med en båge i vardera riktning. Bågarnas kapacitet motsvarar antal fordon per tidsenhet som maximalt kan passera. Låt infarten vara källnod och utfarten vara sänka. 5