Lösningsförslag till tentamen

Relevanta dokument
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ösningsförslag till tentamen

Objektorienterad programutveckling, fk

Lösningsförslag till tentamen

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje uppgift på ett nytt blad (skriv inga lösningar i tesen!).

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

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

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

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

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

Språkkonventioner och redigering av tal.

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

Objektorienterad Programmering (TDDC77)

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

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

TDDD78 Viktiga begrepp, del 2

Objektorienterad programutveckling, fk

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

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

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

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

DAT043 Objektorienterad Programmering

Lösningar till tentamen i EDAF25

Lösningar för tenta 2 DAT043,

Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.

Exempel på användning av arv: Geometriska figurer

Lösningar till tentamen i EDAF25

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

Övning vecka 4. Denna vecka ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.

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

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

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

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

CHALMERS TENTAMEN. 2018/2019, lp 1 DAT050. Uno Holmer

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

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

TENTAMEN OOP

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Objektorienterad programvaruutveckling, fk, TDA550. Exempeltentamen

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

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

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Classes och Interfaces, Objects och References, Initialization

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

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Fördjupad Java. Undantagshantering. Fel

Kap J 7-1 Mer om arv. (superklass) (subklass)

Föreläsning 13 Innehåll

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

Föreläsning 9 Innehåll

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

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

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

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

Föreläsning 3. Stack

Institutionen för TENTAMEN CTH HT-13 Datavetenskap TDA550 DAG: TID: 8:30 12:30

Tentamen för TTIT71 Programmering kl Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

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

Repetition av OOP- och Javabegrepp

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

OOP Objekt-orienterad programmering

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

12 Metaprogrammering i Java

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

Repetition av OOP- och Javabegrepp

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

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

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

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

Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011

TDDC76 - Programmering och Datastrukturer

Tentamen i Objektorienterad modellering och design Helsingborg

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

Tentamen. Lösningsförslag

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

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Polymorfi. Objektorienterad och komponentbaserad programmering

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

Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

CHALMERS TENTAMEN. 2012/2013, lp 1 DAT042. Uno Holmer. Java API (utdelas av skrivningsvakten) Erland Holmström tel besöker tentamen

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

Institutionen för TENTAMEN CTH HT-17 Datavetenskap TDA550

Föreläsning 3. Stack

Transkript:

till tentamen 1 (6) Kurs Objektorienterad programmering Program D2 Läsår 2010/2011, lp 1 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift 2 (11 p) public class CounterButton extends JButton implements ActionListener private int countervalue; private Actor actor; public CounterButton(int countervalue,actor actor) this.countervalue = countervalue; this.actor = actor; settext("" + countervalue); addactionlistener(this); public void actionperformed(actionevent e) --countervalue; if ( countervalue == 0 ) settext("--"); setenabled(false); // alt. removeactionlistener(this); else settext("" + countervalue); actor.act(); Uppgift 3 (17 p) a) (7 p) 1-3: obj har statisk typ Base och dynamisk typ Sub 1: Sub.f1 f1 definieras om i Sub 2: Base.f2++Sub.f2 f2 definieras om i Sub och den börjar med att anropa Base.f2 explicit 3: Base.f3 f3 definieras ej om i Sub utan ärvs från Base 4-7: obj2 har statisk och dynamisk typ Sub. Subklassens metoder anropas utom i fall 6 där f3 ärvs från basklassen. 4: Sub.f1 5: Base.f2++Sub.f2 6: Base.f3 7: Sub.f4

