Vererbung Designproblem beim Vererben

Beidendorfer

Neues Mitglied
Hallo Zusammen,

Ich bin blutiger Java anfänger und arbeite mit Eclipse 3.6.2 Ich habe viel zum Thema java gelesen und versuche mich jetzt an einem kleinen Beispiel um zu üben.
Habe Problem das richtige Design für meine Beipiel zu finden.
Beispiel: Schrotplatzhändler

Ich bin ein Schrotplatzhändler und kauf Autos. Ich zerlege auch Autos und verkaufe die Einzelteile.
Habe eine Klasse Auto und eine Kindklasse Autoteil. Die Kindklasse hat variablen (z.b. endPreis).
Die Kindklasse Autoteile hat auch wieder eine Kindklasse z.b. Motorhaube. Diese erbt die Methoden der Autoteile klasse z.b. setPreis / getPreis. Diese Methoden sind in der Autoteile klasse damit ich sie nicht für jede Kindklasse neu schreiben muss.

Meine Mutterklasse Auto hat auch noch eine zweite Kindklasse Automarke, mit den Kindklassen BMW Audi usw.

Nun will ich einen Audi kaufen. Ich erstelle ein Objekt das Audi heist und gebe den gesamtpreis an.
Nun will ich von den Audi objekt eine Tür verkaufen und dafür die getPreis Methode der Autoteile klasse benutzen.

Am liebsten so Audi.Tür.getPreis();
Die Methode getPreis soll nicht in die Mutterklasse Auto, da die zweite Kindklasse diese nicht interessiert nur die Erste Kindklasse Autoteile. Es soll ja übersichtlicht werden.

Wenn ich aber ein Objekt erzeuge (Audi) soll es auch auf die Einzelteile Zugreifen können.
z.B. Audi.Tür.getPreis();

Mein Problem ist nun das ich die Klasse Autoteile nicht als Kindklasse von Automarke machen kann.
Weil ich den für jede Automarke eine eigene Kindklasse z.b Autotür machen muss.

Oh Je langsam sehe ich nicht mehr durch ;) habe ein Bild angehängt mit dem design.
Am liebsten würde ich in meinem Hauptprogram einen aufruf machen Audi.Tür.getPreis();
und würde dann den Preis der Audi tür bekommen.

Danke schon mal fürs durchlesen. Ist bestimmt nur ein Gedankenfehler.
Ziel ist es den Code übersichtlich zu haben
 

Anhänge

  • Schrotplatz.png
    Schrotplatz.png
    20,7 KB · Aufrufe: 52

Phash

Top Contributor
Momentan hast du ein Auto, das eine Automarke hat und eine Liste von Autoteilen, die wiederum aus Listen / Arrays von sich selbst bestehen.

du kannst ein neues Auto erstellen
Auto erstesAuto = new Auto
erstesAuto.setAutomarke(new Audi);

du kannst also auf die Instanz zugreifen und hast dann alle deine Variablen und Methoden zur Verfuegung

Ich wuerde hier das Buch: Java von Kopf bis Fuß empfehlen und im Nachgang Entwurfsmuster von Kopf bis Fuß: Amazon.de: Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates: Bücher

im ersten lernst du die Basics, gut und verstaendlich dargestellt
und im zweiten ist genau dein Beispiel drin - nur glaub ich, mit Pizzas oder Kaffee... (geht immer um sowas *g* anstelle von Autos...)
DecoratorPattern - das ist hier aber erstmal zu viel.
Als Basisbeispiel sollte im ersten Buch etwas analoges zu deiner Frage enthalten sein
 

langhaar!

Bekanntes Mitglied
Ich würde das ganze Konzept noch einmal neu aufbauen.

Vererbung bedeutet, dass das Kind alles das ist und alles das kann, was der Vater auch hat und kann und darüber hinaus mehr.
Das ist bei dir weder bei Auto-Autoteil noch bei Auto-Automarke gegeben. (Ein Auto hat eine Spitzengeschwindigkeit. Hat eine Autotür eine Spitzengeschwindigkeit?)

Ein Auto besteht aus Teilen bzw. ein Autoteil ist Teil eines Autos. In deinem Fall würde ich sogar noch weiter gehen:
ein Autoteil passt zu einem (oder mehreren!) Autotypen.

Das ist keine Vererbung.

Die Automarke ist Attribut eines Autos. Ein Auto hat ein Baujahr, einen Kilometerstand etc. und unter anderem eine Modellbezeichnung. Die Klasse Automarke macht wenig Sinn.

Warum gibt es von diversen Automarken Klassen? Was soll ein BMW haben oder können, was ein Lada nicht hat oder kann? Die Unterschiede ergeben sich rein über die Ausprägungen der Attribute. Wenn deine Klasse Auto eine Geschwindigkeit, die Teile, die Marke [weitere Eigenschaften] enthält, kannst du damit sowohl BWM als auch Lada beschreiben (in einer Klasse).
 
Zuletzt bearbeitet:

ARadauer

Top Contributor
Ein Autoteil ist kein Auto.
Eine Automarke ist kein Auto...

