若在逻辑上A是B的“一部分”,则不允许B从A派生,而是要用A和其他东西组合出B。
例如眼(Eye)鼻(Nose)口(Mouth)耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye、Nose、Mouth、Ear组合而成,而不是派生而成。
class Eye
{
public:
    void look(void);
};
class Nose
{
public:
    void smell(void);
};
class Mouth
{
public:
    void eat(void);
};
class Ear
{
public:
    void listen(void);
};
class Head
{
public:
    void look(void) { m_eye.look(); }
    void smell(void) { m_nose.smell(); }
    void eat(void) { m_mouth.eat(); }
    void listen(void) { m_ear.listen(); }
private:
    Eye m_eye;
    Nose m_nose;
    Mouth m_mouth;
    Ear m_ear;
};

转载于:https://blog.51cto.com/shaxquan/385155

composition 组合相关推荐

  1. StarUML类图相关——关联、聚合、组合、泛化、依赖、实现

    在阅读设计模式相关的书籍,或者其他一些项目.相关博客等等,经常会遇到类图,它对于一个类的信息,如变量.方法及其可见性,类与类(接口)之间的继承关系.依赖关系.聚合关系.组合关系等,都可以比较形象得当地 ...

  2. 3Blue1Brown:“线性代数的本质”完整笔记

    我最早系统地学习线性代数是在大二时候,当时特意选修了学校物理系开设的4学分的线代,大概也就是比我们自己专业的线代多了一章向量空间的内容,其实最后上完发现,整个课程内容还是偏向于计算,对线性代数的几何直 ...

  3. java uml图中的关系_UML类图中的关系

    UML类图中的关系分为四种:泛化.依赖.关联.实现:关联关系又可以细化为聚合和组合. 1. 泛化(Generalization) 泛化是父类和子类之间的关系,子类继承父类的所有结构和行为.在子类中可以 ...

  4. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(二)之Introduction to Objects...

    The genesis of the computer revolution was a machine. The genesis of out programming languages thus ...

  5. 一次搞懂建模语言UML

    Unified Modeling Language (UML)又称统一建模语言或标准建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到 ...

  6. UML在powerDesigner的使用及其相关概念

    最近对这句古话非常喜欢:工欲善其事必先利其器! 首先,我们需要学会怎么利用工具去辅助我们去了解别人的代码,那怎么有效快速的了解别人的代码,而自己又不会犯糊涂呢?那就需要我们借助powerdesigne ...

  7. 自然语言系列学习之表示学习与知识获取(七)利用关系路径进行关系抽取

    接下来介绍另外一个方向是如何更好的利用知识图库里关系路径的信息进行关系抽取. 有一个非常直观的例子介绍关系路径的好处,如电影阿甘正传(上图),我们如果想要知道阿甘正传的语言是什么,可以通它的电影导演是 ...

  8. UML类图的6大关系

    <小酌重构系列>已经完成了大约1/3了,在这些文章中,我使用了一些简单的类图来描述重构策略.在之后的文章中,我可能会借助稍微复杂一些的UML类图来介绍.但是在此之前,我觉得有必要先介绍一下 ...

  9. 深入学习SAP UI5框架代码系列之四:SAP UI5控件的元数据实现

    这是Jerry 2021年的第5篇文章,也是汪子熙公众号总共第276篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) UI5 module懒加载机制 (2) ...

最新文章

  1. 从样本处理到决策模型,如何用NLP识别盗版资源?
  2. 16核64g服务器性能,16核64g云服务器
  3. linux用户层驱动--VFIO(五)
  4. 计算机视觉,图像处理,图像分析,机器人视觉和机器视觉是彼此紧密关联的学科
  5. BZOJ 2301 Problem b(莫比乌斯反演+分块优化)
  6. Wireshark文档阅读笔记-User Datagram Protocol(UDP)
  7. 网页静态服务器-1-显示固定的页面
  8. 理解 TCP(二):报文结构 1
  9. 5.7 拉普拉斯变换的性质
  10. 互联网企业架构初期选择--初期技术选型
  11. CMMI质量管理体系——软件测试缺陷管理
  12. [ZT]大型企业局域网安全解决方案
  13. JavaScript——利用正则表达式实现二代身份证号码的验证
  14. 7-4 厘米换算英尺英寸
  15. 《阿里巴巴Java开发手册(正式版)》--安全规约
  16. 远期、期货和互换(一)
  17. 基于数字证书的windows安全登录
  18. 2022年蓝桥杯省赛 C/C++ A组题解
  19. 简述计算机五种常见动画及特点。【可拆成多个简答】
  20. 评价的等级优良差_小学生期末评语-等级优良合格(最佳版本)

热门文章

  1. python自带的库有哪些餐厅_Python 常用的标准库以及第三方库有哪些
  2. sql server查询某一字段不重复的数据_初识数据库
  3. oracle还原脚本,oracle自动恢复脚本
  4. jsp+java bean+mysql数据库进行分页显示
  5. navicat无法连接mysql
  6. QT案例:登录对话框——主窗口
  7. QT中让窗口屏幕居中的方法
  8. 【HDU5482】Numquam vincar,暴力(da biao)预处理+组合数
  9. 【BZOJ2152】聪聪可可,dfs+递推/点分治
  10. 基于java ee的源码,基于java EE的云ERP系统