Sie können in einer komplexen Anwendung selbständig
Es ist eine einfache Schulverwaltung gemäss folgendem Klassendiagramm zu implementieren.
Dabei nutzen Sie Ihr Wissen zu ein- und zweiseitiger Beziehung sowie den 4 gezeigten Fällen der Referenzzuweisung. Ebenso verwenden Sie Mehrfachbeziehungen.
Grade
als @dataclass
. value
. Diese nehmen Sie im Konstruktor vor, d.h. dass Sie keine setter-Methode schreiben (ist gemäss Klassendiagramm nicht vorgesehen). value
und date
gemäss Klassendiagramm. Grade
. (test_grade.py) Subject
. Grade
-Objekte) umsetzen. grades[] : Grade
im Klassendiagramm deutet auf die Nutzung eines Array hin. get_value(idx)
bzw. take_value(idx)
) soll im Fehlerfall der Wert 0 zurückgegeben werden. Beim Datum (get_date(idx)
bzw. take_date(idx)
) wird None
geliefert. get_average
liefert bei fehlendem Noteneintrag (size = 0) den Wert 0 zurück. Dieser Test ist zwingend nötig, da sonst eine Division durch 0 zu einem Laufzeitfehler führt. Subject
. (test_subject.py) ClassReport
. set_student
und get_student
vorerst weg. Um diese Methode zu testen, benötigen Sie zuerst ein Student-Objekt. Die entsprechende Klasse Student
existiert aber noch nicht.None
zurück. to_string()
liefert ein Zeugnis mit allen Fächern und dem entsprechenden Notenschnitt. Eine mögliche Ausgabe kann wie folgt aussehen: print_details()
liefert alle Fächern mit den einzelnen Noten. Eine mögliche Ausgabe kann wie folgt aussehen: ClassReport
. (test_classreport.py) main
-Methode in classreport.py
und geben Sie die to_string
-Methode sowie print_details
auf dem Bildschirm aus. Student
. Jetzt ist der Moment gekommen, um in der Klasse ClassReport
die set_student
und get_student
-Methode zu ergänzen. (mit der Annotation @property
bzw. @student.setter
) ClassReport
-Objekt mitgeteilt. Student
. (test_student.py) main
-Methode in student.py
und führen Sie die to_string
-Methode des ClassReport
-Objektes aus. Dazu müssen natürlich auch 3 Subject-Objekte und dazu ein paar Grade-Objekte erzeugt werden. Ebenso ein Student-Objekt, das den print dann auslöst. SchoolClass
. SchoolClass
. (test_school_class.py) main
-Methode inder Datei main.py
.Das Programm liefert
4 - 6 Stunden