Tentamen INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP) Delkurs 3 Introduktion till objektorienterad programmering och problemlösning Lärare: Johan Petersson, Mathias Hatakka Datum: 2016-01-13 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: 18 ------------------------------------------- Antal uppgifter, del B: 2 Poäng, del B: 7 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-5 i vitt omslag märkt A och uppgifterna B1-B2 i vitt omslag märkt B. 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 Hast håller information om hästar. En uppgift man håller information om här är hästens 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 hästens vikt. Metoden skall dock också kontrollera om den angivna vikten är rimlig (i detta fall att vikten överstiger 0 och är mindre än 2000 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å viken skall ändras endast om det angivna värdet ligger inom intervallet - Om vikten lagrat ett godkänt värde skall metoden returnera true annars false Du behöver bara visa metodens programkod (ej resten av klassen). Skriv ditt svar på ett vanligt svarsark 3
Uppgift 2 (1+1+2 p) Åven i den här uppgiften är utgångspunkten koden för klassen Hast enligt ovan. Besvara följande frågor: a) Hur skulle ett korrekt anrop till klassens konstruktor se ut i javakod? 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 det inte används här. Skriv ditt svar på ett vanligt svarsark 4
Uppgift 3 (2 p) Till denna uppgift hör javakoden för de 6 klasser du finner nedan. Varken namnet 1 på klasserna eller deras inbördes ordning nedan säger något om deras relation till varandra. Man kan dock beskriva relationen som att det handlar om komponenter som i sin tur kan vara sammansatta av andra komponenter. Inom OOP och används denna relation då man pratar om modularisering och abstraktion. Föreställ dig nu att du instansierar ett objekt av klassen Z och därefter kör metoden skrivutord() på detta objekt. Ange nu den sträng som skrivs ut på skärmen. Skriv ditt svar på ett vanligt svarsark 1 Vilket i ett verkligt program vore dålig kodning. Nu är namnsättningen gjord medvetet informationsfri för att gagna kunskapskontroll. 5
6
7
Uppgift 4 (4 p) Utgångspunkten för denna uppgift är klasserna Hast (ovan) och Stall (nedan). Din uppgift är att komplettera klassen Stall med metoden raknahastarmedvissminstavikt. Metodens uppgift är att kontrollera, och skriva ut hur många av stallets hästar som har samma eller högre vikt än den siffra som anges då metoden anropas. Exempel: Om det finns två hästar i systemet som väger 500 kg eller mer skall exempelanropet: raknahastarmedvissminstavikt(500); ge följande utskrift på skärmen (i terminlafönstret): Antalet hästar är: 2 Om det inte finn någon häst i systemet som väger 500 kg eller mer skall exempelanropet: raknahastarmedvissminstavikt(500); ge följande utskrift på skärmen (i terminlafönstret): Inga hästar funna Skriv ditt svar på ett vanligt svarsark 8
Uppgift 5 (2+2+1 p) Även i denna uppgift är utgångspunkten klassen Hast (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 Hast). Skriv ditt svar på ett vanligt svarsark 9
Del B ------------------------------------------------------------------------------------- Uppgift B1 (3 p) Titta på källkoden för klasserna Klass1, Klass2, Klass3 nedan. Din uppgift är att svara på frågan: - vad kommer att skrivas ut på skärmen efter att metoden startasystem() i Klass1 anropas? Visa utskriften genom att besvara frågan på ett vanligt svarsark. 10
11
12
Uppgift B2 (4 p) Jultomten är nu klar med sin julklappsutdelning och behöver lite hjälp med att få fram lite statistik över utdelade klappar från sitt julklappsinformationssystem. Titta på källkoden för klasserna JulKlappsAdmin, Utdelaren, Klappar och Barn nedan. Din uppgift är att skapa metoden listaklappstatistik() i klassen JulKlappsAdmin. Inga ändringar får göras i andra metoder eller klasser. Om nedan exempeldata har lagts till i systemet: så skall, när metoden listaklappstatistik() anropas, följande skrivas ut på skärmen: OBS! Observera att de barn som ej varit snälla inte skall vara med i utskriften. Skriv svaren på ett vanligt svarsark 13
14
15
16