2015-10-13 OC语言中的复合

复合,就是对象之间的组合,它不限制对象的个数,但至少有两个对象。
spa

复合时,将要复合的对象(类实例化)的头文件导入被复合的类的头文件中,并在接口中定义复合对象的对象类型和设置方法的声明。.net

具体细节用实例说明;3d

如 如今有一个汽车,它由轮胎和引擎组成orm

main.m
对象

#import <Foundation/Foundation.h>接口

#import "Car.h"get

#import "Engine.h"it

#import "Tire.h"io


int main() {class

   

    //实例化一个Car对象

    Car *car = [[Car alloc]init];

    

    //实例化一个Engine对象

    Engine *engine = [[Engine alloc]init];

    

    // 实例化一个Tire对象

    Tire *tire = [[Tire alloc]init];

    

    //给汽车设置发动机

    [car setEngine:engine];

    //给汽车设置轮胎

    [car setTire:tire];

    

    //汽车调用自身接口里面的方法

    [car describeCar];

        

}


Engine.h:

#import <Foundation/Foundation.h>


@interface Engine : NSObject


 //engine的方法声明

-(NSString *) describeI;


@end


Engine.m:

#import "Engine.h"


@implementation Engine


//engine 的方法的实现

-(NSString *)describeI

{

    return @"发动机";

}


@end


Tire.h

#import <Foundation/Foundation.h>


@interface Tire : NSObject


//tired的方法声明

-(NSString *) describeII;



@end


Tire.m:

#import "Tire.h"


@implementation Tire


//tire的方法实现

-(NSString *)describeII

{

   return @"轮胎";

    // 也能够返回一句话

    //return @"我是一个轮胎";

}


@end


Car.h:

#import <Foundation/Foundation.h>

// 头文件中导入enginetire

#import "Engine.h"

#import "Tire.h"


@interface Car : NSObject

{

    //Car类里面设置以类为返回类型的类属性,以前的通常是基本的几种数据类型,规则和以前设置类属性时同样。

    Engine * _engine;

    Tire * _tire;

}


// 设置引擎方法的声明

-(void) setEngine : (Engine *) engine;

-(Engine *) engine;


//设置轮胎方法的声明

-(void) setTire : (Tire *) tire;

-(Tire *) tire;


//设置汽车对象的方法声明

-(void) describeCar;

@end


Car.m:

#import "Car.h"


@implementation Car


//引擎方法的实现

-(void)setEngine:(Engine *)engine

{

    _engine = engine;

}


-(Engine *)engine

{

    return _engine;

}


//轮胎方法的实现

-(void)setTire:(Tire *)tire

{

    _tire = tire;

}


-(Tire *)tire

{

    return  _tire;

}


//汽车对象方法的实现

-(void) describeCar

{

    NSLog(@"我是一辆车,我有%@%@.",[_engine describeI],[_tire describeII]);

}

@end

相关文章
相关标签/搜索