Objektorienterad Programkonstruktion. Föreläsning jan 2016

Relevanta dokument
Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Kopiering av objekt i Java

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Generisk klass med typparameter Inre klass - ListIterator

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Föreläsning 3-4 Innehåll

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Java, klasser, objekt (Skansholm: Kapitel 2)

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

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

Objektorienterad programmering i Java

Föreläsning 3: Booleans, if, switch

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

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

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

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

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

2D1342 Programkonstruktion för F1, ht 2006

2D1339 Programkonstruktion för F1, ht 2003

DAT043 Objektorienterad Programmering

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

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

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Tentamen OOP

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

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

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

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

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

1 Comparator & Comparable

TENTAMEN OOP

Objektorienterad programmering D2

Laboration 13, Arrayer och objekt

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

Grundläggande programmering med C# 7,5 högskolepoäng

Laboration 1 - Grunderna för OOP i Java

Objektorientering: Lagring, räckvidd och livstid

Classes och Interfaces, Objects och References, Initialization

Typkonvertering. Java versus C

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

OOP Objekt-orienterad programmering

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

Objektorienterad Programkonstruktion. Föreläsning dec 2015

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

SMD 134 Objektorienterad programmering

DD1342 Programkonstruktion för F1,

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

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

Programmering för språkteknologer II, HT2011. Rum

Tentamen i Introduktion till programmering

Att skriva till och läsa från terminalfönstret

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Polymorfi. Objektorienterad och komponentbaserad programmering

Arrayer. results

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

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

Tentamen FYTA11 Javaprogrammering

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Programmering för språkteknologer II, HT2014. Rum

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

Transkript:

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 25p max 5p ger D 10p ger C 15p ger B 20p ger A Komplettering 18-19p på E-delen ger FX, kan kompletteras till E FX kan även kompletteras till D, C, B eller A om tillräckliga resultat finns på del II.

Exempelfrågor Del I 4. För varje påstående om Exceptions i Java, ange om det är sant eller falskt. 4 korrekta svar ger 2p, 3 korrekta svar ger 1p, 2 eller färre korrekta svar ger 0 p (2 p) a) Kod som anropar en metod som kan kasta en eller flera Exception måste alltid inneslutas i en try/catch -struktur. b) En Exception är ett objekt som kan innehålla information om varifrån det kastades och varför. c) Man är alltid helt garanterad att kod i ett finally-block kommer att exekveras. d) Alla typer av Exceptions som man kan kasta finns redan definierade i Javas standard-api.

Exempelfrågor Del I Punkterna a) till h) nedan beskriver olika designmönster. För varje beskrivning, ange namnet på det mönster som bäst passar beskrivningen. Välj namn från listan nedan. Notera att det finns fler namn än beskrivningar - alltså behöver inte alla namn användas. Varje rätt svar ger 1 poäng; totalt kan denna uppgift alltså ge 8 poäng. Singleton MVC Composite Proxy Adapter Flyweight Lock Observer Factory Builder Prototype Facade a) Man skapar nya objekt O genom att skapa kopior av ett objekt A som redan existerar. (1 p) b) Man skapar nya objekt O med anrop av en metod B() som beslutar vilken typ av objekt som skall returneras. (1 p) c) Man skapar nya objekt O genom att först skapa ett objekt A. Objektet A kan man sedan modifiera och bygga på tills man är nöjd. Till sist låter man A returnera objektet O. (1 p). osv.

Exempelfrågor Del I Kodsnuttarna a) till h) nedan beskriver olika designmönster. För varje beskrivning, ange namnet på det mönster som bäst passar beskrivningen. Välj namn från listan nedan. Notera att det finns fler namn än beskrivningar - alltså behöver inte alla namn användas. Varje rätt svar ger 1 poäng; totalt kan denna uppgift alltså ge 8 poäng. Singleton MVC Composite Proxy Adapter Flyweight Lock Observer Factory Builder Prototype Facade public class D{ public static GenericType getobject(int a){ if(decisionfunction(a)){ return new SpecificType1(); }else{ return new SpecificType2(); } } }

Exempelfrågor Del I För objekt av typen B, ange vilka av följande fältoch metodanrop som är tillåtna. Antag att alla fält är initialiserade. 0.5 p för varje korrekt svar. (4 p) a) myc.myflt = 0.4; b) mycint.dostuff(2); c) mycint.dostuff(); d) mydbl = 2.1; e) myc.docstuff(); f) super.doprivstuff(); g) myc.dostuff((int)myc.mydbl); h) super.myint = (int)myflt;

Exempelfrågor Del I Nedan följer 5 kodexempel i Java. För varje kodexempel, ange om koden går att kompilera. Eventuella fel kan förväntas finnas inom den listade koden, dvs du kan anta att alla importpåståenden är korrekta, och att alla anrop av externa metoder fungerar som man förväntar sig. Varje korrekt analyserad programkod ger 1p. (5 p) public class B6{ private int a = 1; public static void main(string[] args){ System.out.println(a); } }

Exempelfrågor Del II 9. Förklara hur man kan använda Observer i MVC (2 p) 10. Förklara skillnaden mellan ett vanligt Observer-mönster och en publisher/subscriber. Vilka fördelar har det senare? (3p) 11. XML kan ibland vara ett bra format för att lagra data, men inte alltid. Förklara när det är bra, och när det passar dåligt, och ge exempel för båda fallen (2 p) 7. a) Förklara begreppet polymorfism, och på ge exempel på hur polymorfism kan underlätta för programmerare. (2 p) b) Hur hanterar Java polymorfism? Vilka är tillåtna typer för att deklarera resp. instansiera variabler med? Vilka metodanrop är tillåtna? Hur/när avgörs vilken metod som ska anropas? (3 p)

