Cr+类的重用模型 假设有一个基类ccss 目标:实现一个新类 CNewclass,要求重 用 oldclass中的功能,而不是重新实现 做法:两种模型 让 CNew Class m ColdClass5派生,即 Class CNewClass: public ColdClass.. 复合类或者嵌套类,在 CNewClas中包含 个数据成员,其类型为 Oldclass
C++类的重用模型 !前提:假设有一个基类 前提:假设有一个基类COldClass COldClass !目标:实现一个新类 目标:实现一个新类CNewClass CNewClass,要求重 用COldClass COldClass中的功能,而不是重新实现 中的功能,而不是重新实现 !做法:两种模型 做法:两种模型 – 让CNewClass CNewClass从COldClass COldClass派生,即 class CNewClass CNewClass: public : public COldClass COldClass {...}; – 复合类或者嵌套类,在 复合类或者嵌套类,在CNewClass CNewClass中包含 一个数据成员,其类型为 一个数据成员,其类型为COldClass COldClass
〔r类的两种重用模型一 继承模型,直接继承基类 coldclas的所 有方法和数据成员,“ia”关系 客户直接看到基类的接口( public)成员) 复合模型,把基类的功能包含在内部, “hasa”关系 客户看不到基类的信息
C++类的两种重用模型 类的两种重用模型 !继承模型,直接继承基类 继承模型,直接继承基类COldClass COldClass的所 有方法和数据成员, 有方法和数据成员,“is-a”关系 – 客户直接看到基类的接口 客户直接看到基类的接口(public成员) !复合模型,把基类的功能包含在内部, 复合模型,把基类的功能包含在内部, “has-a”关系 – 客户看不到基类的信息 客户看不到基类的信息
cOM重用模型 前提:假设有一个cOM对象A 冫目标:实现一个新对象B,要求重用对象A 的功能,而不是重新实现原来已有的功能 做法:两种模型 包容( containment) 聚合 aggregation)
COM重用模型 !前提:假设有一个 前提:假设有一个COM对象A !目标:实现一个新对象 目标:实现一个新对象B,要求重用对象A 的功能,而不是重新实现原来已有的功能 的功能,而不是重新实现原来已有的功能 !做法:两种模型 做法:两种模型 – 包容(containment) containment) – 聚合(aggregation) aggregation)
c0M包容模型 对象B IOtherInterfacel 客户程序 调用 ISomelnterfacel 调用 对象A ISomelnterface
COM包容模型 对象 B ISomeInterface 对象 A ISomeInterface 客户程序 调用 调用 IOtherInterface
旬答模型说明 外部对象包容肉部对象的接囗 外部对象的接口与内部对象的接口可以不同 包容模型的实质是客户-组件关系,在包容代 码的前后可以插入其他的代码,甚至可以有 条件地重用 客户看不到内部对象 内部对象的生存期包含在外部对象的生存期 之内
包容模型说明 !外部对象包容内部对象的接口 外部对象包容内部对象的接口 !外部对象的接口与内部对象的接口可以不同 外部对象的接口与内部对象的接口可以不同 !包容模型的实质是客户 包容模型的实质是客户 -组件关系,在包容代 组件关系,在包容代 码的前后可以插入其他的代码,甚至可以有 码的前后可以插入其他的代码,甚至可以有 条件地重用 !客户看不到内部对象 客户看不到内部对象 !内部对象的生存期包含在外部对象的生存期 内部对象的生存期包含在外部对象的生存期 之内