kl Tentaupplägg

Relevanta dokument
kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentainformation

kl Tentaupplägg

kl Tentaupplägg

2017-XX-XX.kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentainformation

kl Tentaupplägg

kl Tentaupplägg

DUGGA Tentaupplägg

kl Tentaupplägg

Tentaupplägg. Betygsgränser: 1 uppg 19:00 Betyg 3 2 uppg 18:00 Betyg 4 2 uppg 16:30 Betyg 5 3 uppg 18:00 Betyg 5

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg. TIPS 4: Du kan kompilera din kod med följande kommandon g++11, w++11 (för mer varningar)

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Examination - Ada

kl Tentaupplägg

DUGGA Tentaupplägg

Tentaupplägg denna gång

Tentaupplägg denna gång

kl Tentaupplägg

kl Tentaupplägg

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

kl Tentaupplägg

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Agenda. Objektorienterad programmering Föreläsning 13

Kort om klasser och objekt En introduktion till GUI-programmering i Java

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

kl Tentaupplägg

HI1024 Programmering, grundkurs TEN

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

HI1024 Programmering, grundkurs TEN

Uppgift 1a (Aktiekurser utan poster)

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

TENTAMEN OOP

Tentaupplägg denna gång

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

TDIU20 (exempel) TDIU20 Tentaregler

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Objektorienterad programmering i Java I

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Kopiering av objekt i Java

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Uppgift 1 ( Betyg 3 uppgift )

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

HI1024 Programmering, grundkurs TEN

Objektorienterad programmering D2

Laboration 1 - Grunderna för OOP i Java

Uppgift 1 ( Betyg 3 uppgift )

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

DAT043 - Föreläsning 7

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

Tentaupplägg denna gång

Uppgift 1 (grundläggande konstruktioner)

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Objektorienterad Programmering (TDDC77)

Teoretisk del. Facit Tentamen TDDC (6)

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Design av en klass BankAccount som representerar ett bankkonto

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Laboration 3, uppgift En klass för en räknare

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

ID1004 Laboration 4, November 2012

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

TENTAMEN OOP

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Programmering för språkteknologer II, HT2011. Rum

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Tentamen, EDAA10 Programmering i Java

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

TDDI22 (exempel) TDDI22 Tentaregler

Konstruktion av klasser med klasser

Transkript:

