面向对象的三个特征及其优缺点
来源:互联网 发布:淘宝买快排配件有事吗 编辑:程序博客网 时间:2024/05/30 04:50
概念讲解
泛化(Generalization)
图表 1 泛化
在上图中,空心的三角表示继承关系(类继承),在UML的术语中,这种关系被称为泛化(Generalization)。Person(人)是基类,Teacher(教师)、Student(学生)、Guest(来宾)是子类。
若在逻辑上B是A的“一种”,并且A的所有功能和属性对B而言都有意义,则允许B继承A的功能和属性。
例如,教师是人,Teacher 是Person的“一种”(a kind of )。那么类Teacher可以从类Person派生(继承)。
如果A是基类,B是A的派生类,那么B将继承A的数据和函数。
如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能和属性。
若在逻辑上B是A的“一种”(a kind of ),则允许B继承A的功能和属性。
聚合(组合)
图表 2 组合
若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。
例如,眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye、Nose、Mouth、Ear组合而成,不是派生(继承)而成。
聚合的类型分为无、共享(聚合)、复合(组合)三类。
聚合(aggregation)
图表 3 共享
上面图中,有一个菱形(空心)表示聚合(aggregation)(聚合类型为共享),聚合的意义表示has-a关系。聚合是一种相对松散的关系,聚合类B不需要对被聚合的类A负责。
组合(composition)
图表 4 复合
这幅图与上面的唯一区别是菱形为实心的,它代表了一种更为坚固的关系——组合(composition)(聚合类型为复合)。组合表示的关系也是has-a,不过在这里,A的生命期受B控制。即A会随着B的创建而创建,随B的消亡而消亡。
依赖(Dependency)
图表 5 依赖
这里B与A的关系只是一种依赖(Dependency)关系,这种关系表明,如果类A被修改,那么类B会受到影响。
- 面向对象的三个特征及其优缺点
- 面向对象的三个特征及其优缺点
- 面向对象的三个特征及其优缺点
- 面向对象的三个特征
- 面向对象的三个特征
- 面向对象的三个特征
- 面向对象的三个特征
- 面向对象的三个特征
- 面向对象的三个特征
- Java:面向对象设计的三个特征
- 黑马程序员--面向对象的三个特征
- 面向对象的三个特征的一些知识
- 面向对象的三个重要特征------封装、继承、多态
- 面向对象的三个特征:继承、封装、多态
- 【JAVA】29、面向对象的基本概念和三个特征
- java面向对象的三个特征以及匿名内部类
- Java 面向对象的三个特征与含义
- Java面向对象的三个特征与含义
- spring之注解(三)Component
- 【Redis基础】持久化机制
- 平衡二叉树详解
- c++ stream关系
- java 实现注册时发送激活邮件+激活
- 面向对象的三个特征及其优缺点
- uva1149--贪心
- C++运算符重载(+,-,!)
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 初入python
- 【python学习笔记】18:numpy数组函数与矩阵运算
- CSU-ACM2017暑期训练1-Debug与STL -圆桌问题
- java程序----for循环
- xgboost 二分类问题实例