//
// main.m
// oc02_复合
//
// Created by Vision on 9/12/14.
// Copyright (c) 2014 Vision. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Computer.h"
#import "Mouse.h"
#import "Monitor.h"
#import "Keyboard.h"
#import "Host.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Monitor *monitor = [[Monitor alloc]initWithPrice:700];
Host *host = [[Host alloc]initWithPrice:3000];
Mouse *mouse = [[Mouse alloc]initWithPrice:400];
Keyboard *keyboard = [[Keyboard alloc]initWithPrice:100];
//复合类对象的创建
Computer *myComputer = [[Computer alloc]initWithMonitor:monitor keyboard:keyboard host:host mouse:mouse];
NSLog(@"%f",[myComputer totalPrice]);
}
return 0;
}
<pre name="code" class="objc">//
// Computer.h
// oc02_复合
//
// Created by Vision on 9/12/14.
// Copyright (c) 2014 Vision. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Monitor.h"
#import "Host.h"
#import "Mouse.h"
#import "Keyboard.h"
@interface Computer : NSObject
{
//将其他类的对象,作为复合类的成员变量
Monitor *_monitor;
Keyboard *_keyboard;
Host *_host;
Mouse *_mouse;
}
///复合类的初始化方法
- (id)initWithMonitor:(Monitor *)monitor
keyboard:(Keyboard *)keyboard
host:(Host *)host
mouse:(Mouse *)mouse;
///合算总价格
- (float)totalPrice;
@end
//
// Computer.m
// oc02_复合
//
// Created by Vision on 9/12/14.
// Copyright (c) 2014 Vision. All rights reserved.
//
#import "Computer.h"
@implementation Computer
///复合类的初始化方法
- (id)initWithMonitor:(Monitor *)monitor
keyboard:(Keyboard *)keyboard
host:(Host *)host
mouse:(Mouse *)mouse
{
_monitor = monitor;
_keyboard = keyboard;
_host = host;
_mouse = mouse;
return self;
}
///合算总价格
- (float)totalPrice
{
float total = [_monitor price] + [_host price] + [_mouse price] + [_keyboard price];
return total;
}
@end
//
// Mouse.h
// oc02_复合
//
// Created by Vision on 9/12/14.
// Copyright (c) 2014 Vision. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Mouse : NSObject
{
float _price;
}
///初始化方法
- (id)initWithPrice:(float)price;
- (float)price;
@end
//
// Mouse.h
// oc02_复合
//
// Created by Vision on 9/12/14.
// Copyright (c) 2014 Vision. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Mouse : NSObject
{
float _price;
}
///初始化方法
- (id)initWithPrice:(float)price;
- (float)price;
@end
//
// Monitor.h
// oc02_复合
//
// Created by Vision on 9/12/14.
// Copyright (c) 2014 Vision. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Monitor : NSObject
{
float _price;
}
///初始化方法
- (id)initWithPrice:(float)price;
- (float)price;
@end
//
// Monitor.m
// oc02_复合
//
// Created by Vision on 9/12/14.
// Copyright (c) 2014 Vision. All rights reserved.
//
#import "Monitor.h"
@implementation Monitor
- (id)initWithPrice:(float)price
{
_price = price;
return self;
}
- (float)price
{
return _price;
}
@end
//
// Host.h
// oc02_复合
//
// Created by Vision on 9/12/14.
// Copyright (c) 2014 Vision. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Host : NSObject
{
float _price;
}
///初始化方法
- (id)initWithPrice:(float)price;
- (float)price;
@end
//
// Host.m
// oc02_复合
//
// Created by Vision on 9/12/14.
// Copyright (c) 2014 Vision. All rights reserved.
//
#import "Host.h"
@implementation Host
- (id)initWithPrice:(float)price
{
_price = price;
return self;
}
- (float)price
{
return _price;
}
@end
//
// Keyboard.h
// oc02_复合
//
// Created by Vision on 9/12/14.
// Copyright (c) 2014 Vision. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Keyboard : NSObject
{
float _price;
}
///初始化方法
- (id)initWithPrice:(float)price;
- (float)price;
@end
//
// Keyboard.m
// oc02_复合
//
// Created by Vision on 9/12/14.
// Copyright (c) 2014 Vision. All rights reserved.
//
#import "Keyboard.h"
@implementation Keyboard
- (id)initWithPrice:(float)price
{
_price = price;
return self;
}
- (float)price
{
return _price;
}
@end