objective-C 复合(组合)

  

复合:将多个组件组合在一起,形成一个整体,然后使用整体来进行工作,这种组合行为称为复合
复合后的整体功能更加强大
编写一个房屋类,由门,窗户等组成,门和窗有自己的开关方法,然后将门和窗这些复合在一起称为房屋类
调用房屋类的进出方法实际调用到门的开关
调用房屋的换气方法,实际调用到窗户的开关
// 由多个类的对象组成一个大类,就是一个组合的过程
#import <Foundation/Foundation.h>
#import "Widow.h"
#import "Door.h"
@interface House : NSObject

@property (nonatomic, strong) Door *door;
@property (nonatomic, strong) Widow *widow;
-(void)inouthouse;
-(void)exchangair;
@end
#import "House.h"

@implementation House

-(void)inouthouse{
    [_door open ];NSLog(@"进屋");
    [_door close];  NSLog(@"出屋");
}
-(void)exchangair{
     [_widow open];
    NSLog(@"开始换气");
    [_widow close];
    NSLog(@"换气结束");
}
@end
 
   
#import <Foundation/Foundation.h>
@interface Widow : NSObject -(void)open; 
-(void)close; @end #import "Widow.h"

@implementation Widow
-(void)open{ NSLog(@"开窗"); }

-(void)close{ NSLog(@"关窗"); } @end
#import <Foundation/Foundation.h>

@interface Door : NSObject
-(void)open;
-(void)close;
@end

#import "Door.h"

@implementation Door
-(void)open{
    NSLog(@"开门");
}
-(void)close{
    NSLog(@"关门");
}
@end
#import <Foundation/Foundation.h>
#import "House.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        House *h=[[House alloc]init];
        h.door=[[Door alloc]init];
        h.widow=[[Widow alloc]init];
        
        [h inouthouse];
        [h exchangair];
     
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/wyhwyh2114/p/4945962.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值