面向对象讲解(2)
2008-03-05 10:10
190 查看
概念讲解
泛化(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会受到影响。
欢迎您使用http://Blogmove.cn提供的"博客搬家"和"博文三窟"服务.
相关文章推荐
- 通俗易懂的讲解----面向对象和面向过程的区别
- 面向对象图形讲解
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
- 学习javascript面向对象 实例讲解面向对象选项卡
- 学习javascript面向对象 实例讲解面向对象选项卡
- 黑马程序员_面向对象讲解
- 面向对象讲解(一)
- 面向对象讲解(3)
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
- 面向对象特征基本讲解
- 面向对象分析和设计与设计模式之间的配合讲解
- 第四节:详细讲解Java中的类和面向对象思想
- C++面向对象讲解
- 面向对象之经典讲解(抽象类)
- 面向对象中经常会用到序列图讲解
- Java第二课 Java面向对象编程,面向对象编程和面向过程编程的区别,我们如何才能掌握面向对象的编程,类和对象的关系;讲解了Java中的构造、重载、this和super变量、静态变量、Java中的常
- [置顶] Java面向对象入门讲解(深入浅出)
- 【java开发】面向对象初步认识与基础概念讲解
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)