Hallo leute ich will einen JavaCode in ein Uml Klassendiagram umschreiben.Ich hab ein Problem woran erkenn ich am code explizit die aggregation bzw. Komposition
Das ist der folgende Code:
Java:
1package auto ;2import auto . motor .Motorblock;3import auto . elektronik .*;4publicclassFahrzeug{5privateString firma ;6privateString modell ;7privateMotorblock motorblock ;8privateISteuergeraet[] steuergeraete ;910publicFahrzeug(){11 motorblock =newMotorblock();12 steuergeraete =newISteuergeraet[2];13 steuergeraete [0]=newMotorSteuergeraet();14 steuergeraete [1]=newAirbagSteuergeraet();15}1617publicString gibModell (){18return modell ;19}20...21}2223package auto . elektronik ;24publicinterfaceISteuergeraet{25publicabstractvoid setzeMesswert (int wert );26publicabstractvoid liesMesswert ();27publicabstractvoid reset ();28}2930package auto . elektronik ;31publicclassAirbagSteuergeraetextendsASteuergeraet{32...33}34package auto . elektronik ;35publicclassMotorSteuergeraetextendsASteuergeraet{36...37}3839package auto . elektronik ;40publicclassASteuergeraetimplementsISteuergeraet{4142publicvoid setzeMesswert (int wert ){43...44}4546publicvoid liesMesswert (){47...48}4950publicvoid reset (){51...52}53}5455package auto . motor ;56publicclassMotorblock{57privateZuendkerzen zuendkerzen ;58privateZylinder zylinder ;59...60}6162package auto . motor ;63publicclassZuendkerzen{64...65}6667package auto . motor ;68publicclassZylinder{69...70}[\JAVA]EineAggregation ist ja eine ist-teil-beziehung zwischen zwei klassen
komposition ist eine existenzabhängige ist-teil beziehung zwischen zwei klassen
aber woran erkenn ich das explizit an diesem java code.mir ist klar wie das diagramm aufstellen.nur das mit der Komposition und Aggregation kann ich hier nicht sehen.Gibt es da irgendwelche Parameter?Danke für Hilfe
beste grüße
medicus
publicFahrzeug(){
motorblock =newMotorblock();// motorblock wird Motorblock zugewiesen
steuergeraete =newISteuergeraet[2];// Es wird ein array steuergerate der Länfe 2 angelegt
steuergeraete [0]=newMotorSteuergeraet();// dem ersten Feldinhalt wird MotorSteuergeraet zugewiesen
steuergeraete [1]=newAirbagSteuergeraet();// dem zweiten Feldinhalt wird Airbagsteuergeraete zugewiesen => daraus folgt das eine existenzabhängige ist-teil beziehung zwischen der Klasse Fahrzeug und der Klasse Airbag steuergerate besteht }
Die Antwort kann man so nicht einfach an ein paar Parametern sehen.
Die Definition ob es sich dabei um eine Komposition handelt, läßt sich nur aus dem Programmablauf ableiten.
Sprich, wenn die Komponente entfernt würde und das Programm stürzt ab, dann hast du deine Komposition, ansonsten nicht.
Die Antwort kann man so nicht einfach an ein paar Parametern sehen.
Die Definition ob es sich dabei um eine Komposition handelt, läßt sich nur aus dem Programmablauf ableiten.
Sprich, wenn die Komponente entfernt würde und das Programm stürzt ab, dann hast du deine Komposition, ansonsten nicht.
In diesem Fall reicht es doch zu wissen dass man ohne [c]Motorblock[/c], [c]MotorSteuergeraet[/c] und [c]AirbagSteuergeraet[/c] kein [c]Fahrzeug[/c] erzeugen kann -> Komposition.
Der Unterschied zwischen Aggregation und Komposition liegt darin, dass die enthaltenen Objekte existenziell abhängig sind vom Aggregations-Objekt, d.h., wird das Aggregations-Objekt zerstört, sind auch die enthaltenen Objekte nicht mehr existent.
Nein, das denke ich so nicht, Komposition und Aggregation sind so gesehen keine programmiertechnischen, sondern theorhetische Konstrukte.
Daher, selbst wenn er sie beim Erzeugen des Objektes abhängige Objekte anlegt, heißt das nicht, das das Fahrzeug ohne diese nicht auch ein gültiges Objekt bleibt. Ein Auto fährt ja schließlich auch ohne ABS.