| 

.NET C# Java Javascript Exception

2
Servus zusammen,

ich habe eine kleines Problem mit der „Komposition“ in Java was zu deutsch Einbettung bedeutet...
Wenn ich z.B. einer abgeleiteten Klasse eine logische Erweiterung oder Spezialisierung zur Basisklasse geben möchte dann spricht man von Vererbung...dies erfolgt durch das Schlüsselwort extends...das ist soweit klar...
Ich persönlich vergleiche mit Bezug auf die Basisklasse ==> Komposition mit „HAT EIN“ und Vererbung mit „IST EIN“...Wenn man z.B. die Klasse Auto als Basisklasse nimmt dann ist SUV eine abgeleitete Klasse mit logische Erweiterung oder Spezialisierung zur Basisklasse...also Vererbung ist ein....
Habe ich aber jetzt einen Motor dann sagt man das Auto „hat ein(en)“ Motor...und dann spricht man von einer Komposition...aber hier beginnt mein Problem der Realisierung im Java-Programm...
In der Fachliteratur steht das die neue Klasse ein Feld (sprich nur Variablen) vom Typ der bestehenden Klasse definieren wird...
Hier ein Programmauszug:
class Basis
{
public int wert; ==> das ist das Feld der bestehenden Klasse

public void ausgeben()
{
//System.out.println("Wert : " + wert);
JOptionPane.showMessageDialog(null, "Wert : " + wert);
}
}
class NeueKlasse ==> Das ist die neue Klasse
{
public void erhoehen()
{
//System.out.println("Vor der Erhöhung : " + wert);
JOptionPane.showMessageDialog(null, "Vor der Erhöhung : " + wert);

Basis wert; ==> Hier definiere ich aus einer bestehenden Klasse Basis ein Feld vom Typ Basis ==> wie kann es sein das die Klasse sowie der Typ beide Basis sind...???
Des weiteren kann ich die Variable nicht initialisieren oder über eine Konstruktor einen Wert zuweisen...also was bringt mir die Komposition eigentlich...????
Aber höchstwahrscheinlich habe ich was übersehen oder falsch verstanden so dass ich hier vor lauter Bäumen den Wald nicht mehr sehe....

JOptionPane.showMessageDialog(null, "Nach der Erhöhung : " + wert);
//System.out.println("Nach der Erhöhung : " + wert);
}
}

Ist es möglich das mir jemand anhand dieses Bsp. einer erklären kann wie ich mit der Komposition in Java programmieren kann und diese auch sinnvoll einsetzen kann...
So das ich die Felder auch entsprechende Werte zuweisen kann und diese auch im weiteren Programmverlauf einsetzen kann...

Danke im Voraus für eure Mithilfe...

Gruß
Snowleopard
News:
14.01.2018
2 Antworten
2
Du hast den Unterschied zwischen Vererbung und Komposition schon richtig erkannt, nur dein Beispiel mit dem int ist vielleicht etwas unglücklich. Um bei deinem Beispiel mit dem Auto zu bleiben:
public class Vehicle {
String manufacturer;
}

public class Car extends Vehicle { // <-- Vererbung
String type;
Enginge engine; // <-- Komposition

public Car(String manufacturer, String type, Engine engine) { // <-- Komposition
this.manufacturer = manufacturer;
this.type = type;
this.engine = engine;
}
}

public class Engine {
int horsePower;
}

public class CarBuilder {

public Car createFord() {
return new Car("Ford", "Mondeo", new Engine(110));
}
}

Komposition bedeutet, dass du in einer Klasse eine Variable vom Typ einer anderen Klasse hast. Es ist guter Programmierstil, die Klasse nach dem Builder-Pattern zu erzeugen, wie im obigen Beispiel angedeutet.

Gruß
Klaus

Gruß
Klaus
14.01.2018
luedi 2,1k 1 9
0
Servus Klaus,

danke der Groschen ist gefallen...

Bis bald mal

Snowleopard
16.01.2018

Stelle deine Java-Frage jetzt!