Tentaupplägg Allmänna Tips Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer att fastna på så kanske det är fel uppgift att ge sig på. Tiden du lägger på att noga läsa uppgifterna tjänar du in på att välja rätt uppgift. Kolla ibland till kommunikationsfönstret. Det kan ha kommit information till alla utan att ni skickat in en fråga. Om ni har problem med eclipse eller dylikt som INTE har med uppgifterna att göra, räck upp handen så kommer en assistent. Detsamma gäller om hur man kopierar givna filer. Frågor om själva uppgifterna tar vi i första hand via tentasystemet. Testa ditt program noga innan du skickar in. Om din lösning inte är korrekt kommer du få ett kompletteringsmeddelande och har möjlighet att rätta den och skicka in igen. Kompletteringar måste dock åtgärdas. Vi tolererar inte att ni spammar oss med samma lösning om och om igen. Kommando cp given_files/*. xdg open given_files/tenta.pdf eclipse & Effekt Kopierar alla givna filer till mappen du står Öppnar själva tentan. Blir läsbar då tentan startar. Startar eclipse. Generella krav (gäller för alla uppgifter om inget annat anges): Fullständiga uppräkningar och kodduplicering skall undvikas med klasshierarkier och polymorfi i de fall det inte går att generalisera på andra sätt (underprogram, loopar, etc.). Korrekt inkapsling krävs, d.v.s. rätt synlighet på instans/klassvariabler och metoder. Lämpliga konstruktorer skall finnas för alla klasser. Instansvariabler får inte användas som globala/lokala variabler (d.v.s. använd parametrar och lokala variabler i första hand). Korrekt användning av static krävs. Överanvändning av instanceof och typkonverteringar kan leda till komplettering. Det är tillåtet att använda sig av javas bibliotek (t.ex. java.util) om inget annat anges i uppgiften. Betygsgränser: Tid TDDE10/11 725G90 1 poäng 12:00 Betyg 3 Betyg G 3 poäng 11:00 Betyg 4 3 poäng 10:40 Betyg VG 3 poäng 10:20 Betyg 5 4 poäng 11:00 Betyg 5 4 poäng 11:20 Betyg VG OBS: Delpoäng delas inte ut på uppgifterna. För att få poäng på en uppgift måste man alltså lösa uppgiften helt (och enligt specifikation). M.v.h. /Torbjörn och Erik

Uppgift 1 - Otrevliga ord [1p] På filen FilterBadWords.java finns ett program som läser en rad text från tangentbordet. Programmet presenterar textraden på skärmen men programmeraren är rädd för att användaren kanske matar in otrevliga ord. Det vore oansvarigt av programmet att inte filtrera bort dem! Du skall i denna uppgift skapa en superklass och tre subklasser som kan användas för att filtrera ord från den inmatade meningen. Superklassen WordChecker har en metod isokword som tar en sträng P som parameter och jämför den mot en uppsättning förbjudna ord (se kommentar i FilterBadWords.java). Om P är något av de förbjudna orden så returneras falskt, annars sant. Vilka ord som är förbjudna skall lagras i klassens instansvariabel forbidden. Välj en lämplig datatyp för forbidden, String[] är bara ett förslag. Subklassen ExtendedWordChecker fungerar på samma sätt som WordChecker men har en utökad uppsättning ord (se kommentar i FilterBadWords.java). Subklassen ExtraFiveWordChecker fungerar på samma sätt som WordChecker men kollar också mot de fem extra ord som subklassen instansieras med. Subklassen CaseInsensitiveChecker fungerar på samma sätt som WordChecker men skiljer inte på stora och små bokstäver. (T.ex. ordet "dumhjon" hade superklassen släppt igenom, men det gör inte denna subklass.) I övrigt skall klasserna följa klassdiagrammet. Du får ha fler metoder i superklassen än de som syns i UML:en. Se FilterBadWords.java för hur klasserna skall instansieras. FilterBadWords 1 1 WordChecker - forbidden : String[] ExtendedWordChecker ExtraFiveWordChecker CaseInsensitiveChecker TIPS: Man kan omvandla en sträng till bara små bokstäver med metoden tolowercase(). String s1 = "EmmaBertil"; String s2 = s1.tolowercase(); // s2 blir "emmabertil".

Uppgift 2 - Too bad it's a Kia...[1p] Kia Motors har skapat ett litet simuleringsprogram för den nya Kia-modellen VertiGo. Programmet består av klassen TestVertiGo (huvudprogrammet) och klassen VertiGoKia (som modellerar bilen). En användare styr bilen genom ett textuellt gränssnitt. Man kan köra bilen (ett visst antal kilometer), tanka och laga punktering. Det finns dock vissa problem med programmet. Problemen uppstår i metoden drive, när man t.ex. får slut på bränsle eller får en punktering. I det första fallet är man lite illa ute, eftersom användaren då inte har tillräckligt med bränsle för att ta sig till en mack, men programmet tar inte hänsyn till detta utan låter användaren glatt tanka ändå! Det andra problemet är inte heller bra. Vid punktering borde programmet inte tillåta att man kör vidare (eller tankar) utan endast påkallande av bärgningsbil är lämpligt. Vid problem kommer drive bara returnera falskt, vilket också blankt ignoreras av huvudprogrammet. Du skall nu uppgradera hela systemet med lite undantagshantering! Du skall: - Modifiera metoden drive så att den kastar AlmostOutOfFuelException om nuvarande bränslenivå understiger LIMIT liter. Låt LIMIT vara en publik konstant, lika med 5, inne i undantagsklassen. - Modifiera metoden drive så att den kastar undantaget OutOfFuelException om nuvarande bränslenivå är 0 liter. Använd en gemensam superklass (FuelException) för OutOfFuelException och AlmostOutOfFuelException. Det skall vara krav på den som anropar drive att fånga bränslerelaterade undantag. - Modifiera metoden drive så att den kastar undantaget FlatTireException om bilen skulle få punktering. Det skall INTE vara krav på den som anropar drive att fånga detta undantag. - Modifiera huvudprogrammet så att det fångar alla bränslerelaterade undantag med maximalt ett catch-block. Exakt vad som sker i catch-blocket bestämmer du själv. Du skall inte: - Fånga FlatTireException i huvudprogrammet. - Lösa "problemen" att man kan få slut på bränsle eller få punktering, de är en del av simuleringen. TestVertiGo VertiGoKia - fuel : int - flat : boolean 1 1 - MAX_FUEL : int +drive(int) : boolean +fixflat() +fuelup() FlatTireException FuelException AlmostOutOfFuelException + LIMIT : int OutOfFuelException TIPS: Pilarna mellan VertiGoKia och FlatTireException resp. FuelException är associationspilar, inte arv- eller kompositionspilar.

Uppgift 3 - ADT Deck [2p] En kortlek är en uppsättning kort som ligger i en hög. Du skall i denna uppgift skapa en ADT som motsvarar en kortlek. Du har fått den givna klassen Card som motsvarar ett spelkort. Klassen Deck skall lagra en linjär mängd Card, och ha följande operationer: shuffle() add(card) add(list<card>) peek() draw(int N) size() Blandar kortleken så att alla kort kommer i slumpad ordning. Lägger in ett kort i leken och blandar den. Lägger in en mängd kort i leken och blandar den. Returnerar (men tar inte bort) det "översta" kortet i leken. Tar ur de N "översta" korten i kortleken och returnerar dem som en java.util.list<card>. Returnerar antalet kort i leken. Du skall sedan göra din klass generisk så att vilken klass som helst kan lagras av Deck (inte bara Card). Se testprogrammet TestDeck.java för att se hur Deck skall instansieras när klassen är helt färdig. TIPS: Klassen Collections har en klassmetod shuffle som kan användas för att slumpa en java.util.list.

Uppgift 4 - Häxor och trollkarlar [3p] På Hogwarts vill man ha ett nytt datorsystem. Det behövs klasser för häxor/trollkarlar (MagicUser), lärare (MagicTeacher) och trollformler (Spell). Du skall skapa dessa dessa klasser med följande förhållanden: Elevrådet på Hogwarts kräver ett nytt datorsystem. Lärarna är dock tveksamma... Vad är det för fel på gamla goda pennor och papper? Alla MagicUser har ett för- och ett efternamn (två strängar). Alla elever på Hogwarts är instanser av MagicUser. Alla lärare på Hogwarts är instanser av MagicTeacher. En MagicTeacher är också en MagicUser. Alla MagicUsers har en uppsättning trollformler som de känner till. Uppsättningen skapas och fylls med Spells i häxan/trollkarlens konstruktor. Det skall finnas en metod getspells() som returnerar denna uppsättning som en java.util.list<spell>. I övrigt skiljer sig en lärare från en elev endast genom att en lärare även har metoden teach(magicuser), som lägger till alla lärarens trollformler till eleven som kommer in som parameter. Klassen Spell skall ha en publik metod cast som tar både den häxa/trollkarl som utförde trollformeln och den häxa/trollkarl som trollformeln utförs på. Metoden skall vara abstrakt. Spell kan alltså vara ett gränssnitt (interface) om du vill, men det är OK att ha som abstrakt klass. De utskrifter som står som kommentarer i testprogrammet skall komma från de metoder som överskuggar cast. Se testprogrammet Hogwarts.java för att se hur klasserna skall instansieras och hur metoderna skall anropas. Du kommer även behöva skapa subklasser för HarryPotter, HermioneGranger, DracoMalfoy, SeverusSnape och MinervaMcGonagall. (Vilka som är Teachers och vilka som bara är Users framgår av testprogrammet). KRAV: Du får inte skapa en egen namngiven klass för varje trollformel (det blir så många klasser då). Du får (läs bör) använda anonyma inre/nästlade klasser.