Unified Modeling Language Aufgabe so richtig?
Die Aufgabe lautet:
In einem Programm sollen beliebig viele Studierende verwaltet werden. Studierende sind entweder regulär immatrikuliert oder Gasthörer.
Regulär Immatrikulierte haben einen zugeordneten Studiengang. Ein Studiengang besteht aus einzeln Modulen.
Gasthörer belegen nur einzelne Module, davon aber beliebig viele.
Ich habe das nun so aufgezeichnet. Stimmt das so oder ist da etwas falsch?
1 Antwort
1) Die Namen solltest du auf jeden Fall überarbeiten. Klassen werden mit einem Substantiv benannt. Vorzugsweise sind diese im Singular formuliert, wenn sie nicht wirklich eine Kollektion darstellen (Bspw.: Produkt > ProduktKollektion). Eigenschaften wiederum kennzeichnen Interfaces aus. Ist immatrikuliert ein Interface?
Wenn ja, wäre Studierende ebenfalls ein Interface und der Pfeil zwischen beiden müsste mit gestrichelten Linien dargestellt werden (abgesehen vom Pfeilkopf, der bliebe so). Das Gleiche würde für Gastzuhörer ---> Studierende gelten. Die Felder in den Interfaces würden zu Konstanten werden. Also generell - nein, immatrikuliert ist wohl erst einmal kein Interface. Nur Studierende zu einem Interface zu machen, wäre stattdessen ok.
Namen wie nameModul sind nicht gut lesbar. Stattdessen wäre modulName sinniger. Da die Klasse aber bereits Modul heißt, reicht name völlig. Das Gleiche gilt bei Studiengang oder Student (statt Studierende).
2) Wenn Studierende zwei konkrete Subtypen (immatrikuliert und Gastzuhörer) hat, ist es unsinnig, für diesen Typ nochmals zwei Felder zu definieren, die die Eigenschaften darstellen, die nur die Subtypen haben können.
3) Den Namen des Studenten kannst du doch in Studierende setzen, wenn er eh in beiden Subtypen benötigt wird.