小序:
类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。在系统中,每个类都具有一定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责。在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。类的属性即类的数据职责,类的操作即类的行为职责。设计类是面向对象设计中最重要的组成部分,也是最复杂和最耗时的部分.(引自网上的一篇文章感觉说的比较好就引来了,文章最下方有作者的连接地址)
主要内容:1.如何通过UML类图来表是一个类
2.学习UML类图之间的关系(泛华,实现,组合,聚合,关联,依赖)和它们的图形表示形式
UML视图有很多,静态视图,用例视图,顺序图,协作图,状态机视图等等.... 下图为UML中的视图和图:
这里只是简单描述一下UML静态视图中的类图。主要原因是为了进一步的学习
设计模式作准备。
类图(Class Diagram)使用出现在系统中的不同类来描述系统的静态结构,它用来描述不同的类以及它们之间的关系
在UML中,类使用包含类名、属性和操作且带有分隔线的长方形来表示。下面就对UML类图中结构表示方式详细介绍
类名:类的名字,一个字符串表示
属性:表示方式:
可见性 名称:类型 [ = 缺省值 ]
其中可见性有三种:
“-”:私有(private),
“+”公共(public),
"#":代表保护类型(protected)
名称:就是属性的变量名类型:对应属性存储类型缺省值:一般省略,代表变量的初始化值
操作:表示方式为:
可见性 名称(参数列表) [ : 返回类型]
可见性:同属性可见性
名称:操作的方法名,用一个字符串表示
参数列表:方法名中的参数,多个逗号隔开
返回类型:方法的返回值的类型
例如:定义一个Employee类,它包含属性name,age,email和操作modifyInfo UML类图具体表示如下:
在UML类图中常用的有泛化(Generalization),实现(Realization),关联(Assocation),聚合(Aggregation),组合(Composition),依赖(Dependency),下面就详细介绍下他们的含义与标示方式。这也是我学习重点。
1.泛化 (
Generalization
)
【泛化关系】:是一种
继承关系
,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为
泛化不是java中的泛型,泛型表示面向对象思想中的“继承”关系
表示方式:子类用实体箭头指向父类。
例子:如下图红线所示
2.
实现(Realization)
【实现关系】:是一种类
与接口的关系
,表示类是接口所有特征和行为的实现.
UML类图中的实现,就对应面向对象编程中的接口的实现
表示方法:子类用三角箭头的虚线,指向接口 如下图所示:
3.关联(Association)
关联关系:是一种
拥有的关系,它使一个类知道另一个
类的属性和方法;其中关联关系是可以双向的也可以是单向的。
双向的可以有两个箭头或者没有箭头,单向的是只有一个箭头.
使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量
4.聚合(Aggregation)
聚合关系:聚合关系是一个
整体和部分的关系,且部分
可以离开整体单独存在。
聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法是无法区分,必须考察具体逻辑关系
代码体现:成员变量。
箭头及指向:带空心菱形的实心线,菱形指向整体。
具体如下图:
5.组合(Composition)
组合关系:
整体和部分关系,但部分是
不能离开整体二单独存在。如公司和部门是整体和部分的关系,没有公司,就没有部门。
组合关系是关联关系的一种,比聚合关系 还要强的关系,它要求普通的聚合关系中代表整体的对象部分的对象生命周期
代码体现:成员变量
表示方式:带实心菱形的实线,菱形指向整体。
如下图:
6依赖(Dependency)
依赖关系:是一种使用的关系,即一个类试下需要另一个类的协助,所以要尽量不使用相向的互相依赖
代码表现:局部变量,方法的参数或对静态方法的调用
箭头指向 :带箭头的虚线,指向被使用者
如图: