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;
}
时间: 2024-10-24 12:33:08

objective-C 复合(组合)的相关文章

访问者模式

在阎宏博士的<JAVA与模式>一书中开头是这样描述访问者(Visitor)模式的: 访问者模式是对象的行为模式.访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变.从定义可以看出结构对象是使用访问者模式的必备条件,而且这个结构对象必须存在遍历自身各个对象的方法 访问者模式结构: 访问者角色(Visitor): 为该对象结构中具体元素角色声明一个访问操作接口. 具体访问者角色(Concrete Visitor): 实现每个由

Visitor模式

访问者模式的目的是要把处理从数据结构中分离出来,如果系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式是个不错的选择,因为访问者模式使的算法操作的增加变得容易.相反,如果系统的数据结构不稳定,易于变化,则此系统就不适合使用访问者模式了. 访问者模式结构:访问者角色(Visitor): 为该对象结构中具体元素角色声明一个访问操作接口. 具体访问者角色(Concrete Visitor): 实现每个由访问者角色(Visitor)声明的操作.元素角色(Element): 定义一个Acce

面向对象的三个基本特征

最近找了一篇面向对象的介绍,看过后,感觉不错,浅显易懂,所以转载给大家看看!!! 面向对象的三个基本特征(讲解)面向对象的三个基本特征是:封装.继承.多态. 封装封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 继承面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情

设计模式-可复用面向对象软件的基础 [读书笔记]

由于如下笔记中有直接描述是该书的第几节,因此将该书的封面贴下: 1.将软件与设计模式比拟为城市与建筑模式,那么在面向对象的解决方案里,我们将对象和接口看成墙壁和门窗,模式的核心在于提供了相关问题的解决方案. 在软件设计中可能会遇到很多类似的问题,在每次遇到类似问题时我们不必全都新想办法来解决,而可以复用之前解决类似问题的方案,解决问题多之后就 会有针对特定问题有特定(相对固定)的方式方法来解决,这相对固定的方式方法就是设计模式,其也算是经验总结. 开篇有两种在设计模式书籍里面很重要的表格和关系图

面向对象三要素

面向对象三要素 Posted on 2009-12-11 09:06 我不是高手 阅读(3595) 评论(1) 编辑 收藏 面向对象三要素是:封装 继承 多态 封装 封装就是事物抽象为类,把对外接口暴露,将实现和内部数据隐藏. 继承 面向对象编程 (OOP) 语言的一个主要功能就是“继承”.继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 通过继承创建的新类称为“子类”或“派生类”. 被继承的类称为“基类”.“父类”或“超类”. 继承的过程,

面向对象的三个基本特征 和 五种设计原则

一.三个基本特征 面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 继承 面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 通过继承创建的新类称为"子类"或"

合理优化数据库表结构提高项目执行效率[数据库设计]

数据库表设计优化: 有时为了提高数据库效率,可适当考虑反三范式,适当添加冗余字段,减少多表去关联查询. 使用索引: 2.1 数据库表设计时要合理的去使用普通索引.主键索引.唯一索引.全文索引以及复合(组合)索引. 2.2 何时创建索引: (1) 较频繁的作为查询条件的字段; (2) 唯一性太差的字段(如性别/状态字段等),即使我们频繁作为查询的条件,匀不适合创建索引; (3) 数据更新非常频繁的字段(如统计平台当前的在线人数字段/商品的销售数量字段等)是不适合创建索引. 2.3 具体索引的使用请

从 C++ 到 Objective-C 的快速指南

英文原文:From C++ to Objective-C: A quick guide for practical programmers 标签: Objective-C C/C++ 233人收藏此文章, 我要收藏oschina 推荐于 2年前 (共 11 段, 翻译完成于 05-13) (29评) 参与翻译(4人): leoxu, 无若, nbafifa02, 地狱星星 仅中文 | 中英文对照 | 仅英文 | 打印此文章 简介 当我开始为iOS写代码的时候,我意识到,作为一个C++开发者,我必

Android开发学习——简单类图

1.类A继承于类B    (B 是父类,A是 子类) 2.小汽车.自行车 实现车的接口 3.A中有B这个成员变量,单向关联 4.聚合,整体与部分的关系.has-a  B中的构造函数(或set方法)需要A作为传入参数. 公司与员工的关系 5.复合  组合,整体与部分的关系.contains-a  B中构造函数将A进行了实例化. 你和你的大脑  书和书页的关系. 组合>聚合>关联>依赖