Dziedziczenie i polimorfizm

Przykład 3.1

Poniżej znajdziesz definicję klasy Figura oraz definicje klasy Rectangle, która dziedziczy po klasie Figura.

#import <Foundation/Foundation.h>
@interface Figura : NSObject
{
   int width;
   int height;
}

-(void)initWith:(int)w andWith:(int)h;

-(int)area;

@end

#import "Figura.h"

@implementation Figura

-(void)initWith:(int)w andWith:(int)h
{
   width = w;
   height = h;
}

-(int)area
{
   return 0;
}

@end

#import <Foundation/Foundation.h>
#import "Figura.h"

@interface Rectangle : Figura

-(int)area;

@end

#import "Rectangle.h"

@implementation Rectangle

-(int)area
{
   return width * height;
}

@end

#import <Foundation/Foundation.h>
#import "A.h"
#import "Rectangle.h"
#import "Figura.h"

     int main(int argc, const char * argv[])
{

   @autoreleasepool
   {

      Figura* obj;
      obj = [[Rectangle alloc]init];
      [obj initWith:7 andWith:10];
      int k = [obj area];
      NSLog(@"%i",k);

   }
   return 0;
}

Przeanalizuj przykład. Odpowiedz na pytanie na czym polega dziedziczenie i polimorfizm. skaż odpowiednie miejsca w przykładzie. Następnie utwórz odpowiedni projekt w XCode.

Ćwiczenie 3.1.1

Do projektu dodaj metodę obliczającą obwód danej figury. Następnie dodaj odpowiednie pola reprezentujące współrzędne wierzchołka figury i napisz odpowiednią implementację metody realizującej przesuwanie figury.

Ćwiczenie 3.1.2

Dodaj do projektu analogiczną implementację klasy której obiekty będą reprezentowały okręgi na płaszczyźnie oraz dodaj do niej implementacje metod. Podobnie napisz implementacje klas reprezentujących jeszcze dwie inne figury geometryczne. Następnie utwórz tablicę obiektów typu Figura i oblicz sumaryczną powierzchnię wszystkich figur z tej tablicy.

Następna część - Wstęp