Hallo,
vielleicht ja interessant fuer diejenigen, die die Klausur noch vor sich haben, was dieses Mal so dran kam:
1. Fragenkomplex: hatte Hoffman gesagt, dass 40% aus seinen Musterfragen kommen. Das kann auch so ungefaehr hingehauen haben. Was wohl immer drin ist, ist Stack und Heap erklaeren und Vorteile von Objektorientierter Programmierung. Ansonsten war das ziemlich auf der Schiene wie in den Musterklausuren, allerdings nicht die selben Aufgaben, nur analoge Laenge und Komplexitaet (Tipp: In C++-AG in der VH (die fuer die man sich nochmal extra anmelden muss und die schwer zu finden ist) ist auch noch eine Musterklausur in der AG Ablage)
2. Die 2. Aufgabe ist immer was mit C-artiger Programmierung, ohne Objektorientierung und mit Datei I/O - habe ich mir nicht angeschaut, d.h. kann ich nix zu sagen.
3. Die 3. Komplexaufgabe war mit Objektorientierung und ohne Vererbung. Das Thema war ein 17 und 4 Kartenspiel mit 2 Klassen "Karte" und "Kartenspiel´". Es waren Konstruktoren zu programmieren - z.B. fuer das Kartenspiel. Es war auch ein Enum anzulegen. Dann war ein "Mischen"-Algorithmus zu programmieren, der im Endeffekt auf einem Tauschen-Algorithmus beruht. Und am Schluss ein Auswertung und Ausgabe, wer gewonnen hat.
4. Bei der 4. Komplexaufgabe kam dann Vererbung dran. Thema waren Tiere - Oberklasse Haustier, darunter Hund, Katze (o.ae.) und Vogel. Besonders abegefeimt war, dass es bei den Voegeln noch eine weitere Unterklasse gab, naemlich Wellensittich (o.ae.) und Kanarienvogel. Das war der eigentliche Trick an der Aufgabe. Und dann war zu beachten, dass eine static Klassenvariable drin war und abstrakte Methoden (sprechen - das war bei Hund als bellen und bei den Voegeln als zwitschern realisiert).
Ansonsten war das aber recht straightforward - Klassen programmieren (Trick eben: Unter-Untervererbung, static, virtual), Konstruktoren Und die Friend-Methode operator<< kam natuerlich auch dran.
CPP01 Klausur am 13.11. in Pinneberg
Hallo miteinander,
nachdem die Klausur überstanden ist und ich - juhuu - durch gekommen bin, poste ich hier mal so alles, was ich mir darüber gemerkt hab (mein Vorredner hat ja schon einen Großteil genannt - es war die gleiche Prüfung wie in Pinneberg):
Total viel Detailfragen kamen aus diesem Fragenkatalog der Arbeitsgruppe:
- Was sind Member-Variablen/Member-Methoden und was KlassenVar/Methoden?
Wie werden sie vereinbart (also deklariert)?
Warum kann man eine KlassenVAR nicht im Destruktor initialisieren?
- zur Übergabe eines strings an eine Funktion stehen folgende Funktionen zur Verfügung:
void ausgeben(string s) und void ausgeben (string & s)
Was ist der Unterschied und was sind Vorteile bei &?
- Anlegen int-Variable mit Inhalt 5 auf Stack - int-Variable mit Inhalt 25 auf Heap
Wie lange leben Stack/Heap/Werte? Was ist Garbage?
- cout << 47 << 11 Was ist zu beachten, wenn man 2 Objekte in der Form ausgeben lassen möchte?
- Mindestens 3 Ziele OOP
- Was bedeutet "this->" und "A" - erklären mit dem *-Operator
- Runden auf 2 Stellen programmieren
- int zahl(double, double) double zahl(double, double) => warum klappt überladen nicht?
- Warum "motzt" der Compiler, wenn eine float Zahl 3.14 einer long int-Zahl zugewiesen wird? Wie kann man das verhindern?
- mit einer for-Schleife double umsatz[12] deklarieren, dann die einzelnen Umästze summieren+ausgeben
ausserdem durchschnittlichen Jahresumsatz berechnen+ausgeben
Komplex I:
Schere(s) Stein(t) Papier(p)-Spiel
Funktion: char computerWaehlt() - hier mit Hilfe von rand s,t oder p zurückgeben (z.B. mit rand()%3 0 => s 1 => p 2 => t)
Funktion: int deinGewinn(char spieler, char computer) gibt -1 zurück, wenn spieler verloren, 1 wenn spieler gewonnen, 0 unentschieden (Papier wickelt Stein ein, Schere schneidet Papier, Stein stumpft Schwere)
Funktion: void spielstand(int gewinn, int verlust, int unentschieden) die am Ende aufgerufen wird und folgende Ausgabe auf dem Bildschirm UND in Datei ("Ergebnis.txt") macht:
Spielstand:
x Spiele gewonnen
x Spiele verloren
x Spiele unentschieden
x Spiele gesamt
mit Datei öffnen-überprüfen ob Datei da, close
im main:
int-VAR für anzahlGewonnen/Verloren/Unentschieden anlegen
char-VAR für Eingabe des Spielers (p,s,t)
solange NICHT 'e' eingegeben wird:
Eingabe vom Spieler anfordern
computerWaehlt,
deinGewinn aufrufen
mit switch-case Rückgabe 0, 1, -1 auswerten und entsprechende VAR hochzählen
wenn 'e' dann beenden => Funktion spielstand() ausgeben nicht vergessen
KOMPLEX II:
17+4-Spiel - war mir ehrlich gesagt "zu komplex" =)
KOMPLEX III:
Vererbung Haustier
o Klasse Haustier
- friend ostream & operator<< (ostream & aus, Haustier* h)
- name: string
- gewicht: float
+ KlassenVAR int anzahl
+ virtuelle Methode sprechen(): string
o Klasse Hund erbt von Haustier
+ sprechen(): string
o Klasse Vogel erbt von Haustier (hat sonst NIX!)
o Klasse Kanarienvogel erbt von Vogel
+ sprechen(): string
o DCL der Klasse Haustier mit Attributen, Methoden, Konstruktor
o DCL Hund mit Konstruktor ect
o DCL Vogel+Kanarienvogel
o Implementieren Hund (v.a. Konstruktor mit Aufruf OberklasseKonstruktor)
o Implementieren Vogel+Kanarienvogel
o Implementieren Haustier
- KlassenVAR anlegen und INIT
- Konstruktor
- friend-Methode: friend ostream & operator<< (ostream & aus, Haustier* h)
Name Tier, Gewicht (wenn < 1, dann in g ausgeben sonst in kg!),
- sprechen()-Methode
Bsp: Bello, 50 kg kann bellen
Hansi, 100 g kann zwitschern
o Globale Methode ostream&, damit ein Vektor mit Haustier*-Objekten ausgegeben werden kann (nicht friend!)
So, dass war jetzt erst mal mein gedanklicher Abschluß mit C++ - euch wünsch ich noch viel Spaß dabei und drück euch die Daumen ....
Viele Grüße
Silvie
nachdem die Klausur überstanden ist und ich - juhuu - durch gekommen bin, poste ich hier mal so alles, was ich mir darüber gemerkt hab (mein Vorredner hat ja schon einen Großteil genannt - es war die gleiche Prüfung wie in Pinneberg):
Total viel Detailfragen kamen aus diesem Fragenkatalog der Arbeitsgruppe:
- Was sind Member-Variablen/Member-Methoden und was KlassenVar/Methoden?
Wie werden sie vereinbart (also deklariert)?
Warum kann man eine KlassenVAR nicht im Destruktor initialisieren?
- zur Übergabe eines strings an eine Funktion stehen folgende Funktionen zur Verfügung:
void ausgeben(string s) und void ausgeben (string & s)
Was ist der Unterschied und was sind Vorteile bei &?
- Anlegen int-Variable mit Inhalt 5 auf Stack - int-Variable mit Inhalt 25 auf Heap
Wie lange leben Stack/Heap/Werte? Was ist Garbage?
- cout << 47 << 11 Was ist zu beachten, wenn man 2 Objekte in der Form ausgeben lassen möchte?
- Mindestens 3 Ziele OOP
- Was bedeutet "this->" und "A" - erklären mit dem *-Operator
- Runden auf 2 Stellen programmieren
- int zahl(double, double) double zahl(double, double) => warum klappt überladen nicht?
- Warum "motzt" der Compiler, wenn eine float Zahl 3.14 einer long int-Zahl zugewiesen wird? Wie kann man das verhindern?
- mit einer for-Schleife double umsatz[12] deklarieren, dann die einzelnen Umästze summieren+ausgeben
ausserdem durchschnittlichen Jahresumsatz berechnen+ausgeben
Komplex I:
Schere(s) Stein(t) Papier(p)-Spiel
Funktion: char computerWaehlt() - hier mit Hilfe von rand s,t oder p zurückgeben (z.B. mit rand()%3 0 => s 1 => p 2 => t)
Funktion: int deinGewinn(char spieler, char computer) gibt -1 zurück, wenn spieler verloren, 1 wenn spieler gewonnen, 0 unentschieden (Papier wickelt Stein ein, Schere schneidet Papier, Stein stumpft Schwere)
Funktion: void spielstand(int gewinn, int verlust, int unentschieden) die am Ende aufgerufen wird und folgende Ausgabe auf dem Bildschirm UND in Datei ("Ergebnis.txt") macht:
Spielstand:
x Spiele gewonnen
x Spiele verloren
x Spiele unentschieden
x Spiele gesamt
mit Datei öffnen-überprüfen ob Datei da, close
im main:
int-VAR für anzahlGewonnen/Verloren/Unentschieden anlegen
char-VAR für Eingabe des Spielers (p,s,t)
solange NICHT 'e' eingegeben wird:
Eingabe vom Spieler anfordern
computerWaehlt,
deinGewinn aufrufen
mit switch-case Rückgabe 0, 1, -1 auswerten und entsprechende VAR hochzählen
wenn 'e' dann beenden => Funktion spielstand() ausgeben nicht vergessen
KOMPLEX II:
17+4-Spiel - war mir ehrlich gesagt "zu komplex" =)
KOMPLEX III:
Vererbung Haustier
o Klasse Haustier
- friend ostream & operator<< (ostream & aus, Haustier* h)
- name: string
- gewicht: float
+ KlassenVAR int anzahl
+ virtuelle Methode sprechen(): string
o Klasse Hund erbt von Haustier
+ sprechen(): string
o Klasse Vogel erbt von Haustier (hat sonst NIX!)
o Klasse Kanarienvogel erbt von Vogel
+ sprechen(): string
o DCL der Klasse Haustier mit Attributen, Methoden, Konstruktor
o DCL Hund mit Konstruktor ect
o DCL Vogel+Kanarienvogel
o Implementieren Hund (v.a. Konstruktor mit Aufruf OberklasseKonstruktor)
o Implementieren Vogel+Kanarienvogel
o Implementieren Haustier
- KlassenVAR anlegen und INIT
- Konstruktor
- friend-Methode: friend ostream & operator<< (ostream & aus, Haustier* h)
Name Tier, Gewicht (wenn < 1, dann in g ausgeben sonst in kg!),
- sprechen()-Methode
Bsp: Bello, 50 kg kann bellen
Hansi, 100 g kann zwitschern
o Globale Methode ostream&, damit ein Vektor mit Haustier*-Objekten ausgegeben werden kann (nicht friend!)
So, dass war jetzt erst mal mein gedanklicher Abschluß mit C++ - euch wünsch ich noch viel Spaß dabei und drück euch die Daumen ....
Viele Grüße
Silvie
Also, ich muss sagen, dass die um einiges komplexer geworden sind, seit ich die CPP-Klausur hinter mich gebracht habe, aber dass Hunde jetzt sogar sprechen können find ich cool!! ;o)
Glückwunsch zur bestandenen Klausur.
Gruß
Micha
Glückwunsch zur bestandenen Klausur.
Gruß
Micha
=) Danke!
Hätt mal ne Idee für die nächste Klausur:
Erstellen sie eine Methode, die per Zufall zurück gibt, ob der Hund bellt, knurrt oder beißt - haha ...
Na gut, nich mehr drüber nachdenken -
aber ich hab heut die Klausur mal eingesehen - Herr Dr Hofmann bewertet äußerst großzügig - hier meinen Dank unbekannterweise ....
Für alle, die es noch vor sich haben: Viel Glück!
Silvie
Hätt mal ne Idee für die nächste Klausur:
Erstellen sie eine Methode, die per Zufall zurück gibt, ob der Hund bellt, knurrt oder beißt - haha ...
Na gut, nich mehr drüber nachdenken -
aber ich hab heut die Klausur mal eingesehen - Herr Dr Hofmann bewertet äußerst großzügig - hier meinen Dank unbekannterweise ....
Für alle, die es noch vor sich haben: Viel Glück!
Silvie