Übung09

Gast
Gast

Re: Übung 9

Beitrag von Gast » 8. Mär 2014 22:17

SophiaLi1 hat geschrieben:
gast hat geschrieben: Außerdem ist mir unklar, wie die Methode getOhm() in der Klasse SerialResistor funktionieren soll. Die Methode getOhm() in der SerialResistor Klasse lässt das Objekt r1 vom Typ Resistor die Methode getOhm aufrufen. Die Klasse Resistor ist jedoch ein Interface, in dem die Methode getOhm jedoch nicht implementiert ist, wie kann das funktionieren?
Der statische Typ kann ein Interface sein, solange der dynamische Typ eines Objekts eine Klasse ist, in dem die Methode getOhm() implementiert ist.
Aus welcher Klasse stammt denn die Methode getOhm(), die von r1 aufgerufen wird? Aus SimpleResistor? Wenn ja, woher "weiss" r1, welche getOhm()-Methode es aufrufen soll, wenn mehrere Klassen das Interface implementieren?

Gast
Gast

Re: Übung09

Beitrag von Gast » 10. Mär 2014 20:06

Ich versteh nicht , wie wir in der abstrakten Klasse AbstractResistorNet eine Objektvariable vom Interface Resistor erstellen können. ICh dachte man darf keine Objekt von einem Interface machen ?

Benutzeravatar
aDramaQueen
Mausschubser
Mausschubser
Beiträge: 84
Registriert: 10. Jan 2014 16:34

Re: Übung09

Beitrag von aDramaQueen » 10. Mär 2014 20:53

Java arbeitet von Innen nach Außen! Wenn man auf das Testobjekt:

Resistor r = new ParallelResistorNet(new SerialResistorNet(new ParallelResistorNet(r1, r3), r2),new ParallelResistorNet(new SerialResistorNet(r4, r5), r6));

die Methode aufruft:

r.getOhm();

fängt java nun bei der Innersten "Schachtelung" an. getOhm() funktioniert ja nur mit ints und nicht mit irgendwelchen Objekten, also MÜSSEN zuerst die inneren Werte ermittelt werden, damit dann die schließlich die Äußeren gerechnet werden können. Das ist im Übrigen auch der Grund warum die resistors()-Methode funzt. Für die Testklasse ergibt sich etwa folgendes Muster, wenn man für jede Schachtelung ne andere Klammer nimmt:

r = addieren[addieren{addieren(1,1),1}],[addieren{addieren(1,1),1}]

Das mit den Objekten is so ne Sache....
Bin mir bei folgender Aussage ned sicher: Das hier SimpleResistor instanziert wird, wenn du eigentlich das Interface instanzierst, hängt damit zusammen, das nur SimpleResistor als einzige nicht abstrakte Klasse Resistor implementiert. Hätten wir nun mehrere Klassen die nicht abstrakt wären und ebenfalls Interface implementieren, müssten wir genauere Angeben machen was es denn nun sein soll (Vgl. Miner-Projekt: "IModel modelXY = new Model()" hier wäre modelXY dann eben die spezifisch gemeinte Klasse die gewählt wurde). Ist aber in der Übung schlicht nicht nötig, weil es eben nur eine solche Klasse gibt...
Bild
...Never go full retard...

m_flaig
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 272
Registriert: 27. Sep 2009 14:02

Re: Übung09

Beitrag von m_flaig » 11. Mär 2014 13:56

Hallo,

wie gewünscht ist nun auch eine Musterlösung zu Aufgabe 3b) in moodle online.

Viele Grüße,
M.Flaig

Antworten

Zurück zu „Archiv“