Vererbung - Aufgabe |
28.05.2015, 00:42 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
Björn | Vererbung - Aufgabe Meine Frage: Hey Leute, folgende Aufgabenstellung: Für die Kfz-Datenbank einer Behörde sollen in einer ersten Ausbaustufe nur Pkws und Lkws betrachtet werden. Für beide Kfz-Typen soll das Kennzeichen und die PS-Zahl gespeichert werden, für Pkws zusätzlich die Anzahl der Sitzplätze, für Lkws zusätzlich das zulässige Gesamtgewicht. (Später werden noch viele weitere Daten, sowie Motorräder etc. hinzukommen.) Definieren Sie geeignete Klassen Kfz, Pkw und Lkw, jeweils mit einer print()-Funktion zur Ausgabe der Daten. (D.h. auch die Klasse Kfz hat eine print()-Funktion für die Ausgabe der Kfz-Daten. Als Testprogramm für Ihre Klassen legen Sie in der main()-Funktion einen Pkw und einen Lkw an und geben deren Werte aus. Achten Sie auf guten objektorientierten Zugriffsschutz, d.h. alle Elemente in allen Klassen sind private. Meine Ideen: Meine ersten Lösungsansätze (leider macht mir der jeweils der super () - Aufruf in Zeile 8 Schwierigkeiten und ich weiß nicht warum. Ich möchte doch die Eigenschaften kennzeichen und PS von der Basisklasse erben?)
Klasse KFZ:
Klasse LKW:
Vielen Dank für Eure Antworten :-) |
||||||||||||||||||||
|
|||||||||||||||||||||
28.05.2015, 16:00 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | Du brauchst noch eine Klasse KFZ, von der sollst du erben. Und die muss auch einen Konstruktor haben, der 2 Argumente entgegennimmt. |
||||||||||||||||||||
28.05.2015, 16:25 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
Templex | Hallo, wie die eulerscheZahl schon schreibt. Eine Oberkalsse KFZ wäre an der Stelle sehr hilfreich. Dieser Klasse kannst du dann auch die gemeinsamen Attribute, also diejenigen die beide Unterklassen gemeinsam haben, verpassen.
Anschließend kannst du von dieser Klasse erben, und die spezielleren Attribute, also die die jeweils nur der LKW oder der PKW haben soll, dort spezifizieren. Und Dann funktioniert auch super. Beispielsweise so:
Weiterhin ist es üblich die Attribute einer Klasse an den Anfang der selbigen zu schreiben. Dort sind sie besser zu finden, als zwischen den einzelnen Methoden. Ist aber nur eine Konvention zur Verbesserung der Lesbarkeit deines Codes. Ich hoffe ich konnte helfen, Tplex |
||||||||||||||||||||
28.05.2015, 19:38 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
Björn | Vielen Dank Euch beiden für die Hilfe :-) |
||||||||||||||||||||
Anzeige | |||||||||||||||||||||
|
|||||||||||||||||||||
29.05.2015, 02:12 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
Björn | Eine Frage hätte ich noch: Ich habe mein Kennzeichen und die PS jetzt auf private gesetzt und mit getter- und setter Methoden gearbeitet. Bekomme aber in den Subklassen die Fehlermeldung, dass Kennzeichen und PS private Access haben. Mir ist klar, dass es mit protected bzw. public funktioniert, aber ist das mit private nicht möglich? Hier noch einmal der Code (jetzt auch mit den toString - Methoden)
Die Oberklasse KFZ:
Die Subklasse PKW:
Die zweite Subklasse LKW:
Vielen Dank für die Antworten ;-) |
||||||||||||||||||||
30.05.2015, 05:53 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | Wenn ein Feld private ist, kannst du auch mit der abgeleiteten Klasse nicht darauf zugreifen, das ist die Definition von private. Du kannst stattdessen den getter verwenden:
|
||||||||||||||||||||
30.05.2015, 11:39 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
Björn | Super, vielen Dank für deine Antwort. Der Rest hat soweit gepasst? |
||||||||||||||||||||
30.05.2015, 11:43 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | Ja. |
||||||||||||||||||||
30.05.2015, 12:20 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
Björn | Super, vielen Dank :-) |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|