Ich habe hier leider ein paar Probleme bei der Umsetzung von UML Diagrammen.
Hier wäre meine Lösung zu der Angabe. Leider weiß ich nicht ob sie überhaupt ansatzweise stimmt. Bzw die Aufgabenstellung hiermit erfüllt gewesen wäre.
Aja hier die Aufgabenstellung - hab ich ganz vergessen.
Implementieren Sie für die vier oben als UML-Diagramm
angegebenen Klassen jeweils eine entsprechende Klasse in Java. Die
Assoziationen sollen korrekt als Instanzvariable umgesetzt werden. Jede
Klasse die eine Instanzvariable besitzt, benötigt einen Konstruktor, der die
Instanzvariable korrekt initialisiert.
Als List<Randbemerkung> .......
Und wenn das untere tatsächlich eine Vererbungsbeziehung darstellen soll zeigt der Pfeil auf die Oberklasse ! Ist eigentlich eine nicht ausgefüllte Pfeilspitze.
Ich wollte es nur nochmal verdeutlichen. Wenn es eine nicht ausgefüllte Pfeilspitze ist dann stimmt ja alles. Dann ist Hypertextdokument die Oberklasse. https://de.wikipedia.org/wiki/Klassendiagramm
Ok neuer Versuch - ich hoffe ich bin der Lösung schon einwenig näher gekommen?
Erstes Beispiel ist eine starke Aggregation
Zweites Beispiel ist eine gerichtete Assoziation (wie schon richtig hingedeutet wurde)
Implementieren Sie für die vier oben als UML-Diagramm
angegebenen Klassen jeweils eine entsprechende Klasse in Java. Die
Assoziationen sollen korrekt als Instanzvariable umgesetzt werden. Jede
Klasse die eine Instanzvariable besitzt, benötigt einen Konstruktor, der die
Instanzvariable korrekt initialisiert.
Nein, Listen haben wir im Unterricht nicht durchgenommen. Deswegen suche ich nach einer Lösung ohne diese Listen, falls möglich. Wenn es allerdings keine Alternative zu diesen Listen gibt, werde ich mir die noch aneignen müssen.
Ich will da keine Unruhe in euren Unterricht bringen aber Kardinalität * ist das nicht. Und wenn ihr das so gelernt habt dann mach es ruhig so. Vielleicht steht 100 ja für eine "sehr grosse, im Prinzip unbegrenzte" Anzahl.
Also wenn du das mit einem normalen Array machst hast du eine begrenzte anzahl. Neben dem Array gibt es noch ArrayList zum beispiel. Der unterschied ist das ArrayList beliebig wachsen kann.
Um eine ArrayList zu erstellen musst du auch immer einen Typ mitgeben, dafür stehen die <> klammern.
Code:
ArrayList<String> variablenname = new ArrayList<String>
in den Typ kann alles stehen, wie z.B. double int oder sonst was. Wichtig ist nur das du in die Liste auch wirklich nur sachen packen kannst die mit dem Typ übereinstimmen.
Der * steht für beliebig viele also zum Beispiel auch 100.000
100 wäre schlichtweg falsch wofür du natürlich nichts kannst. Aber es schadet ja nicht das gleich richtig zu lernen wenn einem das schon falsch gezeigt wird.
Mit ein bisschen "Tricks" kann man Kardinalität * schon auch mit normalen Arrays erreichen. Man legt es mit einer bestimmten Grösse an und vergrössert es wenn man beim Einfügen feststellst dass es voll ist. Vergrössern natürlich indem man ein neues, grösseres Array anlegt und das alte dort hinein kopiert.
Mit ein bisschen "Tricks" kann man Kardinalität * schon auch mit normalen Arrays erreichen. Man legt es mit einer bestimmten Grösse an und vergrössert es wenn man beim Einfügen feststellst dass es voll ist. Vergrössern natürlich indem man ein neues, grösseres Array anlegt und das alte dort hinein kopiert.
Na was ein zufall hab grad mal in meine neuen uniaufgaben reingeschaut xD
1.) Die Elemente werden in einem Array gespeichert. Die Anfangsgröße wird in einem
Konstruktor übergeben. Sehen Sie bitte eine default-Größe vor. Ist das Array voll, so
vergrößern Sie es bitte um einen Prozentsatz, z. B. 100%
Aber absoluter schwachsinn eigentlich... also unsre Aufgabe ist es ein Stack zu implementieren... Ich würde da ja eher ne ArrayList benutzen. Oder gibt es einen grund der Sinn macht das über nen normales Array zu machen?
Aber absoluter schwachsinn eigentlich... also unsre Aufgabe ist es ein Stack zu implementieren... Ich würde da ja eher ne ArrayList benutzen. Oder gibt es einen grund der Sinn macht das über nen normales Array zu machen?
Eigentlich in die Lage versetzt werden, iwann später einmal selber so eine Klasse schreiben zu können. Aber iwie sehe ich da Schwarz.^^
Bearbeitung: Das impliziert natürlich, es vorher auch verstanden zu haben. Z. B., worauf eine ArrayList basiert? (Rhetorische Frage - brauchst nicht darauf antworten, wenn dadurch Unkenntnis zu tage käme)
1.) Die Elemente werden in einem Array gespeichert. Die Anfangsgröße wird in einem
Konstruktor übergeben. Sehen Sie bitte eine default-Größe vor. Ist das Array voll, so
vergrößern Sie es bitte um einen Prozentsatz, z. B. 100%
@Blender3D : Lass das -1 mal weg, das ist unsauber - und signalisiert ungültigen Zustand, den der Stack niemals haben kann. 2. wird das wegen push nicht kompilieren. 3. Nicht getestet. 4. Keine Hausaufgaben, bitte. Danke.