Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: ADAEK12h ASYST12h NGIMI12h 7,5 högskolepoäng Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: 14 mars 2014 Tid: 9.00-13.00 Hjälpmedel: Inga hjälpmedel. Totalt antal poäng på tentamen: För att få respektive betyg krävs: G=25, VG=40 50 poäng Obs! För dig som tillhör tidigare årgångar (dvs. gamla OOSU) räcker det att få 12,5 poäng på Peters del för att du ska få betyget G (skälet är att programmering inte ingick i gamla OOSU). Vill du däremot ha VG är det samma regler som för årets studenter, 40 p på hela tentan. Rättningstiden är i normalfall tre veckor, annars är det detta datum som gäller: 2014-04-01 Viktigt! Glöm inte att skriva namn på alla blad du lämnar in. Lycka till! /Peter & Petter 1
Ansvarig lärare: Peter Rittgen, Petter Dessne Analys- och designdel (Peters del) 1. Rita ett klassdiagram som innehåller klasserna Person, Lärare, Student, Kurs, Examination, Tenta, Inlämningsuppgift. Ange passande attribut till varje klass och alla lämpliga samband mellan klasserna. (10 poäng)
2. Utveckla ett användningsfall som beskriver hur en bankkund hämtar pengar från en bankomat. Rita ett användningsfalldiagram (use case diagram) och skriv en berättelse (use case narrative) som innehåller aktiviteter som utförs av kunden och bankomaten. (15 poäng)
Petters uppgifter, omtentamen OOSU1, 2014-03-14 Man kan skapa en mängd nyttiga och mindre nyttiga program med Windows Forms. Din uppgift består i att färdigställa ett spel som liknar det klassiska brädspelet Othello: Spelbrädet består av 8*8 rutor. Rutorna har svart bakgrund från början. Genom att ange rad och kolumn med två numericupdown-kontroller och klicka på en knapp kan man ändra vald rutas bakgrundsfärg till vit. Väljer man samma ruta en gång till blir rutan svart igen, dvs den blir omväxlande vit och svart. Alla frågor nedan utom den sista har att göra med detta program. Instruktioner för inlämning Du ska skriva koden på papper. Tänk på att koden måste vara tydligt skriven så att jag kan läsa det du skriver. Du behöver inte bekymra dig direkt om indentering (indrag). Kodkommentarer Av pedagogiska skäl är min kod inte kommenterad. Du ska förstås kommentera din kod som vanligt. Jag har skrivit på engelska i min kod, men du kan skriva på svenska om du vill. Uppgiftens syfte och rättningsprincip Tanken med de här uppgifterna är att ni ska uppvisa kunskaper i 1. Kodning 2. Förståelse för OO-principer 3. Förmåga att tillämpa existerande kod 4. Förmåga att tänka i algoritmer 5. Insikt i bra kod-etikett (namngivning och liknande) Poängen sätts efter hur jag bedömer att ni lyckats i dessa avseenden. Om du t.ex. inte vet hur du ska växla mellan booleska värden kan du fortfarande få många poäng genom att visa att du kan anropa metoder i andra klasser etc. Som alltid gör så gott du kan och skriv det du hinner med. Tanken är inte att alla ska få full poäng på uppgifterna utan att de sammantaget ska vara ganska svåra. Lycka till! Petter
Skärmdumpar Så här ser spelet ut. Observera att det inte finns något direkt logiskt innehåll, dvs det är än så länge inget kul spel. När man trycker på knappen så ändras rutan för rad 3/kolumn 7 och trycker man på knappen en gång till så blir rutan svart igen.
Klassdiagrammet för programmet
Fråga A (4p): Precis som i sudokuspelet är det inte fråga om att bara ändra utseendet på en viss ruta, utan rutornas värden hämtas från andra klasser. Studera klassdiagrammet ovan. Beskriv i ord hur programmet hänger ihop, dvs. vad klasserna har med varandra att göra. Fråga B (4p): I klassdigrammet hittar du klassen Marker ( bricka på engelska). Den består av endast en property, kallad white. Det är en boolean, dvs. antingen är brickan vit eller inte (och är den inte satt till vit så ritas en svart bakgrund ut på brädet). Skriv koden för propertyn, i fullformat (alltså propfull -formatet). Fråga D (7p): Koden nedan visar hur en array med brickor skapas. Skriv en metod som lägger in en ny bricka i varje arrayposition. private Marker[,] _markerarray = new Marker[8,8]; Fråga C (6p): När man klickar på knappen i programmet körs händelsehanterarmetoden nedan. Den anropar i sin tur en metod som jag har döpt till setcolor. Vad den metoden gör är att uppdatera white-propertyn för rätt bricka i arrayen markerarray. Skriv metoden setcolor! private void btnchangecolor_click(object sender, EventArgs e) { int x = Convert.ToInt32(nudRow.Value) - 1; int y = Convert.ToInt32(nudCol.Value) - 1; mc.setcolor(x, y); updateboard(); } Fråga E (4p): Här följer några allmänna frågor, hämtade från mina slides. a) Skriv koden för att konvertera en sträng till ett heltal (du behöver inte ha validering). (2p) b) Vad har man kontrollen GroupBox till? (1p) c) Vad innebär det när man skriver return; mitt inne i en metod? (1p)