`
heipark
  • 浏览: 2091512 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面向对象技术之——组合(composition)

阅读更多

假设我想设计一个类MySet,这个类包含集合类Set所有的功能,那么我将有两种办法:

 

  1. 让MySet继承HashSet类
  2. 让MySet包含一个HashSet的示例

 

因为继承(方法一)破坏了对象的封装性,导致我们的设计会依赖Set自身的机制,比如我们想override Set类的add()方法,这就要求我们要了解Set类的内部逻辑才行,否则很容易发生我们无法控制的错误。但是第二种方式让我们依赖Set对外的功能,这样就不需要关注Set内部设计,只要拿它当个工具使用就行了。方法二的代码如下:

 

 

	class MySet{
		private Set _set = new HashSet();
		
		//....
	}

 

这个技术在面向对象设计里面叫做组合(composition)。

 

-- end

分享到:
评论

相关推荐

    面向对象七大原则——肖文斌.pdf

    里氏替换原则是面向对象设计的基础之一,该原则指出,在软件中,子类的对象应该能够替换掉它们的基类对象。也就是说,如果S是T的子类型,则T类型的对象可以被S类型的对象替换而不影响程序的正确性。该原则有助于设计...

    面向对象的软件组合(Oscar Nierstrasz等)Object-Oriented Software Composition (Oscar Nierstrasz, et al)

    ### 面向对象的软件组合(Oscar Nierstrasz等)——Object-Oriented Software Composition #### 书籍概述与核心价值 《面向对象的软件组合》这本书由Oscar Nierstrasz等人编写,旨在深入探讨面向对象编程在软件...

    设计模式可复用面向对象软件的基础.zip

    书名: 设计模式可复用面向对象软件的基础 英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价...

    天津大学考博试题——面向对象的软件工程

    ### 面向对象的软件工程关键知识点解析 #### 抛弃型原型(Throwaway Prototype) 抛弃型原型是一种软件开发策略,主要用于需求分析阶段。它通过快速构建一个简易的、临时的软件版本来帮助理解用户需求,这个原型...

    面向对象与对象模型面向对象与对象模型

    面向对象编程(Object-Oriented Programming, OOP)是一种基于对象的编程范式,它强调将数据和操作数据的方法封装在一起,形成独立的实体——对象。这种编程方式能够帮助开发者构建更易于理解和维护的大型软件系统。...

    c++面向对象综合实验医院预约挂号系统.rar

    本实验以医院预约挂号系统为例,深入探讨了C++面向对象编程的四大核心特性——继承(Inheritance)、组合(Composition)、多态(Polymorphism)和函数重载(Overloading),并展示了它们如何在实际应用场景中发挥...

    修练8年C++面向对象程序设计之体会(转)

    理解和应用面向对象的核心概念——类与对象、继承与组合、虚函数与多态——对于编写高质量、可维护和可扩展的C++程序至关重要。通过不断实践和深入学习这些概念,程序员可以更好地利用C++的强大功能来解决复杂的软件...

    面向对象程序设计实验报告六1

    【面向对象程序设计实验报告六1】实验报告主要围绕使用C++进行面向对象程序设计,实现整型队列,以及解决舞伴问题。实验的主要任务是设计一个基于栈的整型队列,遵循先进后出(FIFO)原则,并通过继承机制实现。以下...

    Java软件开发实战 Java基础与案例开发详解 7-2 对象模型建立 共19页.pdf

    - **定义**:展示系统中类的结构及其相互关系,是面向对象设计中最常用的图形之一。 - **组成元素**: - 类(Class):表示一个实体的集合。 - 接口:定义一组操作的规范。 - 关系表示符号:包括聚合、组合、依赖等...

    COM组件技术编程讲义

    COM组件技术编程讲义主要涵盖了面向对象编程领域中的一个重要概念——Component Object Model(COM),它是一种微软公司开发的二进制标准,用于实现跨进程、跨语言的组件互操作性。COM是许多Windows应用程序和系统...

    coffeescript实战(英文文字完整版)

    此外,还可能介绍了动态对象、对象组合、函数组合等面向对象编程和函数式编程的高级技巧。 “Style and semantics”(风格和语义)可能会讨论在使用CoffeeScript进行编码时应该遵循的最佳实践和编程风格,而...

    C++课程设计~~~运动会管理系统

    总的来说,【C++课程设计——运动会管理系统】是一个全面锻炼C++编程技能的项目,它会让你深入理解面向对象编程的概念,掌握基本的数据结构和算法,同时培养问题分析和解决的能力。对于初学者来说,这是一个非常有...

    hibernate入门课件--introduce hibernate.pdf

    - **Hibernate Query Language (HQL)**:支持类似SQL的语言,但更加面向对象。 - **Criteria API 和 Query by Criteria**:提供了一种更灵活的方式来构建查询条件。 - **Query by Example**:允许通过示例对象来...

    c++实验(复合).zip

    这种技术是面向对象编程的重要组成部分,允许我们构建模块化的、可复用的代码。 在C++中,我们可以使用类(class)来定义自己的数据类型,而类的实例就是对象。复合是通过在类的定义中包含其他类的实例来实现的。...

    基于vue3+ts的后台管理系统源码.zip

    TypeScript(简称TS)是JavaScript的一个超集,它引入了静态类型和面向对象的编程概念,增强了代码的可维护性和可预测性。将Vue3与TS结合使用,可以构建更健壮、易于维护的后台管理系统。 在这个基于Vue3+TS的后台...

    合成复用原则.doc

    合成复用原则(Composite Reuse Principle,CRP),又称组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP),是在面向对象设计中的一项重要指导原则。该原则强调:在进行软件复用时,应优先考虑使用...

    Enterprise Architect学习笔记

    泛化关系,也称为继承关系,是面向对象编程的核心概念之一。它表示了一般与特殊之间的关系,即一个类(子类)可以从另一个类(超类)继承属性和行为。在 UML 图中,泛化关系用实线加上三角箭头表示,箭头指向超类。...

    UML类与类的关系.doc

    在IT领域,尤其是软件工程和面向对象编程中,UML(Unified Modeling Language,统一建模语言)是一种重要的可视化工具,用于描述系统结构和行为。UML中的类与类之间的关系是理解和设计复杂系统的关键,包括泛化、...

Global site tag (gtag.js) - Google Analytics