Tentamen i Objektorienterad programmering för ingenjörer (TDBB09) 2000-05-31, kl 09.00-15.00



Relevanta dokument
Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Introduktion till arv

Tentamen i Grundläggande programmering STS, åk 1 lördag

OOP Objekt-orienterad programmering

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

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

Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr,

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Klasshierarkier - repetition

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Tentamen i Grundläggande programmering STS, åk 1 fredag

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

TDDC76 - Programmering och Datastrukturer

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Tentamen i Grundläggande programmering STS, åk

Laboration 1 - Grunderna för OOP i Java

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Tentamen i Grundläggande programmering STS, åk

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

Polymorfi. Objektorienterad och komponentbaserad programmering

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Arv. Objektorienterad och komponentbaserad programmering

KLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar

Tentamen i TDP004 Objektorienterad Programmering Teoretisk del

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

5 Arv och dynamisk bindning FIGUR

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

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Imperativ programmering. Föreläsning 4

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Dynamisk bindning och polymorfism

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

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

TDDI14 Objektorienterad programmering

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Tentamen i Grundläggande programmering STS, åk 1 fredag

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

TENTAMEN OOP

TENTAMEN OOP

OOP Objekt-orienterad programmering

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

TDDC76 Programmering och datastrukturer

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

JAVA Mer om klasser och objektorientering

TENTAMEN I DATAVETENSKAP

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Föreläsning 13 Innehåll

PROGRAMMERINGSTEKNIK TIN212

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

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

Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Föreläsning 5-6 Innehåll

Övning 3. Datateknik A, Java I, 5 poäng

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Övningar Dag 2 En första klass

CHALMERS TENTAMEN. 2018/2019, lp 1 DAT050. Uno Holmer

Kursplanering Objektorienterad programmering

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

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

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

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

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

Klasser. Det är egentligen nu som kursen i programmeringsteknik börjar..., s k objektorienterad programmering.

TENTAMEN OOP

OOP Tenta

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00

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


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 i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Transkript:

UMEÅ UNIVERSITET Institutionen för datavetenskap 2000-05-28 Thomas Johansson Kalle Prorok Tentamen i Objektorienterad programmering för ingenjörer (TDBB09) 2000-05-31, kl 09.00-15.00 Lokal: Skrivsal 8, Östra Paviljongerna, Ålidbacken 23 Hjälpmedel: inga (förutom penna, suddgummi och matsäck) Kursutvärdering: Sist bland papperen finns en kursutvärderingsblankett. Ta med den hem och fyll i den. Lämna in den till Thomas när du hämtar ut den rättade tentan. Börja varje uppgift på ett nytt blad. Använd bara en sida av papperet. Skriv namn på varje blad. Lägg uppgifterna i rätt ordning. Observera att uppgifterna inte är numrerade efter svårighetsgrad och kom ihåg att även delvis lösta uppgifter kan ge poäng. Kommentera noga all källkod så att vi kan se hur du har tänkt. Skriv tydligt. Maxpoäng är 40, fördelade på 6 frågor. Betygsgränser: 5 32p 4 26p 3 20p Fråga om det är något som är oklart! Vi kommer till skrivsalen ca 10.30 och 12.00. Lycka till och trevlig sommar! Thomas Johansson Kalle Prorok tel 12 71 16 tel 12 99 96

833*,)7±22S Kalle Kunskapsförmedlare har just köpt en fin lägenhet. Hjälp honom med att konstruera ett klassdiagram rörande delar av lägenheten och lite allmänt om rumstyper! Minst 6 klasser, varav en abstrakt, och Arv, Association, Aggregat liksom några attribut och metoder ska ingå. Beskriv din notation! (5p) Lägenhet aggregat Rum Dörr öppnadörr() association Människa Möbler arv Vardagsrum Soffa Nämn 4 fördelar med att använda objektorientering! (4p) Återanvändning både mellan klassbibliotek och vid arv Modularisering det är enklare för flera grupper att jobba med projektet, hör samman med: Inkapsling en del av systemet kan byta intern representation utan att andra delar påverkas, och Produktivitet ökas när samarbetet mellan grupper förbättras Modellering systemet är en avbild av verkligheten, gör det enklare att förstå Terminologi samma begrepp används i alla led i systemutvecklingen Förändringar är enklare Underhållet förenklas 2

