Logo

Objective-C, Xcode und Cocoa Tutorial


 

 

EIN TUTORIAL ZU OBJECTIVE-C, XCODE UND COCOA

 

Kapitel 7 - Fortsetzung

Am folgenden Beispiel soll das Konzept der Vererbung weiter vorgestellt werden. Bilden wir eine Klasse mit nur einer Methode - Achtung: das vollständige Programm folgt weiter unten:

@interface ErsteKlasse: Object
{
int x;
}
- (void) setzZahl;
@end

@implementation ErsteKlasse;
- (void) setzeZahl
{
x = 10;
}
@end

Mit der setzeZahl Methode haben wir die Instanzvariable von ErsteKlasse Klasse auf den Wert  10 gesetzt. Bilden wir nun eine neue Klasse:

@interface ZweiteKlasse: ErsteKlasse
- (void) druckeZahl;
@end

@implementation ZweiteKlasse;
- (void) druckeZahl
{
printf ("Die Zahl x hat einen Wert von %i\n", x);
}
@end

 



Im ersten Teil wird aus der Superklasse Object eine Subklasse ErsteKlasse gebildet. Diese wird deklariert und implementiert. Von der Subklasse ErsteKlasse wird jetzt eine neue Subklasse ZweiteKlasse definiert, somit wird ErsteKlasse zur Elternklasse von ZweiteKlasse.

Wenn man sich nun die Hierarchie ansieht, dann wurde von der Superklasse Object die Klasse ErsteKlasse gebildet und dieser Klasse dann neue Methoden hinzugefügt, nämlich die Methode setzeZahl  mit der Variable x. Dann wurde von der Klasse ErsteKlasse die neue Klasse ZweiteKlasse gebildet, die sowohl die Methoden von Object (z.B. alloc oder init), als auch die neuen Methoden von ErsteKlasse mitbekommen hat (setzeZahl). Das gesamte Beispiel würde dann so aussehen:

Programm 7.1
-----------------------------------------------------------------------------------------------------------------

#import <stdio.h>
#import <objc/Object.h>
@interface ErsteKlasse: Object
{
int x;
}
- (void) setzeZahl;
@end

@implementation ErsteKlasse;
- (void) setzeZahl
{
x = 10;
}
@end

@interface ZweiteKlasse: ErsteKlasse
- (void) druckeZahl;
@end

@implementation ZweiteKlasse;
- (void) druckeZahl
{
printf ("Die Zahl x hat einen Wert von %i\n", x);
}
@end

int main (int argc, char *argv[])
{
ZweiteKlasse *z = [[ZweiteKlasse alloc]init];
[z setzeZahl];
[z druckeZahl];
[z free];
return 0;
}

Programm 7.1 output
-----------------------------------------------------------------------------------------------------------------
Die Zahl x hat einen Wert von 10

Programm7_1 has exited with status 0.
-----------------------------------------------------------------------------------------------------------------

Im Programm Abschnitt haben sie mit dem Methodenaufruf [z setzeZahl] eine Nachricht an eine Instanz der ZweiteKlasse geschickt, obwohl Sie diese Methode bei ZweiteKlasse nie implementiert haben. Vielmehr ist es so, dass ZweiteKlasse diese Methode von ErsteKlasse geerbt hat. Was Sie dabei beachten müssen, ist dass nicht nur die Methoden (z.B. [setzteZahl]) vererbt wurde, sondern auch die Instanzvariablen ( x wurde bei ErsteKlasse der Wert 10 zugewiesen und bei ZweiteKlasse aufgerufen). Natürlich können Sie jeder Klasse ihre eigenen Instanzvariablen zuweisen.


weiter ---- Objective-C Index ---- Startseite----zurück


Das Inhaltsverzeichnis

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

 

 

 

Links