类图是软件工程的统一建模语言,是一种静态结构图,该图描述了系统的类集合,类的属性和类之间的关系。
类图是面向对象式的建模。他们一般都被用于概念建模(conceptual modelling)的系统分类的应用程序,并可将模型建模转译成代码。
如何表示一个类
在UML类图中表示具体类
具体类在类图中用矩形框表示,矩形框分为三层:第一层是类名字。第二层是类的成员变量;第三层是类的方法。
再下图当中我们可以发现在成员函数和方法前有着不同的符号,分别代表着不同的权限。
+
代表public
-
代表private
#
代表protected
c#代码示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Player
{
private Weapon _sword;
private Weapon _gun;
public Weapon CreateSword(){
}
public Weapon CreateGun(){
}
}
uml类图示例
如何表示一个抽象类
抽象类和具体类的区别在于是否用斜体来进行表示,抽象方法也是同理。
c#代码示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
public abstract class Player
{
private Weapon _sword;
private Weapon _gun;
public abstract Weapon CreateSword(){
}
public Weapon CreateGun(){
}
}
uml类图示例
如何表示一个接口
接口也是作为矩形框表示,但是只有两层,第一层用<<interface>>
来进行标识,第二层是接口的方法,如果你不了解什么是接口,你可以去看我的关于接口的视频
1
2
3
4
5
6
7
8
9
10
public interface Player
{
public Weapon CreateSword(){
}
public Clothes CreateClothes(){
}
}
uml类图示例
如何表示类之间的关系
Inheritance继承关系
实线的空心箭头一般用于表示类和类之间的继承关系。以及接口和接口之间的继承关系
虚线的空心箭头一般表现类实现接口的关系。
![] 上方表示继承关系,下方表示实现关系
Association关联关系
关联关系指一个对象知道另外一个对象的属性和方法。具体的表现形式位一个对象含有另一个对象的引用。如下图代码示例,玩家包含了对武器类的引用。就可以称玩家和武器之间事关联关系。
1
2
3
public class Player{
public Weapon weapon;
}
一般用实线线性箭头来表示,箭头上方还会有多重性的表达式,用来表现引用的数量,不同表达式所表达的含义如下图所示。
- 数字:代表精确的数量
*
或者0..*
:表示具有0到多个引用0..1
:表示只存在一个引用或者空引用1..*
:表示一个或者多个引用
Dependency依赖关系
依赖关系是一种弱关联关系,理解为两个对象之间存在引用但这种引用不是作为成员变量而是作为局部变量,或者方法参数,方法返回值等形式存在。
一般用虚线线性箭头来进行表示。
组合关系(Composition)聚合关系(Aggregation)
组合关系和聚合关系是关联关系的特例,除了拥有关联关系的特点之外,聚合关系还表示两个对象之间具有着“has a”的关系,部分和整体的关系可以分割,部分可以给其他整体共享,就像公司部分和公司员工之间的关系,员工可以存在在不同的部门,即使被单个部门裁员也可以转去别的部门。一般用空心菱形来表示,菱形在整体的那一方。
组合模式则是代表着“contain a”的关系,强调的是整体和部分不可分割,例如人和眼睛的关系,两者不可分割。一般用实心菱形来表示,菱形在整体的那一方。
但在实际开发过程中一般很难进行判断,通常我们认为整体一消失,部分也消失的就是组合模式,否则则是聚合模式。