码迷,mamicode.com
首页 > 其他好文 > 详细

Object-c 之 复合与存取

时间:2014-07-21 16:42:12      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:object-c

说到复合与存取,我做完这个例子,感觉就是类的集合,也没什么东西。

主Car类:

#import "Engine.h"
#import "Tire.h"
//汽车
@interface Car : NSObject
{
    Engine *engine;
    Tire *tires[4];
}
-(Engine *)engine;
-(void)setEngine:(Engine *) newEngine;
-(Tire *)tireAtindex:(int) index;
-(void)setTile:(Tire *)tile atindex:(int) index;
-(void)print;
@end

#import "Car.h"

@implementation Car

-(id)init{
    NSLog(@"Car init");
    if(self=[super init]){
        engine=[Engine new];
        tires[0]=[Tire new];
        tires[1]=[Tire new];
        tires[2]=[Tire new];
        tires[3]=[Tire new];
        
    }
    return (self);
}

-(Engine *)engine{
    return engine;
}

-(void)setEngine:(Engine *)newEngine{
    engine=newEngine;
}

-(void)setTile:(Tire *)tile atindex:(int)index{
    if(index<0||index>3){
        NSLog(@"bad index %d in setTire:atindex",index);
        exit(1);
    }
    tires[index]=tile;
}

-(Tire *)tireAtindex:(int)index{
    if(index<0||index>3){
        NSLog(@"bad index %d in tireAtindex",index);
        exit(1);
    }
    return tires[index];
}

-(void)print{
    NSLog(@"%@",engine);
    NSLog(@"%@",tires[0]);
    NSLog(@"%@",tires[1]);
    NSLog(@"%@",tires[2]);
    NSLog(@"%@",tires[3]);
}
@end

Tire类

#import <Foundation/Foundation.h>
//轮胎
@interface Tire : NSObject

@end

#import "Tire.h"

@implementation Tire
- (NSString *)description{
    return (@"I'm a tire,I last a while!");
}
@end

Tire的子类 AllWeatherRadial.h

#import "Tire.h"

@interface AllWeatherRadial :Tire

@end

#import "AllWeatherRadial.h"

@implementation AllWeatherRadial
-(NSString *)description{
    return (@"I'm a tire for rain or shine!");
}
@end

Engine类

#import <Foundation/Foundation.h>
//引擎
@interface Engine : NSObject

@end

#import "Engine.h"

@implementation Engine
-(NSString *)description{
    return (@"I'm a engine,wuwuwu");
}
@end

Engine子类 Slant6

#import "Engine.h"

@interface Slant6 : Engine

@end

#import "Slant6.h"

@implementation Slant6
-(NSString *)description{
    return (@"I'm a slant6 veoom");
}
@end

主函数

#import"Car.h"
#import"AllWeatherRadial.h"
#import"Slant6.h"

int main(int argc, const char * argv[])
{
    Car *car=[Car new];
    Slant6 *engine=[Slant6 new];
    [car setEngine:engine];
    
    for(int i=0;i<4;i++){
        Tire *tire=[AllWeatherRadial new];
        [car setTile:tire atindex:i];
    }
    [car print];
    return (0);
}

运行结果

bubuko.com,布布扣

Object-c 之 复合与存取

标签:object-c

原文地址:http://blog.csdn.net/lihuozhiling0101/article/details/38018795

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!