Vererbung sollte eine "ist eine" Beziehung sein.

Ein Hund ist ein Tier. Ein Mitarbeiter ist eine Person. Super Mario ist eine Spiel Figur.

Ich würd dann aber auch nicht auf die Idee kommen einen Audi als Kind Klasse eines Autos abzubilden. Ein Audi ist zwar ein Auto aber sowas würd ich eher über Eigenschaften oder Komposition abbilden...

btw... nicht den Mut verlieren... braucht einige Zeit bis man das drauf hat...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Designproblem, Regex Java Basics - Anfänger-Themen 4
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
M Ausgabe beim Overloading Java Basics - Anfänger-Themen 3
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
T DamagedFontException beim drucken Java Basics - Anfänger-Themen 3
Z SNAKE Schlange beim Aufheben von Essen verlängern Java Basics - Anfänger-Themen 4
Bugs Bunny Fehlerhafte Berechnung beim erneuten Durchlaufen der Schleife Java Basics - Anfänger-Themen 5
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
X Hilfe beim Übertragen in eine For-Schleife Java Basics - Anfänger-Themen 1
S Fehler beim Programm Java Basics - Anfänger-Themen 2
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
I InputStream beim zweiten Mal fehlerhaft Java Basics - Anfänger-Themen 10
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
pry bitte Hilfe beim Kreditrechner objektorientiert Java Basics - Anfänger-Themen 6
J Hilfe beim Label animieren Java Basics - Anfänger-Themen 1
Avalon Programmierstil beim Mocken Java Basics - Anfänger-Themen 45
Avalon NullPointerException beim Mocken Java Basics - Anfänger-Themen 6
J Hilfe beim verstehen Java Basics - Anfänger-Themen 3
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Compiler-Fehler Fehler beim Ausführen des Codes Java Basics - Anfänger-Themen 25
L Anfänger braucht Hilfe - Stecke beim Lernen fest Java Basics - Anfänger-Themen 10
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
Bluedaishi Hilfe beim erklären dieser Methode Java Basics - Anfänger-Themen 5
E Macht Java Rechenfehler beim Potenzieren und Mod? Java Basics - Anfänger-Themen 5
J Hilfe beim Programmieren Java Basics - Anfänger-Themen 5
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
Kirby.exe Fehler beim Ausgeben Java Basics - Anfänger-Themen 2
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
D Was tun gegen zu komplzierten Denken beim Programmieren Java Basics - Anfänger-Themen 27
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
L Kleine Hilfe beim Schreiben eines Programmes benötigt :D Java Basics - Anfänger-Themen 40
T Fehlermeldung beim Versuch, einen String einzulesen Java Basics - Anfänger-Themen 4
V Wie wiederhole ich eine for-Schleife beim erreichen eines Wertes Java Basics - Anfänger-Themen 9
W Hilfe beim Chat Programm Java Basics - Anfänger-Themen 14
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
S IndexOutOfBoundsException beim hinzufügen eines Elements zu einer Liste Java Basics - Anfänger-Themen 11
R String index out of range: -1 beim Datei Parsen Java Basics - Anfänger-Themen 15
I Methoden List.contains() beim 2. Element = true Java Basics - Anfänger-Themen 1
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
O Verwirrt beim Java Collection Framework aufruf! Java Basics - Anfänger-Themen 9
S switch case fängt beim letzten case an Java Basics - Anfänger-Themen 6
S Erste Schritte Hilfe beim lernen von Programmieren Java Basics - Anfänger-Themen 2
der_Schokomuffin Hilfe gesucht beim Thema Objekte übergeben! Java Basics - Anfänger-Themen 2
A Pendeltouren beim Savings erfahren "schummeln" in Ordnung? Java Basics - Anfänger-Themen 1
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
T Fehlermeldung beim Starten von FlashTool Java Basics - Anfänger-Themen 27
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
J Hilfe beim Runden Java Basics - Anfänger-Themen 4
C Erste Schritte ArrayIndexOutOfBoundsException beim Speichern im Array Java Basics - Anfänger-Themen 2
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
L Fehler beim laden eines Icons Java Basics - Anfänger-Themen 3
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
R Methoden NPE beim Aufruf einer Methode einer anderen Klasse Java Basics - Anfänger-Themen 4
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
J Probleme beim Array ausgeben Java Basics - Anfänger-Themen 4
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
D Könnt ihr mir helfen beim Programmieren eines Ping Pong Spieles? Java Basics - Anfänger-Themen 9
N Fehlermeldung beim ausführen des Programmes.. Java Basics - Anfänger-Themen 3
K Classpath RXTX beim Raspberry Java Basics - Anfänger-Themen 5
F (Eclipse) Beim importieren etwas fehlerhaft bitte um Hilfe :) Java Basics - Anfänger-Themen 3
B Datentypen Welcher Typ wird beim Casten übernommen? Java Basics - Anfänger-Themen 12
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
J Klassen HashSet, TreeSet: unregelmäßige Zahlenreihen beim Befüllen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben