Object-C学习代码【简单的Car程序】

//
//  CarObject.h
//  Car
//
//  Created by on 14-8-19.
//  Copyright (c) 2014年 com.car. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Tire : NSObject
@end // Tire

@interface Engine : NSObject
@end // Engine

@interface Car : NSObject
{
    Engine *engine;
    Tire *tires[4];
}
- (void) print;
@end // Car
//
//  CarObject.m
//  Car
//
//  Created by on 14-8-19.
//  Copyright (c) 2014年 com.car. All rights reserved.
//

#import "CarObject.h"

@implementation Tire
- (NSString *) description {
    return (@"I am a tire. I last a while.");
} // description
@end // Tire

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

@implementation Car
// 返回的是id类型,id即为泛型对象指针
- (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);
} // init
- (void) print {
    NSLog(@"%@", engine);
    NSLog(@"%@", tires[0]);
    NSLog(@"%@", tires[1]);
    NSLog(@"%@", tires[2]);
    NSLog(@"%@", tires[3]);
} // print
@end // Car
//
//  main.m
//  Car
//
//  Created by on 14-8-19.
//  Copyright (c) 2014年 com.car. All rights reserved.
//

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

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

运行结果:

I am an engine. Vrooom!
I am a tire. I last a while.
I am a tire. I last a while.
I am a tire. I last a while.
I am a tire. I last a while.


重新设计的Car程序(复合):


//
//  Car.h
//  newCar
//
//  Created by on 14-8-19.
//  Copyright (c) 2014年 com.newCar. All rights reserved.
//

#import <Foundation/Foundation.h>
#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) setTire: (Tire *) tire atIndex: (int) index;
- (void) print;
@end // Car
//
//  Car.m
//  newCar
//
//  Created by on 14-8-19.
//  Copyright (c) 2014年 com.newCar. All rights reserved.
//

#import "Car.h"

@implementation Car
- (Engine *)engine {
    return (engine);
} // engine

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

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

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

- (void) print {
    NSLog(@"%@", engine);
    NSLog(@"%@", tires[0]);
    NSLog(@"%@", tires[1]);
    NSLog(@"%@", tires[2]);
    NSLog(@"%@", tires[3]);
} // print
@end // Car
//
//  Tire.h
//  newCar
//
//  Created by on 14-8-19.
//  Copyright (c) 2014年 com.newCar. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Tire : NSObject

@end
//
//  Tire.m
//  newCar
//
//  Created by on 14-8-19.
//  Copyright (c) 2014年 com.newCar. All rights reserved.
//

#import "Tire.h"

@implementation Tire
- (NSString *)description {
    return (@"I am a tire. I last a while");
} // description
@end // Tire
//
//  Engine.h
//  newCar
//
//  Created by on 14-8-19.
//  Copyright (c) 2014年 com.newCar. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Engine : NSObject

@end
//
//  Engine.m
//  newCar
//
//  Created by on 14-8-19.
//  Copyright (c) 2014年 com.newCar. All rights reserved.
//

#import "Engine.h"

@implementation Engine
- (NSString *)description {
    return (@"I am an engine. Vrooom!");
} // description
@end // Engine
//
//  main.m
//  newCar
//
//  Created by on 14-8-19.
//  Copyright (c) 2014年 com.newCar. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Engine.h"
#import "Tire.h"
#import "Car.h"

int main(int argc, const char * argv[]) {
//    new 一个car的对象
    Car *car = [Car new];
//    new 一个engin的对象
    Engine *engine = [Engine new];
//    调用engin的setEngine的方法
    [car setEngine: engine];
    for (int i = 0; i < 4;  i++) {
        Tire *tire = [Tire new];
//        调用car的setTire:atIndex:方法,并传入两个参数
        [car setTire:tire atIndex:i];
    }
    [car print];
    return 0;
}
运行结果:


I am an engine. Vrooom!
I am a tire. I last a while.
I am a tire. I last a while.
I am a tire. I last a while.
I am a tire. I last a while.

你可能感兴趣的:(Object-C学习代码【简单的Car程序】)