CPP21 TOK vom 07.10.2023

Algorithmus, Baumdurchlauf, Compiler, Interpreter...; Cobol, Pascal, C/C++, Java & Co.
Antworten
Nordmann_Loki
Mitglied
Mitglied
Beiträge: 18
Registriert: 06.02.22 13:05

Habe eben die TOK geschrieben.

Die TOK war meiner Meinung nach gut schaffbar, aaaaaaber in der Klausur waren auch Fehler, dazu aber gleich mehr.

Jeder Block gab 40 Punkte, also Detail 40 und komplex á 40.
Wie immer mussten die Detailaufgaben und 2 von 3 Komplex bearbeitet werden.

Detailaufgaben:
1) Ein UML Diagram ist gegeben
___________________________
|ARTIKEL |
|-------------------------------------------
| - artNr : int |
| - bezeichnung :string |
| - preis :double |
| - rabatt[] :double |
|------------------------------------------|
| + Artikel(nr,bez.pr) |
| + getPreis (int i) |
| + getRabatt(int i) |
|__________________________|

1.1 Member Variablen initialisieren
1.2 Konstruktor angeben
1.3 Bei der Variable Rabatt (array von double) handelt es sich um eine static Variable, diese sollte initialisiert werden mit mehreren Werten (Werte waren gegeben)

2) Schreiben sie ein UNTERPROGRAMM dass eine eingegebene Zahl (double) kaufmännisch rundet (also 2stellig) und geben sie die gerundete Zahl zurück

3) Gegeben ist eine Funktion (sinngemäß unten aufgeschrieben)
Die Funktion soll die Zahl b auf die Zahl a aufaddieren.
Warum bleibt a nach ausführen der Formel noch immer gleich ?
Wie muss die Funktion lauten um korrekt zu funktionieren?

void runden(int a, int b){
a=a+b;
}

----------------------------------------------------------
Komplexaufgaben:

Komplex1:
Die erste Aufgabe habe ich mit nicht in der tiefe angeschaut, aber gegeben war ein UML mit Person und Telefonnummer

es ging hier darum eine Art Telefonbuch anzulegen.
Eine der ersten Aufgaben war es Telefonnummern als Input anzunehmen und von Sonderzeichen zu bereinigen.


Komplex 2:
Gegeben war ein UML mit den Klassen Katalog und Artikel.

Die Klassen hatten Variablen und Methoden
ALLE Variablen waren als private definiert
Die Methoden waren public.

Hier gab es nun Aufgaben zu Artikel und Katalog.
Artikel:
1)
definieren sie die funktion "bool hatNr(int a)"
mittels eines Int Parameters wird bei einem Artikel geprüft, ob seine artikelNr mit der gegebenen int übereinstimmt.
Rückgabe sollte bool sein.

2)
definieren sie die Funktion neuerPreis(double a)
hier wird dann ein neuer Preis für die Variable preis gesetzt

3)
Schreiben sie eine Funktion die den ausgabeOperator "<<" so verändert, dass er alle variablen der Klasse Artikel ausgibt.


!!! Anmerkung.... es waren KEINE Getter und Setter gegeben, und es stand auch nichts davon geschrieben, dass man davon ausgehen kann, dass es sie gibt.
Man sollte sich hier aber bewusst sein, dass ein direkter Zugriff auf private Variablen ausserhalb der Klasse schlicht nicht möglich/erlaubt ist.
In diesem Fall habe ich dann darauf hingewiesen, da ohne setter z.b. Aufgabe 2 zum setzen eines Preises nicht möglich wäre, oder man sonst auch noch die getter und setter definieren müsste !!!

4) zu Katalog
Katalog besaß eine statische variable, diese sollte initiiert werden.

5) Katalog besaß eine Sammlung von Artikel Objekten vom typ vector
Angegeben war im UML - katalog <Artikel>
Diese Variable sollte definiert werden für die Klasse.
!!!! Es ist nur fraglich ob hier wirklich ein vector von Artikel gemeint war, oder doch eher vector <Artikel*> da man wohl eher davon ausgehen muss, dass es sich bei Artikeln um dynamische Objekte handelt.

6) definieren sie die Methode findeArtikel(int a)
Es soll hier die Sammlung der Artikel eines Katalogs durchsucht werden. Verglichen wird eine eingegebene int mit der Artikelnummer des Artikels.
Bei Übereinstimmung soll der Index des Artikels im Katalog zurückgegeben werden.
wird kein passendere Artikel gefunden soll -1 zurückgegeben werden.

!!! Dieser Aufbau spricht auch wieder für meine obige Anmerkung.
!!! Ausserdem wird im UML als returntype der Methode :Artikel angezeigt, im Text heisst es dann aber es soll der Index oder -1 sein... Hier habe ich dann um Missverständnisse vorzubeugen kommentiert auf was sich dann meine Methode beziehen wird bei der Rückgabe.

Komplex 3:
Hier war es die bekannte Aufgabe der Abstrakten Klassen von Verwertung zu Glas,Papier,....
Diese Aufgabe gibt es auch im Übungsbuch und wurde schon mehrfach erwähnt.

Aufgaben in dieser Aufgabenstellung waren (sinngemäß, hatte hier leider keine Notizen gemacht)

Verwertung
1) Oberklasse Verwertung sollte Abstrakt sein.
2) Membervariablen definieren
3) konstruktor definieren
4) Methode gibWert vom Rückgabetyp double definieren (denkt hier dran wann eine Klasse abstrakt ist)

Glas
1) definieren der Methode gibWert, dieser errechnete sich aus der Multiplikation von Menge und Preis (waren beides Variablen von Glas und nicht von Verwertung)
2) überschreiben des operators << um alle Attribute des Objektes auszugeben. Hier war dann sogar eine Methode ausgabe() vorgegeben. das Operatorüberladen sollte dann exakt das ausgeben was diese Methode ausgibt.
3) Leider nicht mehr im Gedächtniss geblieben, hatte aber einen wert von 12 p

!! Hier war die Numerierung der Aufgaben durcheinander es gab
2.1
2.2
2.2



-----------------------------------
Zusammenfassung,

Alles in allem eine gute faire Klausur, aber die Fehler und das fehlen von Informationen zwingen einen dann dazu, alles über Kommentare eintragen zu müssen, um Unklarheiten im Code zu vermeiden.

Mal sehen wie die Klausur ausfällt :-) Hoffentlich bestanden.


PS: Schaut auch im Modulbereich Ingenieur. Die müssen das Modul auch machen und waren bei den Mitschriften der Klausur fleißiger als wir IT-ler :-D
Antworten