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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!