Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

Objektorienterad programutveckling, fk

Objektorienterad programutveckling, fk

Lösningsförslag till tentamen

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

Tentamen. Lösningsförslag

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

Tentamen LÖSNINGSFÖRSLAG

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

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

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

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

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

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

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

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

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

Objektorienterad programvaruutveckling, fk, TDA550. Exempeltentamen

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

Språkkonventioner och redigering av tal.

DAT043 Objektorienterad Programmering

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

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

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

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

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

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

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

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

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

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

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.

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

Del A (obligatorisk för alla)

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

Omentamen FYTA11 Javaprogrammering

Repetition av viktiga begrepp inom objektorienterad programmering

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

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

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

1 Repetition av viktiga begrepp inom objektorienterad programmering

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

Malmö högskola 2008/2009 CTS

Lösningar för tenta 2 DAT043,

Kopiering av objekt i Java

Tentamen, EDAA20/EDA501 Programmering

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

OOP Objekt-orienterad programmering

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

TENTAMEN OOP

TDDC77 Objektorienterad Programmering

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

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

Polymorfi. Objektorienterad och komponentbaserad programmering

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

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

Föreläsning 12: Exempel och problemlösning

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

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

Institutionen för TENTAMEN CTH VT-14 Datavetenskap TDA550 DAG: TID: 8:30 12:30

Konstruktion av klasser med klasser

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

Lösningar till tentamen i EDAF25

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

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Generisk klass med typparameter Inre klass - ListIterator

Föreläsning 8: Exempel och problemlösning

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

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Arv. Objektorienterad och komponentbaserad programmering

TDA550 - Objektorienterad programvaruutveckling, fk

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

Föreläsning 9. Generiska enheter Inre klasser Anonyma klasser Kloning

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Laboration 16. Uppgift 1

CHALMERS TENTAMEN. 2013/2014, lp 2 DAT050. Uno Holmer. Java API (bifogas tesen) Uno Holmer tel besöker tentamen ca kl samt ca 11.

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

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

Föreläsnings 10 - Överlagring, Konstruerare, Arv, Mer Exceptions, Reguljära Uttryck

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)

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

Malmö högskola 2007/2008 Teknik och samhälle

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.

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

Tentamen i Objektorienterad programmering

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Objektorienterad Programmering (TDDC77)

Transkript:

till tentamen 1 (5) Kurs Objektorienterad programmering Program DAI2 Läsår 2018/2019, lp 1 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift 2 (4+2+3+5 p) a) public boolean equals(object o) if ( this == o ) return true; else if ( o!= null && getclass() == o.getclass() ) Point other = (Point)o; return x == other.x && y == other.y; else return false; public int hashcode() return (123 + x)*37 + y; c) public Point clone() try Point p = (Point)super.clone(); p.modcount = 0; return p; catch ( CloneNotSupportedException e ) throw new InternalError(); d) public Polygon clone() try Polygon copy = (Polygon)super.clone(); copy.points = (ArrayList<Point>)points.clone(); for (int i = 0; i < points.size(); i++) copy.points.set(i,points.get(i).clone()); return copy; catch ( CloneNotSupportedException e ) throw new InternalError();

2 (5) Uppgift 3 (3+3+3+3 p) a) En av public class Student extends Person private String program; private int year; private int credits; public Student(String CID,String name,string address,string phone, String email,string program,int year,int credits) this.program = program; this.year = year; this.credits = credits; public class Employee extends Person private int salary; private int vacationdays; public Employee(String CID,String name,string address,string phone, String email,int salary,int vacationdays) this.salary = salary; this.vacationdays = vacationdays; public class Athlete extends Person private int height; private int weight; public Athlete(String CID,String name,string address,string phone, String email,int height,int weight) this.height = height; this.weight = weight; public static void main(string[] arg) Student s = new Student("123456-7890","Bob","Postgatan 20", "0123-4567890","bob@mail.org","D",2016,85); Employee e = new Employee("123456-7890","Bob","Postgatan 20", "0123-4567890","bob@mail.org",45000,35); Athlete a = new Athlete("123456-7890","Bob","Postgatan 20", "0123-4567890","bob@mail.org",168,74); s.setaddress("telefongränd 7"); e.setaddress("telefongränd 7"); a.setaddress("telefongränd 7");

3 (5) c) En av public class Student private String program; private int year; private int credits; public Student(Person personaldata,string program,int year,int credits) this.program = program; this.year = year; this.credits = credits; public class Employee private int salary; private int vacationdays; public Employee(Person personaldata,int salary,int vacationdays) this.salary = salary; this.vacationdays = vacationdays; public class Athlete private int height; private int weight; public Athlete(Person personaldata,int height,int weight) this.height = height; this.weight = weight; d) public static void main(string[] arg) Person bob = new Person("123456-7890","Bob","Postgatan 20", "0123-4567890","bob@mail.org"); Student s = new Student(bob,"D",2016,85); Employee e = new Employee(bob,45000,35); Athlete a = new Athlete(bob,168,74); bob.setaddress("telefongränd 7");

4 (5) Uppgift 4 (5+5 p) a) Anropet av f(2,3) returnerar 120. Anropskedja: Base.f(2,3) -> Sub.g(2+3) -> 2* Base.h(5) -> 4* Sub.f(5-1) -> 4 + 11 <- 15 <- 60 <- 120 <- 120 Motivering: Metoden f är överlagrad i Base. Bara den första matchar anropet med två heltalsargument. Denna metod är inte omdefinierad i Sub. Däremot är g omdefinierad i Sub och eftersom anropet görs för ett Sub-objekt väljs Sub.g. I Sub.g ärvs h från Base. Anropet av f i h går till Sub.f eftersom det fortfarande är samma Sub-objekt som tidigare som anropet görs för. Undantagen som kastas av en omdefinierad metod i en subklass måste vara kompatibla med basklassmetodens undantag. Subklassmetoden får kasta färre undantag och de som kastas måste vara av samma typer som basklassmetodens, eller subtyper till dem. T.ex. kan A.f kasta undantagen E2 och E3. Det är då tillåtet för B.f att deklarera att bara E2 kastas eftersom det ingår i A.f:s lista. För C.f blir det problematiskt eftersom E1 är basklass till E2 och därför är inte E1 kompatibelt med E2. Detta ger ett kompileringsfel. De två första anropen av func i main ger utskrifterna func catch E2: A.f throwed E2 func catch E3: B.f throwed E3

Uppgift 5 (14 p) 5 (5) public class Fire private Map<Integer,GroupAccount> database; private int lastgroup = 1; private int nooflabs; private String grader = "NN"; // Fixed for now. public Fire(int nooflabs) this.nooflabs = nooflabs; database = new TreeMap<>(); public int signup(string email,string password) for ( GroupAccount account : database.values() ) if ( account.getemail().equals(email) ) return -1; database.put(lastgroup, new GroupAccount(lastGroup,email,password,noOfLabs)); return lastgroup++; public String submit(int groupid,int labno,string content) throws UnknownAccountException, DuplicateSubmissionException, IllegalLaborationNoException if (! database.containskey(groupid) ) throw new UnknownAccountException( "Group " + groupid + " does not exist"); if ( labno < 1 labno > nooflabs ) throw new IllegalLaborationNoException("Illegal lab no:"+ labno); GroupAccount account = database.get(groupid); account.submit(new Submission(labNo,content,grader)); return grader; public void printresulttable() for ( Map.Entry<Integer,GroupAccount> e : database.entryset() ) System.out.print(e.getKey() + " "); for ( Submission s : e.getvalue() ) System.out.print(s == null? " - " : s.getstatus() + " "); System.out.println();