UML之类图

首先让我们先看看什么是类:

 类:类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。

 类图:类图(Class diagram)是显示了模型的静态结构,显示出类、接口以及它们之间的静态结构和关系,描述系统的结构化设计。最基本的元素是类或者接口。

 看类图中都包括哪些内容:

UML之类图_第1张图片


在UML中,画每一种图,都有一套规范的,不同的符号是不同的意义,让我们从最开始看起

1、最基本的类:

                                        UML之类图_第2张图片/

抽象类

                                     UML之类图_第3张图片
类名和draw方法是以斜体字体表示的;在类图中以斜体表示也是有特殊意义的,上图表示shape是一个抽象类,抽象类是不能实例化的,一般至少包含一个抽象操作,比如上图的draw就是抽象操作
2、类中的关系
 A 关联关系(Association)
说明:是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系。
•  UML类图中,用实线连接有关联的对象所对应的类,在C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的属性。

  (1)普通关联
              UML之类图_第4张图片
表示一种关系,人在公司工作。关联关系是定义了两个对象之间的天然的、静态的关系。
  (2)聚合关系(Aggregation:

说明:表示的是整体和部分的关系,整体与部分 可以分开.

•  聚合关系(Aggregation) 表示一个整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构,从而找出一些成员类,该整体类和成员类之间就形成了聚合   关系。
•  在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。

 聚合是整体部分的关系,用空心菱形表示
UML之类图_第5张图片
 一个电视包括屏幕和电容等,即使脱离了整体,屏幕和电容仍然可以单独存在。上面的数字1代表一个,*代表多个,也就是一个电视可以有多个电容,只能有一个屏幕
  (3)组合关系(Composition

说明:也是整体与部分的关系,但是整体与部分不可以分开.

•  组合关系(Composition)也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在,部分对象与整体对象之    间具有同生共死的关系。
•  在组合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。在UML中,组合关系用带实心菱形的直线表示。

    UML之类图_第6张图片
 人有两个胳膊和两个腿,如果脱离了身体,胳膊和腿是不能单独存在的。

B依赖关系(Dependency)

  说明:假设A类的变化引起了B类的变化,则说名B类依赖于A类。

•   是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。
•   在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方


C泛化关系(Generalization

说明:ABC的父类,B,C具有公共类(父类)A,说明AB,C的一般化(概括,也称泛化)

•  泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的直线来表示。
•  在代码实现时,使用面向对象的继承机制来实现泛化关系,C++/C#中使用冒号“:”来实现。

UML之类图_第7张图片
工程师和经理都是雇员的一种,是一种is a kind of的关系

D实现关系(Realization) 

说明:实现是类元之间的语义关系,在该关系中一个类元描述了另一个类元保证实现的契约。


UML之类图_第8张图片
附一张多重性关系的表格
UML之类图_第9张图片

关系的比较:

泛化=实现>组合>聚合>关联>依赖

    能用继承来描述的关系就使用泛化关系,当描述接口和类的实现时一定用实现来描述,两个类之间如果有结构关系的时候一定用关联来描述。除此之外用依赖来描述。


下面是我画的机房的类图:

UML之类图_第10张图片




小结:通过对类图的总结,让我知道了总结的重要性,以及实践的重要性,图一定要亲自画,因为在实践中会收获很多。

 第一次画希望大家多多指导!




 


你可能感兴趣的:(UML之类图)