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.
Aufgabe 3<br />
Schreiben Sie sinnvolle Anweisungen für die Methode Sieht(Käfer käfer).<br />
Verwenden Sie: AktuelleLast, AnzahlInSichtweite, GreifeAn(käfer),<br />
LasseNahrungFallen(), GeheWeg<strong>Von</strong>(käfer). (Mögliche Lösung am Kapitelende)<br />
Variable, Felder und Eigenschaften<br />
An dieser Stelle müssen wir klären, was der Unterschied zwischen Variablen,<br />
Feldern und Eigenschaften ist.<br />
• Variable-Felder:<br />
Beide sind im RAM repräsentiert, - allerdings dürfen Felder grundsätzlich nur<br />
außerhalb von Methoden definiert werden. Sie sind in der ganzen Klasse<br />
verwendbar.<br />
Man kann bei der Definition von Feldern durch Zugriffsspezifizierer, wie public<br />
oder privat, regeln, ob sie außerhalb der Klasse sichtbar sind oder nicht.<br />
Felder werden im Gegensatz zu Variablen automatisch initialisiert.<br />
Numerische Felder bekommen dabei eine 0, Strings eine leere Zeichenkette ““<br />
• Felder-Eigenschaften:<br />
Wer lange genug für .NET programmiert hat, vergisst möglicherweise, dass es<br />
einen Unterschied zwischen den beiden Begriffen gibt. Und das kommt nicht<br />
von ungefähr. Fragt man beispielsweise durch<br />
aL = PowerAmeise.AktuelleLast<br />
einen aktuellen „Zustand“ unserer Ameise ab, so liegt einem auch der Begriff<br />
„Eigenschaft“ der Ameise auf der Zunge. Die Tatsache aber, dass<br />
AktuelleLast groß geschrieben ist, deutet darauf hin, dass AktuelleLast eine<br />
Methode und kein Feld ist. Und eben diese spezielle Methode wird<br />
Eigenschaft genannt. Verwirrend? Nicht, wenn Sie sich den folgenden<br />
Abschnitt ansehen!<br />
Was ist AktuelleLast oder AnzahlInSichtweite? Ein Feld?<br />
Schauen wir doch einfach mal in der Profiversion nach der Datei Insekt.cs.<br />
Dort gibt es aktuelleLast (kleingeschrieben) und AktuelleLast (großgeschrieben):<br />
private int aktuelleLast = 0;<br />
public int AktuelleLast<br />
{<br />
get { return aktuelleLast; }<br />
internal set{ aktuelleLast = value;}<br />
}<br />
Hier wird klar, dass es sich bei aktuelleLast um ein Feld handelt. Die Initialisierung<br />
mit dem Wert 0 ist nur deshalb vonnöten, weil in einem vorhergehenden Aufruf der<br />
Methode AktuelleLast ein von 0 verschiedener Wert gesetzt sein könnte.<br />
24