Tentamen Objektorienterad Programutveckling med C++



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

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

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

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

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

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

Grundläggande programmering med C# 7,5 högskolepoäng

DD2387 Programsystemkonstruktion med C++ Tentamen 2

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

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

Tentamen EDAF30 Programmering i C++

Arv bakgrund (kap. 9)

Tentamen i DD2387 Programsystemkonstruktion med C++

Tentamen EDAF30 Programmering i C++

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Tentamen EDAF30 Programmering i C++

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

TDIU01 - Programmering i C++, grundkurs

OOP Tentamen

Tentamen i TDP004 Objektorienterad Programmering Teoretisk del

TDIU01 - Programmering i C++, grundkurs

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

OOP Omtenta

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

OOP Tenta

OOP Tentamen

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

TDIU01 - Programmering i C++, grundkurs

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

Generell (template) programmering. Effektiv C++ Slutliga tips Genomgång av gammal tenta. Daniel Aarno Allt som fungerar som x ÄR x

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

TDIU01 (725G67) - Programmering i C++, grundkurs

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

Tentamen i Programmeringsteknik I

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

TDIU01 - Programmering i C++, grundkurs

Introduktion till arv

Tentamen C++-programmering

TENTAMEN OOP

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 In- och utmatning. 5 Operatoröverlagring. 6 namnrymder (namespace)

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 Operatoröverlagring. 5 In- och utmatning. 6 namnrymder (namespace)

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I

Tentamen *:58/ID100V Programmering i C Exempel 3

PROGRAMMERINGSTEKNIK TIN212

TDIU01 - Programmering i C++, grundkurs

7,5 högskolepoäng. Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: Lycka till! /Peter & Petter

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Tentamen i DD2387 Programsystemkonstruktion med C++

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

TDDC76 - Programmering och Datastrukturer

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

Tentamen EDAF30 Programmering i C++

HI1024 Programmering, grundkurs TEN

OOP Tentamen

TDDC76 - Programmering och Datastrukturer

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

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

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

Det finns många flaggor till g++,

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

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

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

C++ Slumptalsfunktioner + switch-satsen

TDDC76 - Programmering och Datastrukturer

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

Föreläsning 13 Innehåll

TDIU01 / 725G

TENTAMEN. Luleå tekniska universitet

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Objektorienterad programmering i Java

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

OOP Omtenta

TDIU01 Programmering i C++

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

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

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

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

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

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

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

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

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

5 Arv och dynamisk bindning FIGUR

TDDC76 - Programmering och Datastrukturer

Föreläsning 3-4 Innehåll

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

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

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Tentamen *:85/2I4123 C

Tentamen, EDAA10 Programmering i Java

Transkript:

Tentamen Objektorienterad Programutveckling med C++ Datum 2001-06-08. Tid 14:30-19:30 Ordinarie Tentamen CD 5250 Ansvarig: Martin Skogevall Omtentamen CD 5250 Ansvarig: Daniel Flemström Omtentamen CD 5050 Ansvarig: Daniel Flemström Max Poäng: 40 (preliminär): Betygsgränser (preliminära): 3: 20 4: 28 5: 36 Minst 18 poäng måste samlas från tentamen. Därutöver adderas eventuella bonuspoäng för att ge den slutgiltiga poängsumman. Tillåtna hjälpmedel: Inga Observera: Alla blad skall vara försedda med namn och personnummer uppe i högra hörnet. Lös endast en uppgift per blad. Om du skriver på baksidan av ett blad, markera detta genom att skriva v.g vänd längst ned på den första sidan av pappret. Om förutsättningar saknas skall rimliga antaganden göras, OBS Skriv ned vad du antagit! Naturligtvis skall du använda standardbiblioteket när så är lämpligt. Kommer du inte ihåg exakt vad metoderna heter skriver du ditt antagande i marginalen. Lycka till, och ha en skön sommar! Martin och Daniel. 1/7

1. Finn fel ( 5p ) Givet följande klasser, vad är det som inte stämmer? Rätt ger +1, fel ger -1 poäng. #include <string.h> using namespace std; class CHusdjur CHusdjur(string n):name(n),no_claws(10),no_ears(5) int no_claws; protected: int no_ears; string name; class CKatt: public CHusdjur CKatt():CHusdjur() void blisnaell() no_claws = 0; class CHund:public CHusdjur CHund() void inkallning() no_ears = 0; 2. Allmänkunskap ( 4p ) Ange något alternativt sätt att deklarera följande: ( 1p ) using namespace std; vector<int> vektor; Förklara vad this-pekaren är för något. ( 1p ) Vad innebär det att en funktion är deklarerad som friend-funktion till en klass? ( 1p ) Vid vilka tillfällen bör man använda virtuella destruktorer? Förklara varför. ( 1p ) 2/7

