1.关联
一般是指两个类之间有相对松散关系,若双方都知道对方则可用实线[双向箭头]连接,或只其中一方知道则用实线加单向箭头从隐藏方指向暴露方,但某个类是否存在并不影响另一个类的存在与否.
如客户与车子(通过买,租用或其它方式联系在一起);
2.依赖(Dependency)
实体之间一个“使用”关系暗示一个实体的发生变化后,可能影响依赖于它的其他实例。 更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所 示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。也可利用“依赖”来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的 各个类之间的关系,表示出包和包的关系
这里B与A的关系只是一种依赖(Dependency)关系,这种关系表明,如果类A被修改,那么类B会受到影响。
图表 5依赖
3.泛化(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的功能和属性。
4.实现(composition)
指定两个实体之间的一个合约。换言之,一个实体定义一个合约,而另一个实体保证履行该合约。
5.聚合(aggregation)
代表两个类之间的整体/局部关系,是一种相对松散的关系,聚合类B不需要对被聚合的类A负责。
图表 3共享
上面图中,有一个菱形(空心)表示聚合(aggregation)(聚合类型为共享),聚合的意义表示has-a关系。
6.组合(composition)
代表两个类之间的整体/局部关系但是一种绝对构成的关系,局部不能为其它整体所共享,暗示“局部”在“整体”内部的生存期职责。合成也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。
若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。
例如,眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye、Nose、Mouth、Ear组合而成,不是派生(继承)而成。
图表 4复合
这幅图与上面的唯一区别是菱形为实心的,它代表了一种更为坚固的关系——组合(composition)(聚合类型为复合)。组合表示的关系也是has-a,不过在这里,A的生命期受B控制。即A会随着B的创建而创建,随B的消亡而消亡。
- 大小: 980 Bytes
- 大小: 1.7 KB
- 大小: 1.2 KB
- 大小: 1.2 KB
分享到:
相关推荐
这个压缩包文件包含两份PDF文档,分别名为"QT&widgets类继承图.pdf"和"Qt5.1类继承关系图.pdf",它们详细地描绘了QT5中的类继承结构,这对于理解QT5的架构和进行有效的编程至关重要。 首先,我们来讨论一下QT5的...
为了更好地理解MFC类结构关系,可以通过一个简单的例子来说明如何使用这些类: 假设我们需要创建一个包含按钮的对话框,并且当点击按钮时,会弹出一个消息框显示“Hello World”。这涉及到以下类的使用: - 使用`...
### Qt5类继承关系概述 在Qt5框架中,类之间的继承关系构成了其核心架构的基础。通过对这些类的深入理解,开发者能够更好地掌握Qt库的功能并有效地利用它们来构建复杂的应用程序。本篇将详细解析从给定文件的标题、...
从提供的文件信息中,我们可以提炼出关于Qt5.1类继承关系图的详细知识点,这些知识涉及到Qt的模型视图框架,模型-视图-控制器(MVC)设计模式,以及如何在Qt中使用模型和视图。 首先,Qt的模型视图框架是一组用于...
C#是一种面向对象的编程语言,其核心概念之一就是类与对象之间的关系。类是对象的模板或蓝图,它定义了创建对象的属性和方法。对象则是类的具体实例,是实际存在的实体。 在C#中,创建类意味着定义了一组属性和方法...
在JavaScript中,树状图可以用来可视化复杂的对象结构、类的继承关系或是文件系统的目录结构。这种图表通过节点和边(连接节点的线)来表示数据之间的关系,每个节点代表一个实体,边则表示实体之间的联系。在...
下面是一个简单的Java IO流类之间的关系图: InputStream → FileInputStream → PipedInputStream → FilterInputStream → ByteArrayInputStream → DataInputStream → ... OutputStream → FileOutputStream →...
### ArcGIS关系类详解 #### 一、关系类概述 在地理信息系统(GIS)领域,尤其是在ArcGIS软件中,关系类是一种重要的数据组织方式,它用于管理地理数据之间的复杂关联。正如哲学上所述“万事万物都是联系的”,GIS中...
Java 类与类之间的关系是面向对象编程的核心概念之一,它帮助我们组织代码,实现代码的重用和模块化。在 Java 中,类与类的关系主要包括依赖(uses-a)、聚合(has-a)和继承(is-a)这三种主要类型。 1. 依赖...
在MFC的类层次结构中,`CObject` 是所有类的基础,它是所有MFC类的基类,提供了基本的对象特性,如内存管理、调试支持等。接着,`CCmdTarget` 是事件处理的基础,它扩展了`CObject`,实现了消息调度机制,使得对象...
(5)聚合:又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装体,从而简化对复杂事物的描述。 (6)关联:是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的...
在离散数学中,极大相容类是关系理论中的一个重要概念,特别是在布尔代数和格论的研究中。它与集合的划分和等价关系密切相关。一个相容类是一组元素的集合,其中任意两个元素之间满足特定的关系。如果一个相容类不再...
在IntelliJ IDEA中,查看类的继承关系图形非常简单。只需在类的标签页内右键点击,选择“Diagrams”,然后选择“Show Diagram”或“Show Diagram Popup”。前者将在当前标签页内新建一个图形,而后者以浮窗的形式...
UnrealEngine的World中,C++的关系图以及各个类的功能概述,但是展开后截图太大,这里简单截图看一下吧,想进一步了解,自行看一下吧,都在个人对**虚幻 UnrealEngine4**理解,如果不对请大家包涵。
在实际的“mfc友元类简单测试”中,你可能会创建一系列测试用例,包括对友元关系的正向测试(能正确访问私有成员)和反向测试(非友元类不能访问私有成员)。 总结来说,友元类和友元函数在C++中是增强类间交互的...
- 实践编程,动手创建简单的Qt应用程序,通过实例感受类的使用。 - 查阅Qt官方文档,文档详尽且有大量示例代码。 - 参加Qt相关的在线课程或论坛讨论,与社区交流,解决实际问题。 通过深入学习Qt的类继承体系,...
其中,ModelGoon是一款优秀的Eclipse插件,它能够帮助我们从已有的Java代码中反向生成UML类图和包依赖关系图,极大地提高了代码理解和维护的效率。本文将详细介绍如何安装和使用ModelGoon-4.4.1插件。 首先,安装...
* 二元关系类及其测试 * 某一集合上的二元关系类 * 提供关系的性质判断 关系间的运算 求关系的闭包 * 判断自反性 * 判断反自反性 * 判断对称性性 * 判断反对称性 * 判断传递性 * 关系和合成运算 * 关系...
这种方式可以在不导入其他模块的情况下运行脚本并查看类的行为,非常适合进行单元测试或简单的功能演示。 综上所述,这段代码展示了Python面向对象编程的基本概念和技术,包括类的定义、实例化、方法的使用、封装性...