# Klassendiagramm einer Schule



## alexej.lvov (14. Jul 2010)

Hallo Leute,

ich möchte ein Programm für  eine Freizeit Schule schreiben um alles drin per Browser verwalten zu können. Server habe ich mir Tomcat überlegt und DB ist postgreSQL.

Ich habe hier eine Klassendiagramm dazu gemacht und will wiessen was ihr dazu meint:
siehe Anhang

Beziehung 1 [1 zu n]: Person hat kein od. mehrere Kinder. Komposition, da ohne Person kein Kind
Beziehung 2 [m zu n]:Gruppe(z.B. Gruppe 4 bis 5 Jahre) hat Kinder, Assoziation, da ohne Gruppe die Kinder sind noch da. Oder doch komposition????
Bez. 3 [1 zu n](m zu n auf dem Bild ist falsch): Kurs hat  mehrere Gruppen, eine Gruppe het nur ein Kurs. Komposition, da ohne Kurs die Gruppe ist auch weg.
Bez. 4 [m zu n]: Lehrer(erbst von Person) hat mehrere Kurse, Kurs kann von mehreren Lehre geleitet werden. Kurs kann auch ohne Lehrer existieren, bis ersatzt gefunden wird
Bez. 5 [1 zu 1]. Person hat ein Bankkonto. Komposition, da ohne Person kein Konto
bez. 6 [1 zu 1]: Person hat Kontaktdaten. Komposition, da ohne person kein Kontakt

Ich weiß es ist einwenig viel auf ein mal und vlt. viel falsch, aber ich brauche eine Meinung. Später soll die Funktionalität erweitert werden. Dazu kommt Zahlung von Monats und Jahresbeitrag.

Danke im Voraus

Grüße

Alexej


----------



## Sonecc (14. Jul 2010)

kein bild zu sehen


----------



## alexej.lvov (15. Jul 2010)

danke,

ich habe es als Anhang zugefügt.


----------



## Ruzmanz (15. Jul 2010)

Ws sollen die Zahlen in der Mitte bedeuten und warum erbt das Kind nicht von Person?


----------



## alexej.lvov (16. Jul 2010)

Zahlen haben keine großen Bedeutung. Ich wollte nur die Beziehungen beschreiben und dazu zahlen genommen. 

Warum das Kind von person nicht erbt? Ist eine gute Frage. Ich wusste halt nicht genau wie ich das machen soll. Eigentlich gehört das Kind einer Person.Person ist in dem Fall so was wie Betruer, Eltern.
Ruzmanz, wie würdest du denn das machen?


----------



## Ruzmanz (16. Jul 2010)

Erlich gesagt finde ich das gesamte Diagramm nicht so toll. Ein UML Klassendiagramm ist idiotensicher:


Erstmal sind da so kleine Kästchen im Bild, die mit UML gar nichts zu tun haben und diese treffen auch keine Aussage, oder? Ist zwar schön anzusehen, aber ich habe mich die ganze Zeit nur gefragt: "Was will uns der Autor damit sagen?". Wenn das Programm XY keine Klassendiagramme darstellen kann, dann sollte man es auch nicht verwenden.

Dann sind vor 3 Attribute ein "#", was bedeutet, dass sie eine Sichtbarkeit von default haben. Die anderen haben nichts davor stehen. Was wiederum bedeutet, dass sie auch eine Sichtbarkeit von Default besitzen. Jetzt muss sich jeder fragen, warum das so ist? Es MUSS einen Grund geben, warum 3 Attribute gekennzeichnet sind und bei denen das weggelassen wurde.



> Zahlen haben keine großen Bedeutung. Ich wollte nur die Beziehungen beschreiben und dazu zahlen genommen.



1. Keine Bedeutung = RAUS. Entweder es ist relevat oder nicht. Genau so könntest du ergänzen, dass ein Kind hunrig sein kann. Zwar nützlich aber würde es dir helfen?
2. Die Diagramme sind normal für andere gedacht. Ich weis was ich tue und warum. Wenn du dir etwas dabei denkst und es mir nicht mitteilst, dann werde ich daraus nicht schlau. Übertrage ich deine Zahlen auf den Alltag, dann habe ich und meine Freunin die Beziehung Vier. (Ich hoffe, dass ich meine Freundin nicht beleidigt habe, aber ich habe sowas von keinen Plan, was die Beziehung vier ist. Kannst mich bei Gelegenheit aufklären.)

