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

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

TDDC76 - Programmering och Datastrukturer

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

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

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

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

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

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

Dynamisk bindning och polymorfism

Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning:

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

Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010

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

DD2387 Programsystemkonstruktion med C++ Tentamen 2

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

Innehåll. Pekare Exempel

Programmering B med Visual C

Tentamen EDAF30 Programmering i C++

Innehåll. Pekare Exempel

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

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

5 Arv och dynamisk bindning FIGUR

Introduktion till arv

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

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

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

Tentamen Objektorienterad Programutveckling med C++

Tentamen i TDP004 Objektorienterad Programmering Teoretisk del

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

Minnestilldelning (allokering) och frigörande (avallokering) av minne

Programsystemkonstruktion med C++

Övriga byggstenar. Övriga byggstenar. Några tips under programutveckling. Beroenden Pekare till funktioner Typkonvertering

Att använda pekare i. C-kod

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

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

SP:PROG3 HT12 Tenta

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.

Kapitel 3. Synlighet. Kapitel 3 - Klassanvändning, operatorer och pekare. Synlighet

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Övning 4. Arv och andra relationer

TDDC76 - Programmering och Datastrukturer

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

Synlighet. Namespace Scope-operatorn Klasser Vänner

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

Funktionens deklaration

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

2D1339 Programkonstruktion för F1, ht 2004

1. Klass med en dynamiskt allokerad variabel, definitionsfilen-del Klass med en dynamiskt allokerad variabel, inkluderingsfilen.

Tentamen EDAF30 Programmering i C++

Det finns många flaggor till g++,

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

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

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

Övningar Dag 2 En första klass

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Tisdagen den 28 oktober 2014, 08:00-12:00

Klasser. Kapitel 2. Kapitel 2 - Klasser, medlemmar och arv. Klasser. Klasser Medlemmar Arv

Problemet. Vi har sett att vi kan ersätta de metoder vi ärver från överklassen med egen funktionalitet (polymorfism)

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

Tillämpad programmering

OOP Tenta

Tillämpad programmering

Föreläsning 8: Exempel och problemlösning

TDIU01 - Programmering i C++, grundkurs

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner


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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

2D1387, Programsystemkonstruktion med C++ Johnny Bigert, Kursens hemsida:

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Kapitel 6 - Undantag

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

HI1024 Programmering, grundkurs TEN

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Tentamen i Programmering grundkurs och Programmering C

JAVA Mer om klasser och objektorientering

Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering

Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (type casts) Explicita, namngivna typomvandlingar (C++-11)

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

HI1024 Programmering, grundkurs TEN

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

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

TDDC76 Programmering och datastrukturer

Operatoröverlagring. endast operatorsymboler definierade i C++ kan överlagras = += -= *= /= %= ^= &= = <<= >>= < > <= >= ==!= && > ->*, [ ] ( )

Tentamen i Grundläggande Programvaruutveckling, TDA548

TDIU01 Programmering i C++

Collections Collections "Envisa" objekt Klasserna Bofstream och Bifstream Definition av metoder i klasserna Bifstream och Bofstream Klassen Streng

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

OOP Tentamen

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

1 Namnkontroll (NameControl)

Vad är en klass? Övning 2. Konstruktorer. ffl copy-konstruktorn tar en instans av klassen som. ffl default-konstruktorn tar inga argument och kan

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

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Innehåll. Pekare Syntax

Tentamen i Grundläggande Programvaruutveckling, TDA548

Tentamen EDAF30 Programmering i C++

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

Transkript:

TENTAMEN CD5250 Objektorienterad programutveckling med C++, 5p Max poäng: 40 Betygsgränser: 3: 20 4: 28 5: 36 Datum: 1999-06-01, Tid: 14:00-19:00 Ansvarig: Ivica Crnkovic Upp till 5 poäng kan komma från laborationerna och projektet. Minst 18 poäng måste samlas från tentamen. Tillåtna hjälpmedel: Inga Observera: - Alla blad skall förses med namn och personnummer. - Lös endast en uppgift per blad. - Skriv endast på framsidan av varje blad. - Om förutsättningar saknas skall rimliga antaganden göras. Lycka till! CD5250 Objektorienterad programutveckling med C++ Sida 1 (5)

Uppgift 1, 5 poäng 1.1 Vilka definitioner är felaktiga? Rätta dem. 1. int rep = 200, per = 100; 2. double salary = wage = 99.99; 3. cin >> int input_value; 4. int i = 100; int k = i + 10; 5. char ref&; 1.2 Vilka fel finns det i klassdefinitionen? Skriv den rätta lösningen: class Sphere int x, y; int r; static const double PI = 3.14; Sphere( int xr = 0, int yr = 0, int rad = 0) : x(xr), y(yr), r(rad)} double volume() const; void setradius( int newradius): r(newradius) } void newposition(int xr, int yr) x = xr; y = yr; } 1.3 Beskriv betydelsen av följande const definitioner: 1. const int mydog = newdog; 2. class A void print() const; A& operator= (const A&); 1.4 Förklara begreppen: - virtuell funktion (virtual function) - ren virtuell funktion ( pure virtual function) - virtuell destruktor (virtual destructor) CD5250 Objektorienterad programutveckling med C++ Sida 2 (5)

