2. Von objektorientierten Ameisen
2. Von objektorientierten Ameisen
2. Von objektorientierten Ameisen
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