Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
modul:m320_2024:learningunits:lu09:aufgaben:schulverwaltung [2024/09/10 15:16] – angelegt msuter | modul:m320_2024:learningunits:lu09:aufgaben:schulverwaltung [2024/09/26 10:04] (aktuell) – msuter | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== LU09.A01 - Schulverwaltung ====== | ====== LU09.A01 - Schulverwaltung ====== | ||
+ | < | ||
+ | <WRAP center round todo 60%> | ||
- | === Ziel === | ||
Sie können in einer komplexen Anwendung selbständig | Sie können in einer komplexen Anwendung selbständig | ||
* die Klassen erstellen | * die Klassen erstellen | ||
Zeile 7: | Zeile 8: | ||
* den nötigen Ablauf selbst festlegen | * den nötigen Ablauf selbst festlegen | ||
* die gefordeten Ausgaben erzeugen | * die gefordeten Ausgaben erzeugen | ||
+ | |||
+ | </ | ||
=== Vorgehen === | === Vorgehen === | ||
- | * Studieren Sie jeweils das UML-Diagramm sowie die Anweisungen im Code der zu bearbeitenden Klasse. | + | * Studieren Sie jeweils das UML-Diagramm sowie die Erklärungen |
* Halten Sie sich an die Reihenfolge bei der Erstellung der Klassen. | * Halten Sie sich an die Reihenfolge bei der Erstellung der Klassen. | ||
* Testen Sie die jeweilige Klasse, bis alle Test erfolgreich ablaufen. | * Testen Sie die jeweilige Klasse, bis alle Test erfolgreich ablaufen. | ||
Zeile 16: | Zeile 19: | ||
Es ist eine einfache Schulverwaltung gemäss folgendem Klassendiagramm zu implementieren.\\ | Es ist eine einfache Schulverwaltung gemäss folgendem Klassendiagramm zu implementieren.\\ | ||
- | ^ Version für IMS ^ Version für API ^ | + | {{:modul:m320_2024: |
- | | {{:modul:m320: | + | |
Dabei nutzen Sie Ihr Wissen zu ein- und zweiseitiger Beziehung sowie den 4 gezeigten Fällen der Referenzzuweisung. Ebenso verwenden Sie Mehrfachbeziehungen. | Dabei nutzen Sie Ihr Wissen zu ein- und zweiseitiger Beziehung sowie den 4 gezeigten Fällen der Referenzzuweisung. Ebenso verwenden Sie Mehrfachbeziehungen. | ||
- | === Ablauf=== | + | {{https://ritholtz.com/wp-content/uploads/2020/03/dontpanic.jpg?300|}} |
- | - Akzeptieren Sie das Assignment in GitHub Classroom und klonen Sie das Repository. \\ \\ | + | |
- | - Erstellen Sie die Klasse '' | + | |
- | - Testen Sie die Klasse '' | + | |
- | - Implementieren Sie die Klasse '' | + | |
- | - Testen Sie die Klasse '' | + | |
- | - Implementieren Sie die Klasse '' | + | |
- | - Testen Sie die Klasse '' | + | |
- | - Erstellen Sie eine '' | + | |
- | - Implementieren Sie die Klasse '' | + | |
- | - Testen Sie die Klasse '' | + | |
- | - Erstellen Sie eine '' | + | |
- | - Implementieren Sie die Klasse '' | + | |
- | - Testen Sie die Klasse '' | + | |
- | - Erstellen Sie nun die '' | + | |
- | === Ausgabe=== | + | ===== Vorgehen ===== |
- | Das Programm liefert | + | Die Beschreibung der Klassen und Methoden erfolgt von links nach rechts und von oben nach unten. |
- | | + | Erstellen Sie selbständig einen Plan, in welcher Reihenfolge Sie die Klassen erstellt wollen. |
- | | + | Ein paar Tipps: |
- | | + | * Es lohnt sich zunächst das Gerüst einer Klasse mit allen Methoden zu bauen. |
- | Die Ausgabe soll in etwa wie folgt aussehen:\\ | + | * Klassen die keine Referenzen zu anderen Klassen enthalten, sollten zuerst umgesetzt werden. |
- | {{:modul:m320:learningunits:lu05:aufgaben:lu03-aufg8-schulverwaltung-2.png?200|}} | + | * Versuche danach Klassen umzusetzen, bei denen die referenzierte Klasse bereits erstellt ist. |
+ | * Der Konstruktor einer Klasse sollte in der Regel zuerst erstellt werden. | ||
+ | * Danach folgen Methoden ohne Logik, z.B. '' | ||
+ | * Bei Methoden die eine Verarbeitungslogik enthalten, wird zunächst einfach ein hart codierter Returnwert zurück gegeben. | ||
+ | |||
+ | ==== Hinweise ==== | ||
+ | * Testen Sie jede Klasse/ | ||
+ | * Die Methoden '' | ||
+ | |||
+ | ==== SchoolClass ==== | ||
+ | === Konstruktor === | ||
+ | * Die Schreibweise '' | ||
+ | |||
+ | === add_student === | ||
+ | * Fügt einen Studenten in die Liste ein. | ||
+ | * Beachten Sie, dass gemäss Klassendiagramm max. 20 Studenten möglich sind. Das müssen Sie beim Zufügen von Studenten umsetzen. | ||
+ | * Beim Versuch mehr als 20 Studenten einzufügen, | ||
+ | |||
+ | === count_students === | ||
+ | * Gibt die Anzahl Studenten zurück. | ||
+ | |||
+ | === take_student(index) === | ||
+ | * Liefert den Studenten beim angegebenen Index. | ||
+ | * Bei einem ungültigen Index soll ein '' | ||
+ | |||
+ | === show_student_list === | ||
+ | * Diese Methode liefert | ||
+ | |||
+ | < | ||
+ | Max | ||
+ | Pia | ||
+ | Cem | ||
+ | </ | ||
+ | |||
+ | === show_student_report(name) === | ||
+ | | ||
+ | |||
+ | < | ||
+ | Zeugnis für: Cem | ||
+ | Mathe : | ||
+ | Deutsch | ||
+ | Turnen | ||
+ | </ | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Die Methode erzeugt selber keine Liste, sie ruft lediglich eine Methode in einem anderen Objekt auf. | ||
+ | </ | ||
+ | |||
+ | ==== Student ==== | ||
+ | === Konstruktor === | ||
+ | * Beachten Sie die Parameter und Defaultwerte. | ||
+ | === show_report === | ||
+ | Gibt die Referenz auf das '' | ||
+ | |||
+ | ==== StudentReport ==== | ||
+ | |||
+ | === Konstruktor === | ||
+ | * Die Schreibweise '' | ||
+ | |||
+ | === add_subject === | ||
+ | * Beachten Sie, dass gemäss Klassendiagramm max. 3 Fächer möglich sind. | ||
+ | * Beim Versuch mehr als 3 Fächer ('' | ||
+ | |||
+ | === take_subject === | ||
+ | * Liefert das Fach ('' | ||
+ | * Bei einem ungültigen Index soll ein '' | ||
+ | |||
+ | === show_overview === | ||
+ | * Diese Methode liefert ein Zeugnis | ||
+ | |||
+ | < | ||
+ | Zeugnis für: Cem | ||
+ | | ||
+ | Deutsch | ||
+ | Turnen | ||
+ | </ | ||
+ | |||
+ | === show_details === | ||
+ | | ||
+ | |||
+ | < | ||
+ | Fach: Mathe mit 2 Noten | ||
+ | - 1: 5.00 am 01.01.2011 | ||
+ | - 2: 3.50 am 02.02.2022 | ||
+ | | ||
+ | Fach: Deutsch | ||
+ | - 1: 5.50 am 03.03.2033 | ||
+ | - 2: 6.00 am 04.04.2044 | ||
+ | - 3: 5.00 am 05.05.2055 | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Subject ==== | ||
+ | === Konstruktor === | ||
+ | Die Schreibweise '' | ||
+ | Initialisieren Sie das Attribut als leere Liste. | ||
+ | |||
+ | === add_grade === | ||
+ | * Beachten | ||
+ | * Beim Versuch mehr als 4 Noten einzufügen, | ||
+ | * Die untere Grenze von 2 Noten müssen Sie (noch) nicht beachten. | ||
+ | |||
+ | === take_grade === | ||
+ | * Liefert die Note ('' | ||
+ | * Bei einem ungültigen Index soll ein '' | ||
+ | |||
+ | === count_grades === | ||
+ | * Gibt die Anzahl Noten ('' | ||
+ | |||
+ | === average === | ||
+ | * Die Methode berechnet den Notendurchschnitt aus allen '' | ||
+ | * Falls keine '' | ||
+ | |||
+ | === Unit tests === | ||
+ | * Testen Sie die Klasse '' | ||
+ | |||
+ | |||
+ | ==== Grade ==== | ||
+ | Die Klasse '' | ||
+ | |||
+ | === Konstruktor === | ||
+ | * Initialisieren Sie die Werte '' | ||
+ | * Achten Sie auf die Zusicherung für den Wert von '' | ||
+ | |||
+ | === date.setter === | ||
+ | <WRAP center round tip 60%> | ||
+ | Diese Methode ist bereits vorgegeben. | ||
+ | </ | ||
+ | |||
+ | * Diese Methode schreibt das Attribut '' | ||
+ | * Je nach Art des Inputs wird dieser unterschiedlich verarbeitet: | ||
+ | * '' | ||
+ | * '' | ||
+ | * Alles andere => Der aktuelle Zeitstempel wird gespeichert. | ||
+ | |||
+ | |||
+ | ==== main ==== | ||
+ | In der '' | ||
+ | |||
+ | === Ausgabe === | ||
+ | |||
+ | < | ||
+ | Moritz | ||
+ | Pia | ||
+ | Cem | ||
+ | |||
+ | ---- | ||
+ | Zeugnis für: Moritz | ||
+ | Mathe : | ||
+ | Deutsch | ||
+ | Turnen | ||
+ | ---- | ||
+ | Zeugnis für: Pia | ||
+ | Mathe : | ||
+ | Deutsch | ||
+ | Turnen | ||
+ | ---- | ||
+ | Zeugnis für: Cem | ||
+ | Mathe : | ||
+ | Deutsch | ||
+ | Turnen | ||
+ | ---- | ||
+ | Student Theo nicht gefunden | ||
+ | Fach: Mathe mit 2 Noten | ||
+ | - 1: 5.00 am 01.01.2011 | ||
+ | - 2: 3.50 am 02.02.2022 | ||
+ | | ||
+ | Fach: Deutsch | ||
+ | - 1: 5.50 am 03.03.2033 | ||
+ | - 2: 6.00 am 04.04.2044 | ||
+ | - 3: 5.00 am 05.05.2055 | ||
+ | | ||
+ | Fach: Turnen | ||
+ | - 1: 4.50 am 06.06.2066 | ||
+ | - 2: 6.00 am 07.07.1977 | ||
+ | - 3: 6.00 am 08.08.1988 | ||
+ | - 4: 5.50 am 09.09.1999 | ||
+ | | ||
+ | </ | ||
- | ===Dauer=== | + | === Dauer === |
4 - 6 Stunden | 4 - 6 Stunden | ||
Zeile 54: | Zeile 221: | ||
< | < | ||
< | < | ||
- | GitHub Repository https:// | + | GitHub Repository https:// |
//Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden// | //Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden// |