14.12.2012 Aufrufe

2. Von objektorientierten Ameisen

2. Von objektorientierten Ameisen

2. Von objektorientierten Ameisen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Überladen ist bequem<br />

In Kapitel 5.1 haben wir „überladene“ Methoden behandelt. Hier an diesem Beispiel<br />

können Sie Ihre Kenntnisse darüber vertiefen.<br />

In Programmiersprachen, wie PHP, muss man darüber kein Wort verlieren. Diese<br />

Sprachen sind bequem zu handhaben, weil sie nicht typensicher sind. Definiert<br />

man dort eine Methode NimmMal(Int a, Int b), die das Produkt der Parameter a und<br />

b berechnen soll, so meckert der Interpreter nicht, wenn man die Methode mit<br />

double-Variablen füttert. Das klingt sinnvoll. Allerdings meckert er ebensowenig,<br />

wenn man für a den String „123“ und für b die Integerzahl 2 wählt, also „123“ * <strong>2.</strong> Das<br />

Ergebnis wird die Integerzahl 246 sein.<br />

Wenn man auch dies noch für sinnvoll hält, dann stutzt man mit Sicherheit, wenn<br />

NimmMal(hallo, nasowas!) ein Ergebnis, wie 0 ausgibt. Spätestens jetzt wird klar,<br />

dass Typensicherheit eine sehr wichtige Eigenschaft der Programmiersprachen ist.<br />

Der Compiler von C# lässt nicht einmal zu, wenn man für die Variablen double-<br />

Größen verwendet und bewahrt uns dadurch vor schwer zu entdeckenden Fehlern.<br />

Trotzdem kann man auch in C# und .NET Methoden für verschiedene Parameter fit<br />

machen. Man verwendet den gleichen Methodennamen Nimm() innerhalb der<br />

Klasse MeinePowerAmeise für verschiedene Methoden. Dieser Vorgang wird, wie<br />

Sie wissen, überschreiben von Methoden genannt.<br />

(Eigentlich werden ja nicht die Methoden Nimm() und ZielErreicht() überschrieben, sondern deren<br />

Bezeichner Nimm und ZielErreicht.…)<br />

Aufgrund der verschiedenarten Parameter kann der Compiler, trotz Gleichheit der<br />

Bezeichner, die richtige Methode zuordnen.<br />

Noch etwas ist an der Angabe der Intellisens<br />

interessant: Die Klasse Ameise hat die<br />

Nimm()-Methode offensichtlich von der Basisklasse Insekt geerbt. In der Klasse<br />

MeinePowerAmeise wird die Methode jetzt überschrieben. Woran erkennt man das?<br />

Zurück zur Simulation.<br />

Eine Ameise am Zucker soll den Zucker aufnehmen (Nimm(zucker)) und sich dann in<br />

Richtun Bau aufmachen:<br />

public override void ZielErreicht(Zucker zucker)<br />

{<br />

Nimm(zucker);<br />

GeheZuBau();<br />

}<br />

Aufgabe 2<br />

Testen Sie nun die Änderungen.<br />

Erfreulich, dass das<br />

Nahrungskonto durch den<br />

gesammelten Zucker wächst, und<br />

somit das Punktekonto<br />

wenigstens bescheiden wächst.<br />

Verbessern Sie die Fähigkeit<br />

22

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!