Uppgift 2, 6 poäng Vilken utskrift ger följande program: #include <string.h> #include <iostream.h> class Fordon Fordon () cout << "Fordon" <<endl; } ~Fordon() cout << "~Fordon" << endl;} virtual void info() cout << "Info Fordon " << endl; } class Motorfordon : public Fordon Motorfordon(char n): namn(n) cout << "Motorfordon: " << namn << endl; } ~Motorfordon() cout << "~Motorfordon: " << namn << endl ; } void info()cout << "Info Motorfordon: " << namn << endl; } class Personbil : public Motorfordon Personbil(char n) : Motorfordon(n), namn(n) cout << "Personbil: " << namn << endl;} ~Personbil() cout << "~Personbil: " << namn << endl;} void info() cout << "Info Personbil: " << namn << endl; } class Buss : public Motorfordon Buss(char n) : Motorfordon(n), namn(n) cout << "Buss: " << namn << endl;} ~Buss() cout << "~Buss: " << namn << endl;} void info() cout << "Info Buss: " << namn << endl; } void main() cout << "------------------- 1" <<endl; Fordon fordon; cout << "------------------- 2" <<endl; Motorfordon motorfordon( A ); cout << "------------------- 3" <<endl; Personbil personbil( B ); cout << "------------------- 4" <<endl; Buss buss1( C ); cout << "------------------- 5" <<endl; Fordon *fp1, *fp2; cout << "------------------- 7" <<endl; fp1 = &buss1; cout << "------------------- 8" <<endl; fp1->info(); cout << "------------------- 9" <<endl; fp2 = new Personbil( D ); cout << "-------------------10" <<endl; fp2->info(); cout << "-------------------11" <<endl; delete fp2; cout << "-------------------12" <<endl; } CD5250 Objektorienterad programutveckling med C++ Sida 3 (5)

Uppgift 3, 6 poäng 1. Vilken ändring kommer att ske i programutskriften från uppgift 2 om nyckelordet "virtual" tas bort från medlemsfunktionen info i klassen Fordon? 2. Ändra programmet från uppgift 2, så att programmet automatiskt räknar hur många Fordonsobjekt (inklusive alla subobjekt) som existerar. Main-programmet skall inte ändras, och inga globala variabler skall användas. Skriv en ny funktion antalfordon i klassen Fordon, för att visa hur många Fordon objekt det finns. Det måste vara möjligt att anropa funktionen även om ingen Fordon-instans existerar. Uppgift 4, 10 poäng Definiera en klass Matris. Matrisens element är av typen float. Matrisens dimension ( r- antal rader och k - antal kolumner) definieras vid skapandet av ett Matris-objekt. Då allokeras också minnet för elementen (en array med r*k float element). Matris-objektet innehåller en pekare till det allokerade minnet. Vilka är de medlemsfunktioner som är absolut nödvändiga för ett sådant typ av objekt? Skriv deras deklaration och deras implementation. Deklarera dessutom följande operatorer för klassen: +=, +, -, ()och <<. Implementera +=, + och (). För de som har glömt vad en matris är: M= a 11 a 12 a 13 a 14... a 1k a 21 a 22 a 23 a 24... a 2k... a r1 a r2 a r3 a r4... a rk Summan av två matriser A och B är en matris M, där varje element är summan av motsvarande element från A och B, dvs. m ij = a ij + b ij. Antal rader och kolumner i båda matriser måste vara lika. Index-operatorn () skall retunera ett element från matrisen och skriva ett element i matrisen. Följande programavsnitt skall fungera: Matris M1(10,20), M2(10,20); for (int i =1; i<=10; i++) for (int j=1; j <= 20; j++) M1(i,j) = i + j + 1.5; Matris M3 = M1; M3(2,6) = 1.4; M2 = M1 + M3; M3 += M2; // ekvivalent till M3 = M3 + M2 CD5250 Objektorienterad programutveckling med C++ Sida 4 (5)

Uppgift 5, 9 poäng Man har lagrat information om ställningen i en fotbollsserie i en fil. För varje lag i serien finns en post i filen. En post innehåller: Lagets namn Lagets poäng Antal gjorda mål Antal insläppta mål (30 tecknen) Skriv ett program som läser filen och skriver ut posterna till standard output. Använd objektorienterad stil, dvs. definiera en klass som motsvarar posten, skriv << och >> operatorerna och använd dem för att läsa och skriva posterna. Input-filnamnet specificeras som första parameter till programmet. Uppgift 6, 4 poäng Betrakta följande kodavsnitt: Animal *aptr; Animal a; Dog d; Cat c; Fish f; aptr =&a; aptr =&d; aptr =&c; aptr =&f; När denna kod körs så skall följande utskrift erhållas: Can t speek Wouf Mjau Can t speak Implementera klasserna Animal, Dog, Cat och Fish så att detta stämmer. CD5250 Objektorienterad programutveckling med C++ Sida 5 (5)