Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich weiß dieses Thema hat nicht direkt etwas mit Java zu tun, jedoch denke ich ich kann hier trotzdem auf Hilfe stoßen. Falls dieser Beitrag sich im Falschen bereich befindet, bitte verschieben!
Zu meinem Problem:
Mir ist aufgefallen, dass bei Vererbungen oft leichte Abwandlungen der original Klassennamen genutzt werden. Nehmen wir an die Klasse würde "Struktur" heißen, so nennen viele die Vererbung "dieStruktur".
Da ist auch schon meine erste Frage: wie muss ich mir diese Vererbung vorstellen?
Ich weiß, dass ich dann in der Unterklasse auf public Variablen und Methoden zugreifen kann, warum muss ich jedoch "dieStruktur" anlegen? Welchen Zweck erfüllt diese?
Meine zweite Frage dreht sich um Klassendiagramme oder um genauer zu sein um Kardinalitäten.
Diese geben die Anzahl der Beziehungen zwischen zwei Klassen an, jedoch weiß ich nicht wie ich auf diese Anzahl komme? Und wie komme ich auf die Verbindungsrichtungen?
Was bestimmt wie viele Beziehungen die Klasse A zu Klasse B hat?
Danke, ich weiß es sind etwas eher ungewöhnliche Fragen, aber ein Versuch ist es wert!
Eine solche Benennung ist mir noch nie untergekommen aber eine ähnliche Benennung ist schon sinnvoll, da alle Klassen, die von einer Klasse erben direkt etwas mit dieser zu tun haben. Zum Beispiel hast du eine Klasse Figur. Davon erbt die Klasse Spielfigur. Dann ist Spielfigur eine Figur und hat deshalb figur im Namen.
Vererbung wird in Java so geschrieben:
Klasse1 extends Klasse2
Das heißt übersetzt:
Klasse1 erweitert Klasse2
Oder auch:
Klasse1 ist eine Klasse2
Durch Vererbung wird das Verhalten einer Klasse auf eine andere übertragen und dadurch wird dem Programmierer sehr viel Tipparbeit erspart.
Zum Beispiel hast du in einem Spiel 100 verschiedene Charaktere. Dann kannst 100 mal das Verhalten programmieren. Du kannst aber auch eine Klasse schreiben, die alle Verhaltensweisen, die bei allen gleich sind sammelt. Zum Beispiel bewegen sich alle. Dann schreibst du ein mal eine Methode zur Bewegung und der Rest greift darauf zu. In Java kann eine Klasse nur von einer anderen erben. Dies ist in z.B. C++ nicht so. (Kettenvererbung ist dennoch möglich)
Die Unterklasse erweitert die Superklasse greift auf Methoden und Variablen aus der Superklasse zu.
du hast beispielweise ein UML Klassendiagramm mit 2 Klassen. (z.B. für ein Strategie spiel)
die eine Klasse heisst "schiffswerft", die andere "Schlachtschiff"
diese beiden Klassen haben eine 1 zu "viele" Beziehung. deshalb sind die beiden Klassen über einen
Verbindungspfeil verbunden. auf der seite von "schiffswerft" schreibst du über den pfeil "1", auf der seite von "schlachtschiff" "0....*" oder "0...n"
Eine genaue Anzahl musst du nicht angeben, die wird zur laufzeit entschieden.
du gibst mit den Kardinalitäten nur an was zur laufzeit für diese beziehung möglich wäre (einfach logisch gedacht)
"eine schiffswerft hat zur laufzeit mehrere Schiffe"
es gibt zum beispiel auch: 1 zu 1
"jede schiffswert hat genau ein schiff" klingt komisch oder?
genauso komisch wie:
"mehrere Schiffswerften haben zusammen 1 Schiff" (n zu 1)
zu der Pfeilrichtung:
die Pfeilrichtung besagt meines Wissens:
"wer wen kennt", wenn zum beispiel die klasse schiffswerft in ihrer implementierung eine Liste (zum beispiel ArrayList mit Schlachtschiffen hat, dann zeigt der Pfeil in richtung der schlachtschiffe, weil schiffswerft damit schlachtschiffe kennt und die methoden darauf aufrufen kann.
im gegensatz dazu kennt schlachtschiff nicht die schiffswerft weil sie sie im normalfall weder importiert, noch nstanzvariablen davon hat, noch methoden darauf aufruft... deswegen kein pfeil in richtung schiffswerft.
(es gibt auch verbinder die in beide richtungen zeigen)