3. Följ programkod ( 8p ) Vad blir utskriften av följande program? (Main som du skall följa kommer längre fram) class Bil Bil(string const & owner) : m_owner(owner) cout << "Bil::Bil(owner)" << endl; Bil() : m_owner("staten") cout << "Bil::Bil()" << endl; ostream& Dump(ostream& os) os << "Bil::Dump" << m_owner << endl; return os; virtual void Speed(ostream& os) os << "Bil::Speed" << endl; string m_owner; class Volvo740 : public Bil Volvo740() Volvo740(string const & owner) : Bil(owner) ostream& Dump(ostream& os) Bil::Dump(os); os << "Volvo740::Dump" << endl; return os; virtual void Speed(ostream& os) os << "Volvo740::Speed" << endl; class LamborghiniDiablo enum Color YELLOW, WHITE, RED LamborghiniDiablo() : m_color(yellow) Color m_color; 3/7

(forts..) Main ser ut som på tabellen nedan. Du kan anta att satserna exekveras i den ordning de står. Du kan också anta att standardbibliotekets filer finns korrekt inkluderade etc. Om du anser att ingenting skrivs ut bör du kommentera vad som händer i marginalen (om du vill ha poäng). Skriv dina svar direkt i tentan. Rad Programkod Utskrift 1 Bil bil1( Blomqvist ); 2 Volvo740 bil2( Johansson ); 3 bil1.dump(cout); 4 bil2.dump(cout); 5 bil1.speed(cout); 6 bil1 = bil2; 7 bil1.dump(cout); 8 Bil * pbil = &bil2; 9 pbil->dump(cout); 10 pbil->speed(cout); 11 Bil * pbil2 = &bil2; 12 pbil2->speed(cout); 4/7

4. Stack ( 5p ) Implementera en så kallad stack. En stack är en behållare där man kan lägga till och ta bort element. Det element som tas bort är det element i behållaren som sist stoppades in. Stackar kallas även för LIFO-kö (Last In First Out). Gör så att stacken kan innehålla godtyckligt antal heltal. Följande operationer skall stacken klara av (du behöver inte kunna ta bort element): Stack s1; // s1 = [] s1.push(23); // s1 = [23] s1.push(34); // s1 = [23,34] s1.push(26); // s1 = [23,34,26] int intar[] = 1,2,3 Stack s2(intar, 3); // s2 = [1,2,3] Stack s3 = s1 + s2; // s3 = [23,34,26,1,2,3] 5. Klassdiagram ( 4p ) Rita upp ett klassdiagram av följande programkod där alla relationer mellan klasserna framgår. class Car Car(Person * owner) : m_owner(owner) void Start(); Engine m_engine; Person * m_owner; class Ford : public Car Ford(Person * owner) : Car(owner) int m_rustlevel; class Person Person(string const & name) : m_name(name) string m_name; class Engine Engine(int valves = 4) : m_valves(valves) m_horsepowers = 90; int m_valves; int m_horsepowers; 5/7

6. Bokning ( 10p ) Du skall göra ett mycket enkelt bokningsprogram för att hålla reda på sittplatser i ett flygplan. Det finns dock inga krav på att passagerarna skall kunna välja plats, folk blir helt enkelt tilldelade nästa tillgängliga plats. Programmet skall kunna läsa in respektive spara ned bokningslistor för flygplan på diskett. Programmet skall dessutom kunna läsa in och skriva ut listorna via tangentbord och skärm. Implementera två klasser, Chair och Aircraft. Chair skall innehålla två datamedlemmar, stolsnummer och personnamn. Chair skall inte ha några vanliga metoder för att utifrån kunna modifiera eller läsa datamedlemmar, istället skall all förmedling av datamedlemmar gå via >> och << operatorerna. Samma kod skall fungera för att läsa från både tangentbord och fil. Minnesläckage får inte förekomma. Programmet skall inte behöva bli mer än 50 rader långt. (Om ni inte implementerar operatorsöverlagringen för << respektive >>, utan löser uppgifter på annat sätt, ger det 5 poäng avdrag.) Main är redan implementerad och ser ut som nedan: void main() Aircraft ac; // Läs in bokningslista ifstream is("c:\\planet.txt"); is >> ac; is.close(); // Skriv ut lista med alla bokningar cout << ac; // Läs in bokningar från tangentbordet // Fortsätt tills användaren trycker Ctrl-Z (EOF) cout << "Mata in [namn] [stolsnummer]. << Enter mellan varje rad. Ctrl Z när du är klar" << endl; cin >> ac; // Spara ned bokningslista på disk ofstream of("c:\\planet.txt"); of << ac; of.close(); Bokningslistan som sparas på diskett skall ha ett liknande utseende som exemplet nedan. Martin 42 Daniel 12 Gustav 28 Silvia 29 6/7

7. Ändra? ( 4p ) Vad skall man göra för förändringar för att programmet skall fungera så som programmeraren ursprungligen tänkte sig? Programmet skall skriva ut Using permissions for File? #include <string> #include <vector> #include <iostream> using namespace std; class Permission int type; class AccessControlList AccessControlList(int size) m_permissions.reserve(size); void PrintPermissions(ostream & os) const os << ToString(); string ToString() const return Abstract ; vector<permission *> m_permissions; class FileACL : public AccessControlList FileACL() : AccessControlList(0) string ToString() const return File ; void main() FileACL facl; statistics(facl); void statistics(accesscontrollist const & acl) cout << Using permissions for ; acl.printpermissions(cout); cout << endl; 7/7