Objektorienterad programmering
för D2 m fl
lördag 15 december 2007 kl 08:00 - 13:00 i L001 och L003
Gäller som tentamen för:
DT2004 Datateknik B, Objektorienterad programmering, provkod 0100
DT2006 Datateknik B, Tillämpad datavetenskap B, provkod 0330
OBP012 Objektorienterad programmering, provkod 0101 (och 0100)
TDD122 Tillämpad datavetenskap B, provkod 0330 (och 0200)
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 40.
För godkänt betyg (3 respektive G) krävs 20 poäng. |
Resultat och lösningar: | Meddelas på kursens hemsida eller via e-post senast lördag 5 januari 2008. |
Visning och frågestund: |
Tisdag 8 januari 2008 kl 15:00-15:30 i mitt rum (T2220).
Efter visningen kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-73 47 013. |
För alla uppgifter på tentan gäller: Man får använda både standard-C++ (som till exempel har pekare som anges med * och objekt som skapas med new) och Microsofts dialekt C++/CLI (som till exempel har pekare som anges med ^ och objekt som skapas med gcnew). Man kan dock få poängavdrag om man blandar dem på ett felaktigt sätt, till exempel om man skapar ett objekt med gcnew och sen pekar på det med en *-pekare. |
Skriv klassdefinitionen för klassen Bok. Den ska ha en lämplig konstruktor, och fem medlemsfunktioner:
Skriv en main-funktion som först skapar två böcker (dvs två Bok-objekt), läser in båda, och till sist skriver ut båda. Objekten ska lagras i vanliga variabler, och inte allokeras dynamiskt med new.
I den här och alla andra uppgifter på tentan gäller: Om du ska använda en klass, funktion eller liknande sak från en tidigare uppgift, behöver du inte skriva koden för den på nytt. Du får också använda den även om du inte gjort uppgiften där man skulle skriva den. |
Implementera dessa operatorer.friend ostream& operator<< (ostream& out, const Bok& bok); friend istream& operator>> (istream& in, Bok& bok);
Skriv en main-funktion som först skapar två böcker (dvs två Bok-objekt), läser in båda, och till sist skriver ut båda.
Till skillnad från i uppgift 3 ovan, ska vi använda operatorerna från uppgift 4.
Skriv därför ytterligare en main-funktion som skapar två böcker (dvs två Bok-objekt), men den här gången ska den använda new för att skapa objekten. Sen ska den, precis som förut, läsa in båda och skriva ut båda. Glöm inte att avallokera objekten.
Välj själv om du vill använda funktionerna, som i uppgift 3, eller operatorerna, som i uppgift 5.
Välj själv vilka konstruktorer och andra medlemsfunktioner som behövs, för att det ska gå att skapa länkade listor av Listbok-objekt.
a) (2p)
Skriv klassdefinitionen för klassen Listbok. Glöm inte att det ska finnas (minst) en konstruktor.
b) (2p)
Skriv definitioner (dvs implementera) för alla medlemsfunktionerna, och eventuella andra saker som behövs.
c) (3p)
Skriv en main-funktion som skapar en lista med följande tre böcker, och sen skriver ut dem med skriv-funktionen:
Följande main-funktion ska fungera.
Det som ska hända här är att ett bibliotek (bib1) skapas, och vi lägger in två böcker i det. Sen sparas dessa böcker på en fil, kallad bibliotek.txt. Därefter skapas ett nytt bibliotek (bib2), och böckerna på filen bibliotek.txt läses in till detta nya bibliotek. Slutligen sparas böckerna på filen bibliotek2.txt.int main () { Bibliotek bib1; bib1.ny_bok("Tjuvarnas marknad", "Jan Guillou", 2004); bib1.ny_bok("The Good Terrorist", "Doris Lessing", 1985); bib1.spara_pa_fil("bibliotek.txt"); Bibliotek bib2; bib2.las_fran_fil("bibliotek.txt"); bib2.spara_pa_fil("bibliotek2.txt"); }
a) (3p)
Skriv klassdefinitionen för klassen Bibliotek.
b) (8p)
Skriv definitioner för alla medlemsfunktionerna (dvs implementera dem), och eventuella andra saker som behövs.