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-08-13 Tid: 08:15-13: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: 16 ------------------------------------------- Antal uppgifter, del B: 1 Poäng, del B: 5 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. 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 ForskoleBarn (obs! se källkoden nedan) håller information om just barn i förskolan. En uppgift man håller information om här är barnens ålder. Din uppgift är att skriva kod för metoden setalder som utgör ett tillägg till klassen. Metodens uppgift är ändra informationen om barnets ålder. Metoden är en s.k. förändringsmetod och tar ett heltal som parameter. Metoden skall dock kontrollera om den angivna åldern är rimlig = ändring av fältets värde ska bara ske om parametervärdet är som lägst 0 och som högst 7. - Metoden skall ta emot en önskad ålder som parameter - Metoden skall kontrollera om den angivna åldern är tillåten (se ovan) - Värdet på åldern skall ändras endast om parametervärdet ligger inom intervallet - Metoden skall returnera värdet true om ålders-fältet har lagrat ett godkänt värde. I annat fall ska false returneras. Du behöver bara visa metodens programkod (ej resten av klassen). Skriv ditt svar på ett vanligt svarsark 3
4
Uppgift 2 (1+2 p) Åven i den här uppgiften är utgångspunkten koden för klassen ForskoleBarn enligt ovan. Besvara följande frågor: a) Faktum är att man skulle kunna använda någon annan (numerisk) datatyp för att hantera värdet på fältet alder. Man skulle kunna säga att det är lite onödigt att använda int i just det här sammanhanget. Förklara varför! b) I en och samma javaklass kan man ha flera konstruktorer. Ge med ett kodexempel, ett förslag på en alternativ konstruktor i klassen ForskoleBarn (det vill säga ett tillägg till klassen). Förklara skillnaden mellan ditt förslag och den konstruktor som finns i klassens kod nu. Skriv ditt svar på ett vanligt svarsark 5
Uppgift 3 (2 p) Utgångspunkten för den här uppgiften är klasserna BadAnläggning respektive Bassäng nedan. En badanläggning är i det här fallet ett utomhusbad med bassänger. För klassen BadAnläggning finner du källkoden och för klassen Bassäng finner du dess Javadokumentation nedan. Uppgiften går ut på att utöka klassen BadAnläggning med metoden visatemperaturer. 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
Klassen BadAnläggning (källkod) 7
Klassen Bassäng (API-dokumentation) 8
Uppgift 4 (4 p) Utgångspunkten för denna uppgift är klasserna Forskolebarn (ovan) och Avdelning (nedan). Din uppgift är att komplettera klassen Avdelning med metoden listaallaundervissalder. Metodens uppgift är att skriva ut namnen på alla barn som är under en viss, angiven ålder (åldern ska tas emot som parametervärde). Resultatet av metodkörningen skall vara en utskrift som antingen listar namnen på de barn som stämmer med urvalet eller så skrivs ett informationsmeddelande ut på skärmen (enligt bilderna nedan). 9
Klassen Avdelning (källkod) 10
Uppgift 5 (1+1+1+1 p) Även i denna uppgift är utgångspunkten klassen ForskoleBarn (ovan). Här fokuseras dock begreppet sammanhållning (cohesion). Koden uppvisar god sammanhållning. a) Förklara hur man kan se att klassammanhållningen är god i det här fallet? b) Ge exempel på hur det hade kunnat se ut om klassammanhållningen varit mindre bra i den här klassen. c) Förklara hur man kan se att metodsammanhållningen är god i det här fallet? d) Ge exempel på hur det hade kunnat se ut om metodsammanhållningen varit mindre bra i de här metoderna. Skriv ditt svar på ett vanligt svarsark 11
Del B ------------------------------------------------------------------------------------- Uppgift B1 (3 + 2p) a) Utgångspunkten även för denna uppgift är klasserna ForskoleBarn och Avdelning enligt ovan. Här har vi dock tillfört ytterligare en klass: Forskola som helt enkelt hanterar en hel samling av avdelningar (bilden). Delar av källkoden till klassen Förskola finner du nedan. Din uppgift är nu att utöka klassen Forskola med metoden listaallanamn. Metoden skriver ut namnet för varje avdelning + namnen på alla avdelningens barn. En utskrift från metoden skulle kunna se ut som exemplet nedan (även om själva datat förstås beror på vilken information som för tillfället finns lagrad). 12
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. 13