Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer: 5DV133-1 Till skrivningsbevakaren: Avskilj detta (sid1) försättsblad och stoppa i kuvert som skickas till Yvonne Löwstedt, Datavetenskap OBS! OBS! Denna skrivning rättas kodad. Detta blad kommer att avskiljas innan läraren får skrivningen för rättning. Ovanstående kod måste därför finnas på samtliga svarsblad när du lämnar skrivningen till skrivvakten. Memorera ditt kodnummer eftersom det även kommer att användas som referens när resultaten meddelas. 1(8)
UMEÅ UNIVERSITET Institutionen för Datavetenskap UMEÅ UNIVERSITY Dept of Computing Science TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 5DV133-1 Problem Inlämnad Poäng 1 2 3 4 5 6 7 8 9 10 Summa Betyg 2(8)
TENTAMEN I DATAVETENSKAP. OBJEKTORIENTERAD PROGRAMMERINGSMETODIK (5DV133) Datum : 13-06-05 Tid : 16.00-20.00 Hjälpmedel : Inga Antal Uppgifter : 10 Totalpoäng : 52 (halva poängtalet krävs normalt för godkänt) Kryssa för de uppgifter du lämnar in Skriv tentakoden på varje blad. Lösningarna skall vara snyggt och prydligt nedskrivna. Tankegången skall vara lätt att följa. Alla antaganden som inte är uppenbara skall redovisas. Tips! Försök på alla uppgifter! Om du inte kan lösa en av flera deluppgifter, gör lämpliga antaganden och gå vidare till efterföljande deluppgifter. Uppgifter kan vara felformulerade, fråga om du är osäker eller tycker att något verkar konstigt. Jag nås via telefon kontakta tentavakterna. Det är ditt ansvar att övertyga om att du besitter den kunskap som efterfrågas. Det är viktigt att du löser den givna uppgiften! Lycka till! 3(8)
Uppgift 1. (13p) Förklara följande begrepp: a) Omdefinition b) Arv c) Instans d) Attribut e) Aggregat f) Överlagring (overloading) g) Dynamisk bindning h) Primitiv datatyp i) Syntax j) Semantik k) Checked Exception (Kontrollerat undantag) l) Reserverade ord m) Konstruktor Uppgift 2. (5 poäng) Vad används följande reserverade ord till i java a) extends b) package c) catch d) protected e) final Uppgift 3 (5 poäng) a) Java-program skall gå att köra på olika datorer och under olika operativsystem utan att behöva kompileras om. Hur åstadkoms detta? b) Förklara vad en abstrakt klass och ett interface är för något. Ange skillnader och likheter. c) Java har ej multipelt arv. Hur har man valt att lösa detta istället i Java. d) Vad är skillnaden mellan en klass och ett objekt e) Förklara varför man har flera olika datatyper för att representera heltal i java (och många andra programspråk) 4(8)
Uppgift 4. (5 poäng) Vilka av följande påståenden är sanna respektive falska. 1 poäng per rätt svar, -1 poäng för felaktigt svar och om man inte svarar på en uppgift får man 0 poäng för denna. a) Alla ord som kan skapas med hjälp av bokstäverna a-z, A-Z och _ kan användas som variabelnamn i Java. b) För att använda en klass i ett annat paket måste du använda import kommandot i början av din källkodsfil. c) Man får ha två metoder i samma klass som skiljer sig åt endast beroende på returtypen d) Man får ha två metoder med samma namn i en klass om de har olika parametrar (typ/antal) e) Man kan ha metoder som tar ett variabelt antal argument vid anrop Uppgift 5. (2p) Om Truck och Motorcycle är subklasser till Vehicle. Vilka av följande deklarationer är ogiltiga? Varför? a) Truck t = new Vehicle(); b) Vehicle v = new Truck(); c) Motorcycle m1 = new Vehicle(); d) Motorcycle m2 = new Truck(); Uppgift 6 (3 poäng) Man kan prata om tre typer av fel: kompileringsfel, run-time fel och/eller logiska fel. Kategorisera följande situationer (sätt X): Situation Kompileringsfel run-time fel Du försöker anropa en metod som tar en int som parameter med ett värde av typen double Du använder dig av ett för högt värde då du försöker indexera dig i ett fält (array) Du råkar skriva x=true när du skulle ha skrivit x==true i villkoret till en if-sats Du råkar skriva x=1 när du skulle ha skrivit x==1 i villkoret till en if-sats En metod returnerar ett felaktigt resultat Du glömmer att skriva ett semikolon efter en sats logiskt fel 5(8)
Uppgift 7 (4 poäng) Vad kännetecknar en god klass? Uppgift 8. (3 poäng) Vilka av satserna nedan kan kompileras och exekveras utan problem givet klasserna i klassdiagrammet nedan (motivera). Innan satserna står följande deklarationer. Kryssa över satser som ej fungerar. Class1 c1 = new Class1(); Class2 c2 = new Class2(); Class3 c3 = new Class3(); Class4 c4 = new Class4(); o c1=c2; o Object o=c2; o c2.method1(1); o o.method1(); o c2=c3; Class1 Class2 +Class1() +method1() +method1(int) +Class2() +method1() Class3 +Class3() +method1() Class4 +Class4() +method1(int) 6(8)
Uppgift 9. (4p) Antag att vi har en klass Hus som ser ut som följer: Vad har Evas och Nisses hus för färg (i det fall då variablerna refererar till ett objekt) efter varje sats i konstruktorn nedan, märkt a) till g), när ett objekt av klassen By skapas? class By { Hus evas; Hus nisses; public By() { } a) evas = new Hus( Rött ); b) nisses = evas; c) nisses.måla( Blått ); d) evas = new Hus( Gult ); e) kopierafärg(evas, nisses); f) evas.måla( Grönt ); g) husbyte(evas, nisses); // Kopiera färgen från ett hus till ett annat public void kopierafärg(hus p, Hus s) { s.måla(p.getfärg()); } } public void husbyte (Hus a, Hus b) { Hus temp; temp=b; b = a; a=temp; } Hus - String färg + Hus (String färg) + måla (String nyfärg) + getfärg() : String 7(8)
Uppgift 10 (8 poäng) Ni har blivit ombedda att hjälpa till med designen av ett nytt system för ett biluthyrningsföretag. Er uppgift blir att ta fram en lämplig klassdesign för systemet (ni behöver alltså inte implementera det). Företaget hyr ut två olika typer av bilar (bensindrivna personbilar och skåpbilar som går på diesel). Kunderna ska kunna boka en viss typ av bil för ett visst antal dagar och systemet skal då reservera en sådan bil under tidsperioden som kunden önskar (förutsatt att bokningen går att utföra). För att hålla reda på bilarna använder man sig på företaget av bilarnas registreringsnummer. Självklart ska var och en av bilarna inte kunna vara bokade/uthyrda till två kunder samtidigt. För att kunna hantera ev. problem så behöver företaget veta namnet, personnummer och telefonnumret till alla kunder som bokat en bil. Då en kund återlämnar bilen ska systemet kunna räkna ut priset som denne ska betala. Priset bestäms av antalet dagar som bilen varit uthyrd (200 kronor/dag för personbilen och 300kr/dag för skåpbilarna), antal mil som bilen körts (10 kr/mil) samt hur mycket bensin/diesel som är kvar i tanken jämfört med då bilen hämtades ut. För diesel debiteras 14 kronor per liter mindre som finns i tanken vid återlämnandet och för bensin 15 kronor. Om mer bensin/diesel finns i tanken vid återlämnandet än vid uthämtandet så dras motsvarande summa av på totalpriset. Lämna in en beskrivning av designen som innehåller alla klasser och hur de hänger ihop. För varje klass ska alla viktiga attribut och metoder finnas med. Ni ska beskriva er design genom ett UML-klassdiagram. 8(8)