首先让我们先看看什么是类:
类:类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。
类图:类图(Class diagram)是显示了模型的静态结构,显示出类、接口以及它们之间的静态结构和关系,描述系统的结构化设计。最基本的元素是类或者接口。
看类图中都包括哪些内容:
在UML中,画每一种图,都有一套规范的,不同的符号是不同的意义,让我们从最开始看起
1、最基本的类:
/
抽象类
类名和draw方法是以斜体字体表示的;在类图中以斜体表示也是有特殊意义的,上图表示shape是一个抽象类,抽象类是不能实例化的,一般至少包含一个抽象操作,比如上图的draw就是抽象操作
2、类中的关系
A 关联关系(Association)
说明:是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系。
• 在UML类图中,用实线连接有关联的对象所对应的类,在C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的属性。
(1)普通关联
表示一种关系,人在公司工作。关联关系是定义了两个对象之间的天然的、静态的关系。
(2)聚合关系(Aggregation):
说明:表示的是整体和部分的关系,整体与部分 可以分开.
• 聚合关系(Aggregation) 表示一个整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构,从而找出一些成员类,该整体类和成员类之间就形成了聚合 关系。
• 在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。
聚合是整体部分的关系,用空心菱形表示
一个电视包括屏幕和电容等,即使脱离了整体,屏幕和电容仍然可以单独存在。上面的数字1代表一个,*代表多个,也就是一个电视可以有多个电容,只能有一个屏幕
(3)组合关系(Composition)
说明:也是整体与部分的关系,但是整体与部分不可以分开.
• 组合关系(Composition)也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在,部分对象与整体对象之 间具有同生共死的关系。
• 在组合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。在UML中,组合关系用带实心菱形的直线表示。
人有两个胳膊和两个腿,如果脱离了身体,胳膊和腿是不能单独存在的。
B依赖关系(Dependency)
说明:假设A类的变化引起了B类的变化,则说名B类依赖于A类。
• 是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。
• 在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方
C泛化关系(Generalization)
说明:A是B和C的父类,B,C具有公共类(父类)A,说明A是B,C的一般化(概括,也称泛化)
• 泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的直线来表示。
• 在代码实现时,使用面向对象的继承机制来实现泛化关系,在C++/C#中使用冒号“:”来实现。
工程师和经理都是雇员的一种,是一种is a kind of的关系
D实现关系(Realization)
说明:实现是类元之间的语义关系,在该关系中一个类元描述了另一个类元保证实现的契约。
附一张多重性关系的表格
关系的比较:
泛化=实现>组合>聚合>关联>依赖
能用继承来描述的关系就使用泛化关系,当描述接口和类的实现时一定用实现来描述,两个类之间如果有结构关系的时候一定用关联来描述。除此之外用依赖来描述。
下面是我画的机房的类图:
小结:通过对类图的总结,让我知道了总结的重要性,以及实践的重要性,图一定要亲自画,因为在实践中会收获很多。
第一次画希望大家多多指导!