[JAVA] Hilfe beim Programmieren und Verständnis-Fragen zu Code-Beispielen ...

AW: [JAVA] Hilfe beim Programmieren und Verständnis-Fragen zu Code-Beispielen ...

So hat's jetzt zu 75 % geklappt: ... ;)
Code:
public boolean addMember(Member m) {
        if (this.allocation < this.size) {
            this.section[this.allocation] = m;
            this.overallIncome += this.section[this.allocation].getIncome();
            this.overallCosts += this.section[this.allocation].getCosts();
            this.allocation++;
        } else {
            System.out.println("Member can't be added! Section already full.");
            return false;
        }
        return true;
    }
^^ Nur der TestSectionAdd Testfall liefert noch einen Fehler, weil er sich true erwartet, aber false ist. Liegt aber höchstwahrscheinlich daran, dass ich mich einfach bei den Kosten verrechnet habe. Der andere, gleich-aufgebaute Testfall funktioniert ja auch. :)

Taschenrechner her und dann kann ich das sicher korrigieren.

Nur die vielfache Ausgabe der Fehlermeldung beim Hinzufügen einer Section in eine bereits volle Section verstehe ich noch nicht. Ich habe ja jetzt gar keine Schleife mehr im Code?!

[EDIT]
Jetzt stimmen alle Tests. :) Zwei Zeilen in addSection() haben noch gefehlt:
Code:
public boolean addSection(Section section) {
        if (this.allocation < this.size) {
            this.sections.add(section);
            [COLOR=royalblue][B]this.overallIncome += section.overallIncome;
            this.overallCosts += section.overallCosts;[/B]            this.allocation++;
        } else {
            System.out.println("Sub-Section can't be added! Section already full.");
            return false;
        }
        return true;
    }
Anhang anzeigen Fragen.7z
Anhang anzeigen Fragen 2.7z
 
Zuletzt bearbeitet:
AW: [JAVA] Hilfe beim Programmieren und Verständnis-Fragen zu Code-Beispielen ...

Ich versuche gerade, den Fragenkatalog für die Klausur durchzugehen und hänge gerade bei folgender Frage:
[FONT=&quot]Was ist unter dynamischer Bindung zu verstehen und wo liegt hier der Vorteil gegenüber der statischen Bindung? Welche Rolle spielt hier das Prinzip Ersetzbarkeit?[/FONT]
Ich hätte jetzt erstmal gesagt ...

Dynamische Bindung: Zur Übersetzungszeit ist noch nicht bekannt, von welchem Typ ein Objekt sein wird bzw. zu welcher Klasse es gehört. Erst zur Laufzeit wird entschieden, welche Implementierung aufgrund eines Methodenaufrufs angewandt wird.

^^ Aber hat da wer eine wirklich vernünftige und vor allem ausführliche Antwort?! Auch in Bezug auf die beiden anderen Punkte (Vorteile gegenüber statischer Bindung und Ersetzbarkeit)?

[EDIT]
Als Vorteil würde mir noch einfallen, dass einer Variable bei dynamischer Bindung verschiedene Objekte (unterschiedlicher Klassen) zugewiesen werden können (falls man das so formulieren kann). Bsp.:
Code:
if (zufallszahl%2 == 0) { 
    koerper = new Kreis(i); 
} else { 
    koerper = new Quadrat(i); 
}
Capture.JPG
 
Zuletzt bearbeitet:
AW: [JAVA] Hilfe beim Programmieren und Verständnis-Fragen zu Code-Beispielen ...

