您的位置:首页 > 移动开发 > Objective-C

Objective-C 类的复合

2016-03-13 00:15 603 查看
//
//  main.m
//  Study
//
//  Created by DwightDing on 16/3/12.
//  Copyright © 2016年 DwightDing. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Tire : NSObject
@end//Tire

@implementation Tire

-(NSString *)description{
return (@"I'm a Tire, I last a while");
}//description在Cocoa中定义

@end

@interface Engine : NSObject
@end
@implementation Engine

-(NSString *)description
{
return (@"I am an engine.Vroom");
}

@end

@interface Car : NSObject
{
Engine *engine;
Tire *tires[4];
}
-(void)print;
@end
@implementation Car

-(id) 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;
}
-(void)print
{
NSLog(@"%@",engine);
NSLog(@"%@",tires[0]);
NSLog(@"%@",tires[1]);
NSLog(@"%@",tires[2]);
NSLog(@"%@",tires[3]);
}
@end

int main(int argc, const char * argv[]) {
Car *car;
car = [Car new];
[car print];
return 0;
}

对类进行扩展:

//
// main.m
// Study
//
// Created by DwightDing on 16/3/12.
// Copyright © 2016年 DwightDing. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Tire : NSObject
@end//Tire

@implementation Tire
-(NSString *)descrip
4000
tion{
return (@"I'm a Tire, I last a while");
}//description在Cocoa中定义
@end

//Define Engine
@interface Engine : NSObject
@end

//setter getter
@implementation Engine
-(NSString *)description
{
return (@"I am an engine.Vroom");
}
@end

//define Car
@interface Car : NSObject
{
Engine *engine;
Tire *tires[4];
}
-(void)setTire : (Tire *)tire atIndex : (int) index;
-(Tire *)tireAtIndex : (int) index;
-(Engine *) engine;
-(void) setEngine : (Engine *) newEngine;
-(void)print;
@end
@implementation Car
//realize function
-(void)setTire : (Tire *)tire atIndex : (int) index
{
if (index<0||index>3) {
NSLog(@"error");
exit(1);
}
tires[index]=tire;
}

-(Tire *)tireAtIndex : (int) index
{
if (index<0||index>3) {
NSLog(@"error");
exit(1);
}
return (tires[index]);
}
-(void) setEngine : (Engine *) newEngine
{
engine=newEngine;
}
-(Engine *) engine
{
return (engine);
}

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

int main(int argc, const char * argv[]) {
Car *car = [Car new];
Engine *engine=[Engine new];
[car setEngine:engine];
for (int i = 0; i < 4; i++) {
Tire *tire = [Tire new];
[car setTire:tire atIndex:i];
}
[car print];
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  类的复合