Logo

Objective-C, Xcode und Cocoa Tutorial


 

 

EIN TUTORIAL ZU OBJECTIVE-C, XCODE UND COCOA

 

Kapitel 7 - Fortsetzung

Vererbte Methoden erweitern
Angenommen Sie wollen ein Programm zur Berechnung von Rechtecken erstellen, dann könnte das im Folgenden so aussehen.

 

Programm 7.2
-----------------------------------------------------------------------------------------------------------------
#import <objc/Object.h>
#import <stdio.h>

@interface  Rechteck: Object
{
      int      breite;
      int      laenge;
}

-(void)   setzeBreite: (int) b;
-(void)   setzeLaenge: (int) l;
-(void)   setzeBreite: (int) b  undLaenge:  (int) l;
-(int)    breite;
-(int)    laenge;
-(int)    flaeche;
-(int)    umfang;
@end

 

@implementation Rechteck;

-(void) setzeBreite: (int) b
{
      breite = b;
}

-(void) setzeLaenge: (int) l
{
      laenge = l;
}

-(void) setzeBreite: (int) b undLaenge: (int) l
{
      breite = b;
      laenge = l;
}

-(int) breite
{
      return breite;
}

-(int) laenge
{
      return laenge;
}

-(int) flaeche
{
      return breite * laenge;
}

-(int) umfang
{
      return (breite + laenge) * 2;
}
@end

 

int main (int argc,  char *argv[])
{
      Rechteck  *myRechteck = [[Rechteck alloc]  init];
     
      [myRechteck setzeBreite: 5  undLaenge: 8];
     
      printf ("Rechteck: b = %im, l = %im\n", [myRechteck breite], [myRechteck laenge]);
      printf ("Fläche = %i qm, Umfang = %im\n", [myRechteck flaeche], [myRechteck umfang]);
     
      [myRechteck free];
     
      return 0;
}

Programm 7.1 output
-----------------------------------------------------------------------------------------------------------------
Rechteck: b = 8m, l = 5m
Fläche = 40qm, Umfang = 26m
----------------------------------------------------------------------------------------------------------------



Das obere Programm dürfte für sich klar sein und keiner genaueren Erklärung mehr bedürfen. Jetzt wollen Sie nicht mehr mit Rechtecken sondern mit Quadraten arbeiten. Eine Quadrat unterscheidet sich vom Rechteck bekanntlich dahingehend, dass beim Quadrat die Kantenlängen gleich sind. Sie können das obere Programm direkt erweitern.

 

#import <objc/Object.h>
#import <stdio.h>

@interface  Rechteck: Object
{
      int      breite;
      int      laenge;
}

-(void)   setzeBreite: (int) b;
-(void)   setzeLaenge: (int) l;
-(void)   setzeBreite: (int) b  undLaenge:  (int) l;
-(int)    breite;
-(int)    laenge;
-(int)    flaeche;
-(int)    umfang;
@end

 

@implementation Rechteck;

-(void) setzeBreite: (int) b
{
      breite = b;
}

-(void) setzeLaenge: (int) l
{
      laenge = l;
}

-(void) setzeBreite: (int) b undLaenge: (int) l
{
      breite = b;
      laenge = l;
}

-(int) breite
{
      return breite;
}

-(int) laenge
{
      return laenge;
}

-(int) flaeche
{
      return breite * laenge;
}

-(int) umfang
{
      return (breite + laenge) * 2;
}
@end

@interface Quadrat: Rechteck

-(void) setzeKantenlaenge: (int) s;
-(int)  kLaenge;
@end

@implementation Quadrat: Rechteck;

-(void) setzeKantenlaenge: (int) s
{
    [self setzeBreite: s undLaenge: s];
}

-(int) kLaenge
{
    return breite;
}
@end

int main (int argc,  char *argv[])
{
    Quadrat  *myQuadrat = [[Quadrat alloc]  init];
     
    [myQuadrat setzeKantenlaenge: 5];
     
    printf ("Quadrat Kantenlaenge = %im\n", [myQuadrat kLaenge]);
    printf ("Flaeche = %im, Umfang = %im\n",
            [myQuadrat flaeche], [myQuadrat umfang]);
     
    [myQuadrat free];
     
    return 0;
}

Programm 7.2 output
-----------------------------------------------------------------------------------------------------------------
Quadrat Kantenlaenge = 5m
Flaeche = 25m, Umfang = 20m

test78 has exited with status 0.
-----------------------------------------------------------------------------------------------------------------

Genau so gut könnten Sie auch die einzelnen Klassen auf verschiedene Dateien aufteilen können.


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