Dynamische Bindung: Zur Übersetzungszeit ist noch nicht bekannt, von welchem Typ ein Objekt sein wird bzw. zu welcher Klasse es gehört. Erst zur Laufzeit wird entschieden, welche Implementierung aufgrund eines Methodenaufrufs angewandt wird.
Das ist erstmal eine richtige Beschreibung von dynamischer Bindung. Ein Vorteil wird hier auch schon "genannt", dass man mehr Freiheit zur Runtime hat. Was Ersetzbarkeit ist, weiß ich gerade nicht. Wahrscheinlich ist das wieder so ein schrecklich eingedeutschtes Wort, was im originalen englisch jedem Programmierer was sagen würde.
Ich denke eine gute Antwort in diesem Fall wäre, wenn du die Konzepte der Objekt Orientierten Programmierung erwähnst. Wie der Wikipedia Artikel zu OOP sagt, ist Polymorphie ein Konzept von OOP.
Polymorphie
Fähigkeit eines Bezeichners, abhängig von seiner Verwendung unterschiedliche Datentypen anzunehmen. Verschiedene Objekte können auf die gleiche Nachricht unterschiedlich reagieren.
Und diese Polymorphie wird eben unter anderem durch dynamische Bindung realisiert. Zumindest die Polymorphie zur Runtime. Compiletime Polymorphie sollte durch Generics in Java (die kastrierte Variante von Templates) realisiert sein, aber hierbei bin ich mir nicht sicher.
Jedenfalls: Konzepte von OOP in der Klausur erwähnen is immer gut! ;)

[EDIT]
Als Vorteil würde mir noch einfallen, dass einer Variable bei dynamischer Bindung verschiedene Objekte (unterschiedlicher Klassen) zugewiesen werden können (falls man das so formulieren kann).

Das hat nichts mit dynamischer Bindung zu tun. Dynamische Bindung wird nur bei dem Aufrufen einer Methode angewendet! Was du beschriebst ist einfach implizites Casting zwischen Super- und abgeleiteten Klassen. Man kann auch ohne dynamisches Binden einer Variabel vom Typ SuperClass ein Objekt vom Typ DerivedClass zuweisen (obwohl es erstmal nicht so viel Sinn ergibt).

Hoffe, dass es das ein wenig klarer gemacht hat.

LG
Lukas
 
Zuletzt bearbeitet:
AW: [JAVA] Hilfe beim Programmieren und Verständnis-Fragen zu Code-Beispielen ...

Ok, danke. Ich glaube, "Ersetzbarkeit" meint genau das, was ich ganz unten in meinem vorigen Posting mit dem Code und dem Bild angedeutet habe?! Aber K. A., der Lehrer ist Deutscher (in Österreich) und verwendet öfters mal "eingedeutschte" Wörter. Aus "Runtime" wird "Laufzeit", aus "Compile-time" wird "Übersetungszeit", usw. ... Egal.

Das mit der Polymorphie habe ich meiner Antwort noch hinzugefügt. :)
 
AW: [JAVA] Hilfe beim Programmieren und Verständnis-Fragen zu Code-Beispielen ...

Ok, danke. Ich glaube, "Ersetzbarkeit" meint genau das, was ich ganz unten in meinem vorigen Posting mit dem Code und dem Bild angedeutet habe?! Aber K. A., der Lehrer ist Deutscher (in Österreich) und verwendet öfters mal "eingedeutschte" Wörter. Aus "Runtime" wird "Laufzeit", aus "Compile-time" wird "Übersetungszeit", usw. ... Egal.

Das mit der Polymorphie habe ich meiner Antwort noch hinzugefügt. :)

Oh, ich dachte, es ginge um Uni/FH ^_^
Das mit eingedeutschten Wörtern kenn ich leider auch von Professoren, die statt Queue Schlange und statt Stack Keller verwenden. "Und jetzt returnieren wir diesen wert.." Ja es ist schrecklich -_-
 
AW: [JAVA] Hilfe beim Programmieren und Verständnis-Fragen zu Code-Beispielen ...

Ja, eh. FH in Österreich, aber ich nenne die Typen trotzdem "nur" Lehrer. Viele von denen haben ja nicht mal eine pädagogische Ausbildung ...

BTW: Wenn du's wirklich extrem haben willst --> "Modern Operating Systems" von Tanenbaum in der deutschen Version lesen. :fresse:
 
Zurück