833*,)7±6WUXNWXUS a) Förklara vad som menas med dynamisk bindning. (2p) b) Det finns minst fyra sätt i C++ att ordna så att metoder i en klass kan komma åt attribut i en annan klass. Beskriv alla fyra sätt. (2p) c) En av metoderna är oftast den ur OO-synpunkt mest fördelaktiga, vilken, och varför? (1p) d) För de övriga tre metoderna, ange varför de är mindre bra. (1p) a) Dynamisk bindning betyder att en referens binds till ett objekt vid exekveringen, till skillnad från statisk bindning där det avgörs redan vid kompileringen vilket objektet är. En referens som är av typen Basklass kan bindas både till objekt av typen Basklass och subklasser till Basklass. b) 1) Publika attribut, 2) protected vid arv, 3) friend, och 4) get/set-metoder c) get/set-metoder, dessa bevarar inkapslingen d) De övriga bryter inkapslingen i olika hög grad, publika attribut är värst och protected minst illa (under föruttsättning att arvet är rimligt och inte bara kom till för att underlätta åtkomsten!). 833*,)7±-DYDS a) I C++ kan objekt skapas på två sätt, antingen med new eller som automatiska variabler, typ Bil b;. I Java finns bara ett sätt, vilket? b) I C++:s algoritmbibliotek används templates flitigt. I Java finns inte templates med biblioteken har ändå ungefär samma funktionalitet. Vilken OO-relation används i stället för templates? c) Kan det vara någon skillnad i antal bitar i en int i Java jämfört med C++? d) Varför behövs inte någon initieringskonstruktor i Java vid följande funktionsanrop: Bil a, b; a = funk(b); e) I Java finns något som heter AWT, vad är det? f) Kan man överlagra operatorer (typ +, -) i Java? a) new används för att skapa nya objekt i Java; Bil b skapar en referens som kan referera till en bil (men inte gör det ännu). b) Arv, och speciellt interfaces, kan användas på liknande sätt. c) Ja, det kan det. Java har alltid 32 bitar för en int, i C++ kan det vara 16 64 (eller kanske numera 128) bitar. d) Vid anropet skickas bara en referens, inte ett helt objekt, och därför behövs ingen speciell kopieringsrutin. e) Abstract Windowing Toolkit, en samling klasser för fönsterprogrammering. f) Nej, det kan man inte. En del har påpekat att + exempelvis är överlagrad, men frågan var om det gick att göra ytterligare överlagringar. + är överlagrad i de flesta programmeringsspråk (jmf 1.0 + 2.0 med 1 + 2). 3

833*,)7±.ODVVHUS Du jobbar på en av universitetets mer framstående institutioner och har tillsammans med några kollegor beslutat att anordna en musikfest. Varje festdeltagare tar med sig en CD-skiva med upp till tre låtar som bidrag, och din uppgift är att lägga samman all musik till en eller flera skivor. Eftersom du just har läst om den förträffliga objektorienteringstekniken beslutar du dig för att skissa på en klass för att lösa detta. Skriv en klass CDSkiva (som representerar ett antal låtar, max 25 stycken) med konstruktor, initieringskonstruktor, additionsoperator och tilldelningsoperator (=). Konstruktorn skall ta som argument den maximala inspelningstiden på skivan i fråga (i sekunder). Additionsoperatorn skall lägga ihop två skivor, dvs skapa en ny skiva som innehåller alla låtar från båda skivorna. Om låtarna inte ryms (fler än 25 totalt eller för lång speltid) skall ett undantag genereras. Utskrift skall också gå att göra, med <<. Utskriften skall innehålla titlarna på skivan. Dessutom skall det finnas en medlemsfunktion int nymelodi(string namn, int speltid) som lägger in en låt på en skiva. Speltiden anges i sekunder. Funktionen skall returnera antalet sekunder som finns kvar, och 1 om låten inte rymdes. Du kan räkna med att det finns max 25 låtar på en CD. Följande program skall fungera: #include <iostream.h> #include CDSkiva.h void main(void) { CDSkiva kalle(74 * 60); // 74 minuters speltid kalle.nymelodi( Mer Jul, 210); kalle.nymelodi( Min Piraya, 235); kalle.nymelodi( Anslagstavlan, 35); CDSkiva musikfest(kalle); CDSkiva thomas(74 * 60); thomas.nymelodi( Rockodile Krock, 250); thomas.nymelodi( Camarillo Brillo, 550); thomas.nymelodi( Paradise by the dashboard ligth, 830); 4

