'맥프로그래밍'에 해당되는 글 9건

  1. 2009.05.24 Objective-C: Inheritance
반응형
OOP에서 클리스와 객체간의 관계를 설명할때에 Inheritance 와 Composition 은 자주 등작하는 단어 이다. Inheritance는 부모 클래스의 특성과 함수들을 물려 받을수 있도록 해주어 코드의 재활용성을 높여주고 composition은 하나의 오브젝트가 다른 오브젝트의 Reference를 가지고 있는 경우이다.

Inheritance는 기본적으로 부모의 특성을 물려 받는다.

Tire와 Engine으로 구성된 Car 를 만든다고 해보자.

우선 Tire를 가지고 Inheritance를 설명한다.

1. Base Tire
@interface Tire : NSObject
{
int RunTime;
}
-(void) Run: (int) x;
-(void) printStatus;
@end
@implementation Tire
-(id) init
{
RunTime=0;
NSLog(@"Tire is installed");
return (self);
}
-(void) Run : (int) x
{
RunTime=RunTime+x*2;
}
-(void) printStatus
{
NSLog(@"RunTIme:%d",RunTime);
}
-(NSString*) description
{
return(@"I'am a base tire");
}
@end

2. Tire를 상속 받은 DoubleWidhTire
@interface DoubleWidthTire : Tire
@end
@implementation DoubleWidthTire
-(void) Run: (int) x
{
[super Run: x/2];
}
-(NSString*) description
{
return(@"I'am a Double Width tire");
}
@end
 Tire와 DoubleWidthTire는 init 함수와 printStatus 함수를 공유한다. 그리고 Run에서는 부모 클래스의 Run 함수를 호출하기 위해서 super 키워드를 사용하였다.

3. Main 함수
int main(int argc, const char* argv[]) {
Tire *g_tire;
g_tire=[Tire new];
NSLog(@"Tire:%@",g_tire);
[g_tire printStatus];
[g_tire Run: 10];
[g_tire printStatus];
DoubleWidthTire *dg_tire;
dg_tire=[DoubleWidthTire new];
NSLog(@"Tire:%@", dg_tire);
[dg_tire printStatus];
[dg_tire Run: 10];
[dg_tire printStatus];
return 0;
}
NSLog 함수에서 %@는 class의 description을 호출한다. Tire 와 DoubleWidthTire는 NSString을 리턴한다.


반응형
Posted by alias
,