b) (10 p) 2 (6) Int obj1 = new Int(); Gränssnitt är abstrakta klasser och sådana får ej instansieras. Base obj2 = new Base(); Sub1 obj3 = new Sub1(); Sub2 obj4 = new Sub2(); Base är abstrakt. Se nedan. Korrekt. Klassen Sub1 kan ej kompileras eftersom den abstrakta metoden h ej är implementerad vare sig i Base eller i Sub1. Notera att h ej måste definieras i Base. Eftersom klassen är abstrakt kan definitionen av h skjutas upp till någon subklass längre ner i hierarkin. Alla mellanliggande klasser blir då abstrakta. Uppgift 4 (2+6+2 p) a) Om man definierar equals enligt förslaget så blir den inte transitiv. Om avståndet mellan p och q är inom toleransgränsen, och även mellan q och r, så ger ju inte det någon information om avståndet mellan p och r, d.v.s. p.equals(q) och q.equals(r) kan båda returnera sant, men p.equals(r) kan returnera sant eller falskt, beroende på de tre punkternas inbördes orientering i planet. Om equals är transitiv måste p.equals(r) returnera sant på ovanstående premisser. b) public final boolean equals(object other) if ( this == other ) return true; if ( other instanceof Prenumerant ) Prenumerant o = (Prenumerant)other; return (name == null? o.name == null) : name.equals(o.name) && (address == null? o.address == null) : address.equals(o.address); return false; c) Observera att hashcode bara får baseras på de instansvariabler som används i equals. Hashvärdet skall alltså inte bero av telefonnumret. public int hashcode() int code = 123; code = 37*code + name.hashcode(); code = 37*code + address.hashcode(); return code;

3 (6) Uppgift 5 (3+6+1 p) a) Observera att Volume bör implementera interfacet Shape, inte ärva från Point. cd: Solution << interface >> Shape The Shape's position << abstract >> Point #x:double #y:double -height:double Volume -width:double -height:double Rectangle -xradius :double -yradius :double Ellipse +getvolume():double

b) public class Volume implements Shape private Shape obj; // The wrapped object private double height; public Volume(Shape obj,double height) this.obj = obj; this.height = height; 4 (6) // Delegate to the wrapped object public double getwidth() return obj.getwidth(); public double getlength() return obj.getlength(); public double getarea() return obj.getarea(); public void draw() obj.draw(); public void erase() obj.draw(); public void move(double dx,double dy) obj.move(dx,dy); public void resize(double factor) height *= factor; obj.resize(factor); // This is the actual decoration code public double getvolume() return obj.getarea()*height; c) A cube with side length 10, with a corner positioned in origo: Volume cube = new Volume(new Rectangle(0,0,10,10),10); System.out.println(cube.getVolume());

Uppgift 6 (12 p) 5 (6) public class ResultProcessor private BufferedReader resultsreader; // Reads the text file // containing the exam results private Map<String,ExamGrade> examresults; // Maps cid:s to exam results private String coursecode; // Obtained from the results // file name private ObjectInputStream databasestream; // The "LADOK" database public ResultProcessor(String databasefile,string resultsfile) try databasestream = new ObjectInputStream( new FileInputStream(databaseFile)); resultsreader = new BufferedReader( new FileReader(resultsFile)); coursecode = getnamebase(resultsfile); processfiles(); catch (IOException e) e.printstacktrace(); private void processfiles() throws IOException examresults = makeresultstable(); try StudentRecord student = (StudentRecord)databaseStream.readObject(); while ( student!= null ) if ( student.isregistred(coursecode) && examresults.containskey(student.getcid())) ExamGrade eg = examresults.get(student.getcid()); MailServer server = MailServer.getInstance(); server.sendmail(student.getcontact().getemail(), "Exam result " + coursecode, "Hello " + student.getname() + "!\nyour marks: " + eg.getmarks() + ", grade: " + eg.getgrade() + "\n"); student = (StudentRecord)databaseStream.readObject(); catch (Exception e) e.printstacktrace(); return;...

6 (6) private Map<String,ExamGrade> makeresultstable() throws IOException Map<String,ExamGrade> table = new HashMap<String,ExamGrade>(); String line = resultsreader.readline(); while ( line!= null ) String[] fields = line.split(","); if ( fields.length!= 3 ) throw new IOException( makeresultstable: malformed input ); table.put(fields[0], new ExamGrade(Integer.parseInt(fields[1]),fields[2])); line = resultsreader.readline(); return table; // denna var given String getnamebase(string filename) int i = filename.indexof('.'); if ( i == -1 ) return filename; else return filename.substring(0,i);