Zudem kenne ich den Standard mit "src" und "dst" nicht. Ein Kind kann die Rolle des "Sklaven" haben oder "Hilfskraft". dann schreibe ich in meinen Sourcecode:


```
Kind sklave;
    Kind hilfskraft;
```

Aber sowohl in UML als auch in Java ist folgende Aussage. Fragwürdig:


```
Kind src;
```

Und das nicht möglich:


```
Person src;
    Group src;
```

Kleinigkeit, aber auch Fragwürdig: Was für eine Klasse ist ELong? Und warum ist id vom Typ ELong.



> Warum das Kind von person nicht erbt? Ist eine gute Frage. Ich wusste halt nicht genau wie ich das machen soll.



Das kommt von deinem Wirwar. Erstmal hat EIN Kind mindestens EINEN Erziehungsberechtigten. Dann würde man anstatt "dst" -> "- kind" und anstatt "src" würde man " erziehungsberechtigter" schreiben. Kann ein Kind ohne Erziehungsberechtigten leben? Rechtlich gesehen nein, aber pratisch gesehen ja. Also ist da weder eine Komposition noch Aggregation. Dann wird der enum "Status" überflüssig.

Kann es Gruppen ohne Kinder geben? Kann es Kurse ohne Gruppen geben? Kann es Kurse ohne Lehrer geben? Alles möglich, aber anstatt sich nur auf Aggregation und Komposition zu stürzen, sollte man auch die Multiplizitäten im Auge behalten.

Deine Beschreibung ist zwar nett, aber dort gibt es keine Person mit einem Konto. Es gibt eine Bank mit einem Besitzer, aber warum nun das gebraucht werden könnte lässt sich im entferntesten nicht erschließen.

Ziat Wikipedia:


> Die Komposition (composite aggregation oder composition) als Sonderfall der Aggregation beschreibt die Beziehung zwischen einem Ganzen  und seinen Teilen. Der Unterschied zur Aggregation ist im Kern, dass die Existenz des Teil-Objektes durch die des übergeordneten Objektes bedingt ist.
> 
> Ein Teil kann immer nur genau einem Ganzen zugeordnet sein. So kann z. B. ein Raum immer nur zu genau einem Gebäude gehören, nie zu keinem oder mehreren.



Trifft die Definiton auf dein Diagramm zu. Ich glaube eher nicht.

Es ist sehr positiv UML zu benutzen. Meistens ist es einfacher, wenn man nicht alle Elemente benutzt. Denn wer weniger hat, der kann auch nicht so viele Fehler machen. Zuletzt wollte ich noch sagen, dass du unbedingt nochmal über ein Buch schauen solltest :rtfm: Bei Fragen einfach melden, ich habe das jetzt nur mal Kreuz und Quer aufgefasst.


----------



## Final_Striker (16. Jul 2010)

1. Entweder machst du die Namen komplett auf Englisch oder komplett auf Deutsch, eine Mischung aus beiden ist noch so toll.

2. Die Beziehungen sinnvoll benennen oder gar nichts, Zahlen sind unnötig und verwirren nur.

3. Das mit dem Child - Group - Kurs verstehe ich nicht

4. Von Person würde ich 3 Klassen ableiten, Lehrer, Schüler und Betreuer. Dann kann man die Abhängigkeiten deutlicher darstellen.

5. Aus Kontakt vllt. Adresse machen^^


----------



## alexej.lvov (17. Jul 2010)

Ruzmanz, Final_Striker,
danke euch für die konstruktive Kommentare. 
Das es so viele sein wird habe ich nicht erwartet. 
Ich werde in der nächste Zeit versuchen eure Empfehlungen umzusetzen.

ich habe so gut wie keinen Erfahrung mit UML und Softwareentwicklung. Solchen Dinge wie kleine Kästchen und unbekante Bezeichnungen habe ich nicht so viel Wert gegeben. Ich gebe aber zu, dass sie da nichts zu suchen haben.

Mit UML wollte ich einwenig Struktur schaffen. Damit ich es besser in meinem Kopf vorstellen kann. Ich werde mich wahrscheinlich an den Tip von Ruzmanz halten und das ganze einfacher halten, damit ich den Überblick nicht verliere und wenige Fehler mache. Später kann man es ausbauen.


----------

