FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P2 Blatt G

P2 Blatt G 2004-05-17 20:04
Dennis-
Hab probs mit dem code-wiederverwenden mittels forwarding

Die Klasse CD zu erstellen und die geforderten Methoden (+ Methoden die das interface vorschreibt) schreiben hab ich.

Nun wollt ich dvd machen und dachte, um dort die Methoden, die das interface vorschreibt nicht erneut implementieren zu müssen, könnte ich den code von 'CD' übernehmen.

Muss ich dafür eine 'ZwischeMutterklasse' schaffen wie z.b. Optisches-Medium wo ich die Methoden des Interfaces implementiere und von dieser dann CD, DVD usw. erbe um dort dann nur die spezifischen methoden schreiben zu müssen?

Oder muss ich 'class DVD extends CD' nutzen? Aber das wäre ja Unsinn.

edit:
hab gerad erfarhren, dass c&p auch abgenommen wird
von mir aus kann das topic also gelöscht werden :)

Re: P2 Blatt G 2004-05-17 22:40
Slater
schadet doch nicht ;)

Re: P2 Blatt G 2004-05-17 22:53
leif
Bei "Forwarding" erbst Du gerade nicht von der Klasse, von der Du die Funktionalität übernehmen willst (wie Du schon für diesen Fall schreibst: "Das wäre ja Unsinn."), sondern leitest einfach alle Methodenaufrufe weiter.

So a la
public void tuWas() { objektAndererKlasse.tuWas(); }

Re: P2 Blatt G 2004-05-17 23:14
Dennis-
Aber handelt es sich beispielsweise um objektAndererKlasse.setzeKommentar(String kommentar)
dann wird ja beim 'objektAndererKlasse' der Kommentar gesetzt und nicht bei meinem aktuellen Objekt.
Die Punkt-Notations Sache hatten wir auch schon einige Übungszettel vorher.
Daher hatte ich hinter der Formulierung

"Eine Klasse kann in Java auch mehrere Interfaces implementieren und auch ein Interface kann von
mehreren Interfaces erben (mit dem Schlüsselwort extends). Dies nennt man Mehrfach(typ)vererbung oder multiples Subtyping. Wenn eine Sprache (wie auch Java) keine Mehrfachvererbung zwischen Klassen zulässt, es also keine Möglichkeit gibt, von mehreren Klassen Methoden zu erben, kann bereits existierender Code stattdessen über Forwarding wiederverwendet werden."

irgendeine geniale, neue Sache vermutet, die mir das rumkopieren erspart :)

Re: P2 Blatt G 2004-05-18 00:30
chris
Bei CD, DVD, VideoSpiel darfst du fleißig kopieren, das Forwarding brauchst du in der Zusatzaufgabe für die mietbar-Merkmale. Da machst du das dann wie von leif beschrieben…

Re: P2 Blatt G 2004-05-18 01:02
leif
Aber handelt es sich beispielsweise um objektAndererKlasse.setzeKommentar(String kommentar)
dann wird ja beim 'objektAndererKlasse' der Kommentar gesetzt und nicht bei meinem aktuellen Objekt.
Ja. Dann mußt Du zum Auslesen des Kommentares eben auch objektAndererKlasse.gibKommentar() verwenden und kannst nicht einfach auf ein Attribut zugreifen.