
Kapitel 2 - Fortsetzung
Unser Beispiel beginnt mit:
@interface Bruch: Object
Daran können Sie erkennen, dass sowohl Bruch als auch Object Klassen sind. Das ist der Sinn an der Sache: Sie können auf einen Blick erkennen, was eine Klasse ist und was ein Objekt. Denn wenn Sie ein fremdes Programm und dessen Quelltext verstehen wollen, sehen Sie sofort: „Aha, das ist eine Klasse, das eine Instanz...usw.“ Auch wenn Sie fremde Hilfe benötigen und jemandem den Quelltext senden, kann dieser sofort richtig interpretieren. Ich rate Ihnen also dringend sich an dieses ungeschriebene Gesetz zu halten. Nehmen Sie auch immer Namen mit denen Sie etwas anfangen können. Eine Klasse Hummel zu nennen, wenn Sie eigentlich Wespe meinen, ist nicht sinnvoll, aber wenn Sie sich selbst und andere verwirren wollen, bitte schön!.
Das @ vor interface ist ein Symbol, welches in der Programmiersprache C nicht vorkommt. Um Konflikte zwischen C und Objective-C zu vermeiden, werden Objective-C Schlüsselwörter mit einem @ gekennzeichnet.
Was dann folgt ist die Angabe der Instanz-Variablen innerhalb der geschwungenen Klammern. Mit
int zaehler;
int nenner;
geben Sie an, dass die Objekte (die Instanzen) die von der Bruch Klasse erzeugt werden, Ganzzahlen mit dem Namen zaehler und nenner als Varibalen als Daten beinhalten sollen. Erinnern Sie sich daran, dass ich ein Objekt mit einer Nuss verglichen haben. Innen drinnen die Daten, außen herum die Methoden. Die Daten sind die beiden oben genannten Variablen zaehler und nenner. Kommen wir nun also zu den Methoden.
Die Instanz- und Klassen-Methoden
a) Instanz- oder Klassen-Methode?
Sie müssen sich jetzt also überlegen, welche Methoden (Funktionen) Sie Ihrem Objekt hinzufügen wollen und ob Sie die Methode der Klasse oder der Instanz zuordnen wollen. In unserem Beispiel wollen wir den Instanz-Variablen zaehler und nenner Werte zuweisen und Sie nachher am Bildschirm anzeigen. Beschäftigen wir uns zuerst mit Letzterem und deklarieren wir die ausdrucken Methode. Wohlgemerkt ausdrucken und nicht printf. Erst nachher wenn Sie die definieren, wie denn diese ausdrucken Methode funktionieren soll, müssen Sie den printf Befehl verwenden. Die ausdrucken Methode schaut also so aus:
- (void) ausdrucken;
Sie ahnen es vielleicht, das ist wieder eine Syntax die es nicht zu verletzen gilt: jeder Strich, jede Klammer, jedes Semikolon hat seine Bedeutung für den Compiler.
Die Methodendeklaration beginnt mit einem Minus-Zeichen. Damit teilen Sie dem Compiler mit, dass es sich um eine Instanz-Methode handelt. Würde es sich um eine Klassen-Methode handeln, müssten Sie mit einem Plus-Zeichen beginnen. Damit ist klargestellt, ausdrucken soll die Methode einer Instanz sein und nicht von der Klasse selbst.
b) Der Rückgabewert:
Nach der Angabe der Methodenzuweisung folgt die Weisung (Ihre Weisung) ob der Compiler einen Wert zurückgeben soll oder nicht, und wenn ja, welcher Art denn dieser Wert sein soll. Das hat in Klammern zu erfolgen. In unserem Fall ist das void. Ich habe bereits zuvor schon einmal erklärt, das void soviel wie Leerzeichen heisst. Dabei müssen Sie sich einfach überlegen, ob etwas aus dem Inneren Ihrer Nuss (die Daten, die Instanz-Variablen) herausgeholt werden soll. Die Methode ausdrucken benötigt keinen Rückgabewert. Auch die anderen beiden Methoden benötigen das nicht:
- (void) setzeZaehler: (int) n;
- (void) setzeNenner: (int) d;
In diesem Fall wollen Sie was hineingeben, nicht herausholen, Sie wollen nämlich die definierten Instanz-Variablen zaehler und nenner setzen, das heißt einen Wert zuweisen, ein Rückgabewert ist dabei nicht erforderlich. Bedenken Sie: Sie haben zu den Daten nur über die Methoden Zugang.
weiter ---- Objective-C Index ---- Startseite----zurück
EINSTIEG
KAPITEL 1: SCHRITT FÜR SCHRITT ZUM ERSTEN PROGRAMM
KAPITEL 2: OBJEKTE, KLASSEN, INSTANZEN UND METHODEN
KAPITEL 3: DIE VERSCHIEDENEN DATENTYPEN
KAPITEL 4: DIE PROGRAMMSCHLEIFEN
KAPITEL 5: ENTSCHEIDE DICH, ENTWEDER ODER....
KAPITEL 6: UND NOCHMALS KLASSEN
KAPITEL 7: VERERBUNG
KAPITEL 8: POLYMORPHISMUS, DYNASCHISCHE TYPISIERUNG UND DYNAMISCHES BINDEN
KAPITEL 9: NOCH MEHR DATENTYPEN UND VARIABLEN
KAPITEL 10: CATEGORIES, POSING AND PROTOCOL
KAPITEL 11: DER PRÄPROZESSOR