什么是类图?
类图是描述类,接口,协作以及他们之间关系的图,用来显示系统中各个类的静态结构。类图是一个描述系统类及其之间关系的静态图,静态图可以包括很多的类图,一个类图只是表达了系统的一个方面。下面就来总结一下类图中的重点。
类图定义系统中的类,描述类之间的关系,说明类的内部结构。比如我们构造汽车,首先确定车厢,车轮和发动机等的基本词汇,分析他们的属性(如车厢的材质,颜色等)和行为(如发动机的运转等),最后是确定这些词汇之间的联系。
类图元素:类+接口+关系
类
类的组成有类名称,属性,方法
如何确定类?
当我们描述一个系统的时候,在面向对象的开发方法中,我们应该先确定这个系统都有什么类。一个办法就是找名词对象,类就是具有同一类属性,方法对象的集合,对对象进行抽象就可以得到类。
如何得到类的属性?
属性是对类静态特征的描述,这些特征是所有类所共有的。
如何得到类的方法?
方法就是对类的对象所能做的事物的抽象。当我们不确定这个方法属于哪个类的时候,我们可以看是谁执行了这个方法,那么这个方法就是属于该类。
接口
接口是在没有给出对象的实现和状态的情况下对对象行为的描述。类可以实现接口,在程序运行时,其他对象可以只依赖此接口,而不需要知道类的具体操作。
关系
如何准确描述类之间的关系?
在进行抽象的过程中,我们很少会发现类之间是独立存在的,大多数的类都以某些方式彼此协作。
类之间的关系有:关联,依赖,泛化,实现。
关联--结构关系:
关联关系又可以分为普通关联,聚合和组合。普通关联:
是一种拥有的关系, 它使一个类知道另一个类的属性和方法,他是一种结构关系。
聚合--整体和部分独立:
整体和部分之间可以单独存在,没有明显的附属关系,部分不能脱离整体而存在,如书架和书之间,没有了书剑,但是书还可以存在。
组合--整体和部分附属:
整体和部分之间不能单独存在,有明显的附属关系,部分不能脱离整体而存在。如人和头,手是组合关系。
聚合和组合的图形表示:
对关联的修饰有名称,角色和多重性。
名称:关联的名字。
角色:关联中靠近他的一端的类对另一端的类呈现的职责
多重性:指有多少个对象可以参与到该关联中。
依赖--使用:
一般是“使用”关系,即一个类的方法中用到了另一个类,包括了调用,实例化,参数和发送,这就是一种依赖关系。
泛化--继承:
泛化关系是一种存在于一般元素和特殊元素之间的分类关系。体现了类之间“继承性”,子类继承父类的所有属性,大大提升了代码的复用性。
实现--一般是类实现接口:
是规格说明和实现之间的关系,比如类实现接口。
下面是机房收费系统第一次画的类图:
思路:需求分析阶段分析系统的功能及角色,绘制了系统的用例图,在此阶段我们会把一个系统分成不同的模块,每个模块都有对应的用例,机房系统我们会分成一般用户模块,操作员模块,管理员模块,根据每个模块的用例图绘制类图,根据每个模块的功能,分析都会有哪些类,确定累的属性和操作,最后寻找类之间的联系。把类进行分组放到一个模块里。
系统中参与者相关得类:一般用户,操作员,管理员,外部设备
系统中用到的其他类
一般用户模块的类图:
操作员模块的类图:
管理员模块类图:
各类之间的关系:
第二次画的类图:
思路:
1.确定类
有一般用户,操作员,管理员,学生,卡。学生用卡上机会有上机记录类,有注册卡信息类,充值信息类,以及退卡信息类,操作员工作会有操作员工作记录类。管理员对操作员结账会有结账信息类。
2.寻找类之间的联系
管理员,操作员,一般用户之间是泛化关系,即继承关系。学生可以有多张卡,是关联关系,一般用户要查看学生上机记录,在一般用户的方法中会用到上机记录类,所以之间是依赖关系。卡有很多注册信息,充值信息,退卡信息,所以卡与他们之间是关联关系,即拥有关系。
总结:
类图是描述类及其之间关系的静态图。在这里我们应该准确地找到类,以及准确地描述类之间的关系,他们之间的关系能用关联来表示的就不要用依赖。能用聚合,组合表达的就不要用关联,这次图都是根据自己的理解画的,有些不太理解的地方,在以后的学习中继续完善,加油。