musikfest = musikfest + thomas; } cout << Innehållsförteckning: << musikfest << endl; / VQLQJVI UVODJ 2EVHUYHUDDWWMDJLQWHNXQQDWSURYN UDGHWWDSJDSUREOHPPHG PLQ%RUODQG&GRFNJnUSURJUDPPHWJHQRPNRPSLODWRUQ LQFOXGHFVWULQJK! LQFOXGHLRVWUHDPK! FODVV&'6NLYD SULYDWH LQWPD[WLG LQWKLWWLOOV7LG LQWDQWDO7LWODU VWULQJWLWODU>@DYGUDJRPODJULQJVXWU\PPHVDNQDV LQWVSHOWLG>@ SXEOLF &'6NLYDLQWPD[WLG 9DQOLJNRQVWUXNWRU WKLV!PD[WLG PD[WLG KLWWLOOV7LG DQWDO7LWODU &'6NLYDFRQVW&'6NLYD VNLYDLQLWLHULQJVNRQVWUXNWRU WKLV VNLYD XWQ\WWMDURSHUDWRU a&'6nlyd WHVWHQSnDWWWLGHQLQWHEOLUI UVWRUNDQJ UDVKlUPHQGHW luidnwlvnwelwwuhdwwj UDGHWYLGWLOOGHOQLQJHQ GnOLJVSHFLWHQWDQ DYGUDJRPLQJHQWHPSYDULDEHOILQQVPHG &'6NLYDRSHUDWRU&'6NLYD E DE LIDQWDO7LWODUEDQWDO7LWODU! WKURZ) UPnQJDWLWODU &'6NLYDWHPSWKLV J UHQNRSLDDYYlQVWHUOHGHW IRULQWL LEDQWDO7LWODUL LIWHPSQ\0HORGLEWLWODU>L@EVSHOWLG>L@ WKURZ) UOnQJVSHOWLG 5

UHWXUQWHPS &'6NLYD RSHUDWRU &'6NLYD E LIWKLV EDYGUDJRPGHQQDUDGJO PWV RPWLGHQSnDLQWHUlFNHUWLOOD E LIEKLWWLOOV7LG!PD[WLG WKURZ) UOnQJVSHOWLG DQWDO7LWODU EDQWDO7LWODU KLWWLOOV7LG PD[WLG IRULQWL LDQWDO7LWODUL WLWODU>L@ EWLWODU>L@ VSHOWLG>L@ EVSHOWLG>L@ UHWXUQWKLVDYGUDJRPGHQQDUDGVDNQDV LQWQ\0HORGLVWULQJWLWHOLQWWLG LIKLWWLOOV7LGWLG!PD[WLGUHWXUQ LIDQWDO7LWODU UHWXUQ DQWDO7LWODU WLWODU>DQWDO7LWODU@ WLWHO VSHOWLG>DQWDO7LWODU@ WLG KLWWLOOV7LG KLWWLOOV7LGWLG UHWXUQPD[WLGKLWWLOOV7LG IULHQGRVWUHDP RSHUDWRURVWUHDP RV&'6NLYDFG RV'HVVDWLWODUILQQVSnVNLYDQHQGO IRULQWL LFGDQWDO7LWODUL RV7LWHOFGWLWODU>L@ RVWLG>VHNXQGHU@FGVSHOWLG>L@HQGO UHWXUQRV DYGUDJRPGHQQDUDGJO PWV 'HVVXWRPEOLUGHWDYGUDJRPQnJRQPHGOHPVIXQNWLRQXWHOlPQDWV *O PGD RFKWHFNHQKDUPDUNHUDWVGlUMDJVHWWIHOHWPHQ 6

OHGHULQWHWLOOQnJRWSRlQJDYGUDJLQWHKHOOHUYDQOLJD V\QWD[IHOVRPJO PGDVHPLNRORQRVY 833*,)7±67/S Ryska Posten (RRRP) har tänkt virtualisera sig så därför ska alla frimärken säljas ut. Man får teckna sig för 1 frimärke och priset kommer att bli mellan 70 och 92 rubel. Priset sätts vid teckningstillfället beroende på efterfrågan enligt följande nykapitalistiska formel: pris = 70.0 + 44.0*abs((antaltecknade-500000.0)/1000000.0) och det finns en miljon frimärken till salu. Man anger till vilket högsta pris man vill köpa och kontonummer som beloppet ska dras ifrån före den 8 juni och efter detta och fram till den 15 juni beräknas priset (man har icke-thomas datorer av märket dull superslow med macrohard os) och sedan dras beloppet från konton hos de som köpt. Ryska personer har lustiga kontonummer som de känner till. Följande program har den ryska överhögheten skrivit: Posta ruski; vector<kundski> allihopi; typedef vector<kundski>::iterator iv; void main(int argc,char*argv[]) { while (todayski() < junski8) // redan klart i ryska { // klassbiblioteket int maxbeloppski, kontski; cout << Vilki belopski? ; cin >> maxbeloppski; cout << Från vilket kontski? ; cin >> kontski; Kundski k(maxbeloppski,kontski); allihopi.push_back(k); } while (todayski() <= junski15) // klart enl ovan for (iv p = allihopi.begin();p < allihopi.end(); p++) if (!p->boughtski() && p->maxbetalski() >= ruski.frimarkprisi()) ruski.tekni(p->buyskikonto())); } ruski.tainpengarna(); // dra från alla konton efter 15 juni Skriv klasserna Posta och Kundski och ev fler så att det fungerar innan den 1 juni så får du en datja annars behöver du en mycket tjock tröja. Du kan anta att todayski(), junski8 resp 15 fungerar och att uttag görs via bel = 7

bankiruski.gehit(belopp,konto); Antalet Kundski är en statshemlighet så du måste använda STL (Statliga Templaski Libresski). (För övrigt blir frimärkena värdelösa efter den 15:e juni.) Kommentarer: Fick bara teckna en gång, vilket löses via nödlösning (sådana designfel är tyvärr vanliga i verklig kod). En iterator bör testas med!= istf < (som i p < allihopi.endi()) för att klara listor etc också. Vanliga fel: Ej lagrat pris vid köptillfälle 1p, Inga kommentarer 0.5p. Nästan ingen har tänkt på namespaces och några har undvikt STL. LQFOXGHLRVWUHDPK! LQFOXGHYHFWRUK! *LYHW FODVV%DQN SXEOLF LQWJH+LWLQWEHOLQWNWR FRXW8WWDJEHO5XEHOIUnQNWR UHWXUQEHO EDQNL5XVNL LQWWRGD\VNL) UGHEXJlQGDPnO FRXW'DWXPL-XQL"LQWUHWFLQ!!UHWUHWXUQ UHW LQWMXQVNL 1nJRW) UHQNODW LQWMXQVNL / VQLQJ FODVV7UDQV$NW+nOOLKRS QVNDWWHFNQDWEHORSSPHGNRQWRQU SXEOLF LQWEN 7UDQV$NWLQWEHOLQWNWREEHONNWR FODVV3RVWD YHFWRU7UDQV$NW!NRQWRQDOODVRPWHFNQDWVLJ VWDWLFLQWEHO SXEOLF IULHQGYRLGNDPPD+HP7UDQV$NW W GRXEOHIULPDUN3ULVL UHWXUQDEVNRQWRQVL]H YRLGWD,Q3HQJDUQDEHO IRUBHDFKNRQWRQEHJLQNRQWRQHQGNDPPD+HP FRXW5XEEHOLQWDJHW YRLGWHNQLLQWNWRFRXWNWR NRQWRQSXVKBEDFN7UDQV$NWIULPDUN3ULVLNWR LQW3RVWDEHO 8

YRLGNDPPD+HP7UDQV$NW W(MQ GYlQGLJ%DUDI UDWWYLVD YDGVRPKlQGHU 3RVWDEHO EDQNL5XVNLJH+LWWEWN FODVV.XQGVNL LQWEHW9DGPDQlUYLOOLJDWWEHWDOD LQWNRQWR ERROEX\HGInUEDUDWHFNQDHQJnQJ SXEOLF.XQGVNLLQWELQWNEHWENRQWRNEX\HGIDOVH LQWPD[EHWDOVNLUHWXUQEHW ERROERXJKWVNLUHWXUQEX\HG LQWEX\VNLNRQWREX\HG WUXHUHWXUQNRQWR2EV VLGRHIIHNW1 GO VQ 833*,)7±7HPSODWHVS Implementera en template som lagrar/hämtar dataposter via en nyckel på valfritt sätt. Maximala antalet poster anges vid användning av templaten. Nycklarna antas vara unika. template<class Key, class Data, int max=10> class Datalager { public: Datalager(); ~Datalager(); void lagra(const Key& k,const Data& d) throw(char*); // om fullt Data *finn(const Key& k); // returnerar 0 om nyckeln // ej finns private: // implementeras av dig samt medlemsfunktionerna ovan }; Exempel på användning: Datalager<long,int,60> tentares; tentares.lagra(690106, 32); tentares.lagra(740219, 30); long pnr; cout << "Födelsedatum? "; cin >> pnr; int *d = tentares.finn(pnr); if (d) cout << *d << poäng. ; else 9

cout << "Hittar ej"; På den här uppgiften bör syntaxen vara hyfsat rätt. WHPSODWHFODVV.H\FODVV'DWDLQWPD[!FODVV'DWDODJHU SXEOLF 'DWDODJHUL[ YRLGODJUDFRQVW.H\ NFRQVW'DWD GWKURZFKDU 'DWDILQQFRQVW.H\ N'HIHMGLUHNWLNODVVGHNO S SULYDWH.H\VNH\V>PD[@9HFWRUKDGHYDULWHQElWWUHO VQXWDQ PD[VWRUOHN 'DWDVGDWDV>PD[@HOOHUDWWEULOMHUDPHGQHZGHOHWH LQWL[ WHPSODWHFODVV.H\FODVV'DWDLQWPD[! YRLG'DWDODJHU.H\'DWDPD[!ODJUDFRQVW.H\ NFRQVW'DWD GWKURZFKDU LIILQQNWKURZ)LQQVUHGDQ.ROODHYI U VlNHUKHWVVNXOO LIL[PD[ VNH\V>L[@ N VGDWDV>L[@ G HOVHWKURZ2YHUIORZLQODJUD WHPSODWHFODVV.H\FODVV'DWDLQWPD[!'DWD 'DWDODJHU.H\'DWDPD[!ILQQFRQVW.H\ N IRULQWL LL[L LIN VNH\V>L@YDQOLJWDWWVNULYD S UHWXUQ VGDWDV>L@9DQOLJWDWWJO PPD S UHWXUQ < SLUT PÅ UPPGIFTER > 10