Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m320_2024:learningunits:lu09:aufgaben:schulverwaltung [2026/08/30 14:05] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m320_2024:learningunits:lu09:aufgaben:schulverwaltung [2026/08/30 14:12] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden 74.7.243.195 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LU09.A01 - Schulverwaltung ====== | ||
| + | < | ||
| + | <WRAP center round todo 60%> | ||
| + | Sie können in einer komplexen Anwendung selbständig | ||
| + | * die Klassen erstellen | ||
| + | * die Beziehungen einpflegen (einseitig, zweiseitig, mehrfache) | ||
| + | * den nötigen Ablauf selbst festlegen | ||
| + | * die gefordeten Ausgaben erzeugen | ||
| + | |||
| + | </ | ||
| + | |||
| + | === Vorgehen === | ||
| + | * Studieren Sie jeweils das UML-Diagramm sowie die Erklärungen zu den einzelnen Methoden. | ||
| + | * Halten Sie sich an die Reihenfolge bei der Erstellung der Klassen. | ||
| + | * Testen Sie die jeweilige Klasse, bis alle Test erfolgreich ablaufen. | ||
| + | |||
| + | === Auftrag === | ||
| + | Es ist eine einfache Schulverwaltung gemäss folgendem Klassendiagramm zu implementieren.\\ | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | Dabei nutzen Sie Ihr Wissen zu ein- und zweiseitiger Beziehung sowie den 4 gezeigten Fällen der Referenzzuweisung. Ebenso verwenden Sie Mehrfachbeziehungen. | ||
| + | |||
| + | {{https:// | ||
| + | |||
| + | ===== Vorgehen ===== | ||
| + | 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. | ||
| + | * Klassen die keine Referenzen zu anderen Klassen enthalten, sollten zuerst umgesetzt werden. | ||
| + | * 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 eine Liste aller Studenten. Die Ausgabe könnte wie folgt aussehen: | ||
| + | |||
| + | < | ||
| + | Max | ||
| + | Pia | ||
| + | Cem | ||
| + | </ | ||
| + | |||
| + | === show_student_report(name) === | ||
| + | * Diese Methode liefert das Zeugnis für einen Studenten mit allen Fächern und dem Notenschnitt. Die Ausgabe könnte wie folgt aussehen: | ||
| + | |||
| + | < | ||
| + | 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 mit allen Fächern und dem entsprechenden Notenschnitt. Eine mögliche Ausgabe kann wie folgt aussehen: | ||
| + | |||
| + | < | ||
| + | Zeugnis für: Cem | ||
| + | Mathe : | ||
| + | Deutsch | ||
| + | Turnen | ||
| + | </ | ||
| + | |||
| + | === show_details === | ||
| + | * Diese Methode liefert alle Fächern mit den einzelnen Noten. Eine mögliche Ausgabe kann wie folgt aussehen: | ||
| + | |||
| + | < | ||
| + | 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 Sie, dass gemäss Klassendiagramm max. 4 Noten möglich sind. Das müssen Sie beim Zufügen von Noten ('' | ||
| + | * 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 === | ||
| + | 4 - 6 Stunden | ||
| + | |||
| + | === Abgabe === | ||
| + | Mittels Push ins GitHub Repository | ||
| + | |||
| + | ---- | ||
| + | < | ||
| + | < | ||
| + | GitHub Repository https:// | ||
| + | |||
| + | //Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden// | ||
| + | |||
| + | </ | ||
| + | |||
| + | {{tag> | ||
| + | [[https:// | ||