Tentamen INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP) Delkurs 3 Introduktion till objektorienterad programmering och problemlösning Lärare: Johan Petersson, Tanja Mäki-Runsas Datum: 2016-04-22 Tid: 14:15-19:15 Hjälpmedel: - Ordbok till/från svenska och annat språk - Ordbok till/från engelska och annat språk - Appendixhäfte Antal uppgifter, del A: 5 Poäng, del A: 17 ------------------------------------------- Antal uppgifter, del B: 1 Poäng, del B: 4 För betyget godkänt (G) krävs ca 66% av poängen på del A För betyget väl godkänt (VG) krävs, utöver kraven för G, ca 50% av poängen på del B 1
Läs noga igenom detta: Ett svårläst lösning kan medföra poängavdrag. Renskriv därför dina svar på ett nytt ark vid behov. Fyll i försättsbladen noggrant ange uppgiftsnummer och tentamenskod på alla inlämnade papper. Den enskilde studenten ansvarar själv för att material som skall bedömas lämnas in till skrivningsvakt. Obs! Lägg uppgifterna 1-3 i vitt omslag märkt 1 och uppgifterna 4-5+B1 i vitt omslag märkt 2. Börja varje ny uppgift på nytt papper. Lämna in uppgifterna i nummerordning. Skriv endast på en sida. Penna som ger röd skrift får ej användas. Är uppgiften oklar, gör rimliga antaganden och redovisa dessa. Även inte helt fullständiga lösningar kan ge poäng. Lös de delar du kan. Lycka till! 2
Del A ------------------------------------------------------------------------------------- Uppgift 1 (3 p) Javaklassen Hund (obs! se källkoden på nästa sida) håller information om hundar. En uppgift man håller information om här är hunden vikt i kg. Din uppgift är att skriva kod för metoden setvikt som utgör ett tillägg till klassen. Metodens uppgift är ändra informationen om hundens vikt. Metoden skall dock också kontrollera om den angivna vikten är rimlig (i detta fall att vikten överstiger 0 och är mindre än 150 kg) och ändra värde endast om så är fallet. - Metoden skall ta emot en önskad viktangivelse som parameter - Metoden skall kontrollera om den angivna vikten ligger inom intervallet - Värdet på vikten skall ändras endast om det angivna värdet ligger inom intervallet - Metoden skall returnera värdet true om vikt-fältet har lagrat ett godkänt värde (annars false). Du behöver bara visa metodens programkod (ej resten av klassen). Skriv ditt svar på ett vanligt svarsark 3
4
Uppgift 2 (1+1+2 p) Åven i den här uppgiften är utgångspunkten koden för klassen Hund enligt ovan. Besvara följande frågor: a) Hur skulle ett korrekt anrop till klassens konstruktor se ut i javakod? (d.v.s. hur skulle programkoden för att instanisera ett hundobjekt se ut) b) Vilket tillstånd (state) skulle det nya objektet ha (direkt efter instansiering)? c) I koden för klassens konstruktor används inte det reserverade ordet this. Förklara vad ordet står för men varför koden fungerar trots att ordet this inte används här. Skriv ditt svar på ett vanligt svarsark 5
Uppgift 3 (2 p) Utgångspunkten för den här uppgiften är klasserna Bil respektive Behållare nedan. För klassen Bil finner du källkoden och för klassen Behållare finner du dess Java-dokumentation. a) Uppgiften går ut på att utöka klassen Bil med metoden visadisplayinfo. Metodens anrop ska skapa en utskrift i terminalfönstret enligt bilden nedanför (de exakta värdena som visas i utskriften är förstås bara exempel). Du behöver bara visa metodens programkod (ej resten av klassen). Skriv ditt svar på ett vanligt svarsark 6
7
Klassen Behållare (API-dokumentation) 8
9
Uppgift 4 (4 p) Utgångspunkten för denna uppgift är klasserna Hund (ovan) och Hundgård (nedan). Din uppgift är att komplettera klassen Hundgård med metoden raknahundarmedvissminstavikt. Metodens uppgift är att kontrollera, och skriva ut hur många av hundgårdens hundar som har samma eller högre vikt än den siffra som anges då metoden anropas. Exempel: Om det finns två hundar i systemet som väger 12 kg eller mer skall exempelanropet: raknahundarmedvissminstavikt(12); ge följande utskrift på skärmen (i terminlafönstret): Antalet hundar är: 2 Om det inte finns någon hund i systemet som väger 12 kg eller mer skall exempelanropet: raknahundarmedvissminstavikt(12); ge följande utskrift på skärmen (i terminalfönstret): Inga hundar funna 10
Uppgift 5 (1+2+1 p) Även i denna uppgift är utgångspunkten klassen Hund (ovan). Här fokuseras dock begreppet sammanhållning (cohesion) och det begreppets koppling till ansvarsdriven design (responisbility driven design). a) Identifiera på vilket sätt källkoden visar upp tecken på bristande sammanhållning. Beskriv alltså hur man kan se det i koden. b) Beskriv de förändringar man skulle kunna göra i koden för att förbättra sammanhållningen (gärna med källkod men det finns inget behov av att skriva komplett klasskod). c) Förklara på vilket sätt det ovan har med ansvarsdriven design att göra (exemplifiera alltså med koden i klassen Hund). Skriv ditt svar på ett vanligt svarsark 11
Del B ------------------------------------------------------------------------------------- Uppgift B1 (2 + 2p) a) Koda metoden listatavlingsklassa Utgångspunkten för denna uppgift är klasserna TavlingsDeltagare och Lopare. Klasserna används i ett program som håller reda på information om de löpare som är anmälda till en viss tävling. När en deltagare anmäler sig till tävlingen får löparen ett unikt deltagar-id. Deltagar-id:t anger dels vilken tävlingsklass löparen tillhör (A, B eller C) och dels ett löpnummer. Nedan finner du ett exempelutdrag av den information systemet hanterar: deltagarid namn personummer personbästa A01 Bo Bullit 901212-0000 12.5 B01 Pål Paljett 951101-0000 10.7 A02 Lee Paljett 440912-0000 9.8 A14 Jian Wood 950304-0000 12.5 A03 Lee Lee 881201-0000 12.5 C78 Lee Lee 860422-0000 11.4 Din uppgift är nu att utöka klassen TavlingsDeltagare med metoden ListaTavlingsKlassA. Metodens syfte är att skriva ut information på skärmen (i terminalfönstret) enligt exemplet endan: Som exemplet visar skall metoden alltså söka fram de löpare som är anmälda till tävlingsklass A. Den information som skall listas är deltagar-id och deltagarens namn. b) Din uppgift är beskriva och förklara den kod du löst uppgiften i (a) ovan med. Beskrivning handlar om att redogöra för vad respektive kodrad faktiskt gör. Förklara innebär att du helt enkelt ska förklara vad respektive del av koden är för något. Här är det därför viktigt att inte hoppa över något steg i beskrivningen samt att använda korrekt terminologi när koden förklaras. 12
13