Exempelfrågor Del II Antag att du har fått i uppgift att skriva ett program för att simulera partikelflöden i rörsystem. I programmet ska man kunna rita upp sina rörsystem, bestående av sammansättningar av färdiga rördelar som användaren kan välja från ett bibliotek. Man ska kunna modifera de färdiga rördelarnas sammansättning och egenskaper, och kunna spara både rördelar, delsystem och kompletta rörsystem till fil för att återanvända senare. Du har hittat en uppsättning förenklade differensekvationer för beräkning av partiklarnas rörelser i diskret tid, som du tänker använda tills din kollega har härlett något bättre. I din förenklade modell kan varje partikel uppdateras oberoende av de andra i varje steg, men man måste ha med väldigt många partiklar för att få realistiska resultat. Efter att en simulering har körts ska man dels kunna spela upp en animering av flödet, och dels kunna visualisera olika statistiska mått, som t.ex lokala partikeltätheter. Beskriv en bra struktur för programmet. Förklara vilka designmönster som används, i grova drag hur de implementeras (vilken information finns var, hur kommunicerar programmets olika delar med varandra, hur styrs olika programflöden, osv). Motivera varför din lösning är bra! För full poäng skall hänsysn ha tagits till alla delar som beskrivs ovan. Du får använda UML eller (pseudo-)kod i ditt svar om du tycker att det förenklar presentationen, men det är inte ett krav. (10 p)

Kloning Att skapa en exakt kopia av ett objekt. En kopia kommer att ha alla fält satta till samma värden som originalet Om A är en kopia av B, gäller oftast att: (A == B) = false A.equals(B) = true I Java finns metoden clone() definierad i klassen Object, och är alltså tillgänglig i alla klasser men I Object är metoden definierad så att den kastar en CloneNotSupportedException om inte den aktuella klassen implementerar gränssnittet Cloneable, och definierar en egen publik clone()-metod

Kloning Alla klasser anropar super.clone() i sin egen clone()- metod, så att clone() i Object anropas i slutändan, ex: public Object clone() throws { return super.clone(); } Detta kommer att returnera en exakt kopia av det aktuella objektet Den kopia som skapas här är dock en s.k. grund kopia (eng: shallow copy)

Kloning En grund kopia kopierar alla fält exakt. Detta fungerar bra för primitiva datatyper En djup kopia (deep copy) gör dessutom kopior av objekt som refereras till Detta måste man implementera själv i sin clone()

Kloning AClass Var1: int Var2: OtherClass Metod1 Metod2 Metod3 Metod4 OtherClass Var3: String Metod1

Grund kopia Master: AClass Var1 = 10 Var2 = OtherA OtherA:OtherClass Fält3 = "Hej"

Grund kopia Master: AClass Var1 = 10 Var2 = OtherA Copy: AClass Var1 = 10 Var2 = OtherA OtherA:OtherClass Var3 = "Hej"

Djup kopia Master: AClass Var1 = 10 Var2 = OtherA Copy: AClass Var1 = 10 Var2 = OtherB OtherA:OtherClass Var3 = "Hej" OtherB:OtherClass Var3 = "Hej"

Djupa kopior När man gör djupa kopior lägger man extra kod efter anropet till super.clone() public Object clone() throws...{ MyObject copy = (MyObject) super.clone(); copy.somefield = somefield.clone(); return copy; } OBS: Vissa fält bör kanske klonas, medan andra fortfarande bör vara referenser till samma objekt som i originalet. Det senare gäller t.ex för referenser till singletons.

Prototype (GoF) Creational Pattern Man börjar med att skapa ett objekt som får vara prototyp, och sedan klonar man detta när man vill skapa nya objekt. Kan användas för att förse fält med startvärden som kan ändras under programmets körning Om det är beräkningsmässigt tungt att räkna ut startvärdena, eller initiera de objekt som skall innehållas, kan man göra detta en gång för alla i prototypen, för att sedan kopiera resultaten till de nyskapade objekten Kan med fördel kombineras med mönstret Factory

Prototypexempel Skapa nya textobjekt (t.ex textrutor i ett grafikprogram, meddelande-delen i ett e-mail, eller inmatningsrutor till en ordbehandlare), som ska förses med värden för font, teckenkodning, stavningskontrollsspråk. Dessa värden skall kunna ändras medan programmet körs Skapa nya objekt i en spelmiljö utifrån en design som spelaren kan välja själv Genetisk programmering eller partikelfilter, där man vill skapa många objekt med de egenskaper som man just nu tror är de bästa

Flyweight (GoF) Structural Pattern Ger ett sätt att minska mängden resurser (minne) som behövs av varje instans av en klass Så mycket som möjligt av informationen i objektet lagras utanför objektet, på en plats som delas med andra objekt Exempel: ett tecken i en ordbehandlartext innehåller ett fält som säger vilket tecken det ska vara, några fält med information om fontstorlek, huruvuda det är kursivt, fetstil eller dyl. Själva den grafiska informationen av hur tecknet skall se ut kan dock delas med alla andra objekt som representerar samma tecken.