实例:画出员工打卡系统中上班打卡用例的类图?
一、类图(ClassDiagram)
定义:描述类、接口间的协作以及他们之间关系的图,用来显示系统中各个类的静态关系。
二、类
对象:可数字化描述的复杂事物,在程序中指一组属性和相关方法的集合,分别对应现实生活中的某一事物的外在特征和行为。
抽象:将共同行为特征提取出来的过程。
类:抽象数据类型,包括类名、属性、方法三要素。
类与对象的关系:类是对象的模板,对象是类的实例,但类中的属性并不全是对象本具有的特征,比如一个学生类里面由属性学号id,但一个对象学生并不具有id这个特征。
类的属性和方法的可见性:
Public:以+表示
Private:以-表示
Protected: 以#表示
类属属性(static):被该类的所有对象共享的属性
三、关系
由于对象是类的实例,因此,类与类之间的关系也就是其对象之间的关系。
1.关联关系:是表示对象之间结构关系
(1)普通关联
a.双向关联:两个类相互都知道另一个类的公共属性和操作。
b.单向关联:只有一个类知道另外一个类的公共属性和操作。
大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可服用的类。
表示一个用户可以有0到无数台台计算机,而一个计算机可以拥有1到无数个用户。
(2)递归关联:略
(3)聚合:现实中,是一种引用关联,即整体引用部分,部分可以相对独立地存在,“非同生共死”关系。在数据库设计中是一种弱关联,在设计数据库的时候,往往不会设置级联删除。
表示一个球队可以有0到无数位球员,而一位球员只能拥有一个球队或者没有球队。
(4)组合:整体拥有部分,且部分不能脱离整体而存在,否则丧失意义,”同生共死“关系。组合是一种强关联,在数据库设计中可以设置级联删除。
2.依赖关系:类之间存在的短暂的、非结构化的使用关系。
假如A类的某个方法中,使用了B类,那么就说A类依赖于B类,它们是依赖关系。
比如 A类的某个方法使用B类,可能是方法的参数是B类,也可能是在方法中获得了一个B类实例。但无论是哪种情况,B类在A类中都是以局部变量的形式存在的。
因此,A类中有B类型的局部变量,就说A类依赖于B类。
UML图表示如下:(ep:A=电视,B=频道)
虚线箭头表示依赖,箭头指向被依赖的类。
常见的依赖关系如下:
(1)类B以参数的形式传入类A的方法。我个人将它就取名为“参数依赖”。
(2)类B以局部变量的形式存在于类A的方法中。我个人将它就取名为“局部依赖”。
(3)类A调用类B的静态属性或方法。我个人将它就取名为“静态依赖”。
3.泛化关系:打破封装,实现扩展,解决类之间耦合的方法之一。
4.实现关系:略