【UML学习】类图

定义:类图是面向对象系统建模中最常用和最重要的一种图,是定义其他图的基础。类图主要用来显示系统中的类、接口、以及他们之间的静态结构和关系的一种静态模型。


表达方式:Class Diagram=Class + Relationship +Constration

类图=+关系+约束

 

表示方法:

 类是任何面向对象系统中最重要的构造块,是对一组具有相同属性、操作、关系和语义对象的描述。一个类可以实现一个或多个接口。类可以是问题域一部分的抽象,也可以是构成实现的类。

 类的可见性表示:

可见性名称

可见性属性

标志

描述

公共性

Public

+

任何给定的类目可见的外部类目都可以使用这个特征

受保护性

Protect

#

类目的任何子孙都可以使用这个特征

私有的

Private

只有类目本身能够使用这个特性

Package

~

只有在同一个包中声明的类目能够使用这个特性

类之间的关系:1.关联关系说明一种事物的对象与另一种事物的对象相联系,是对象之间的一种引用关系。关联关系的属性分别是:名称、角色、多重性、聚合、组合、导航性。如图:

                  计算机生成了可选文字:关 联 角 色 多 重 性 f “ +envlwee Person +emplwer Com 地 00 巴 0

关联又分为一般关联、聚合关联、组合关联。 2.依赖关系是两个事物之间语义关系,其中一个事物(称为是服务的提供者)发生变化会影响到另一个事物(称为客户或服务的使用者)或想它提供所需信息。依赖是一种对象间很最弱的一种关联方式,在UML中用有方向的虚线表示。3.泛化关系即子类和父类的继承关系。在UML中用带有空心三角箭头的实线段表示。4.实现关系将一种模型元素与另一种模型元素连接起来,一个模型元素定义一个合同,另一个模型元素保证履行该合同,也就是说一种模型元素具有行为的定义,另一种模型元素来具体实现。

区别组合和聚合】:组合和聚合都是整体与部分的关系,但是组合是聚合的一种特殊情况,是更强的聚合。组合意味着整体和部分组件之间是不可分的关系。在UML中聚合用空心的菱形表示,组合用实心的菱形表示。举例:对于一辆汽车的油泵、发动机、无线电,虽然都是整体和部分的关系,但是机油泵和发动机对于汽车是不可分的,是组合关系。而无线电则是聚合关系。再如一群人中的每一个人对于整体是聚合关系,但人的眼睛,鼻子等器官相对于人体是组合关系。因此熟记这两个例子要比单纯的区分文字的定义简易的多。

 区别关联和依赖】:从类的关系的强弱。关联表示类之间很强的关系,依赖表示类之间的较弱的关系;从类之间关系的时间角度来分,关联类之间的持久关系,需要保存。例如学生管理系统中的Student类和Class类,一个学生属于哪个班级是一种重要的业务关系,不保存的话对系统会产生重要影响,因此是关联关系。而依赖类是一种临时短暂性得不需要保存的关系。例如学生管理系统中的Student类和学生登录界面类之间就是一种依赖关系,登录界面依赖student类的信息来显示编辑学生信息。


难点

如何确定类?

识别类是面向对象方法的一个难点,但又是建模的关键。可以根据用例描述中的名词确定候选类;根据用例确定类;使用CRC分析方法寻找类;根据边界类、控制类和实体类的划分来帮助发现类;参考设计模式的来确定类;对领域进行分析或利用已有的领域分析结构得到类;利用RUP在分析和设计中寻找类。常用的类识别方法有名词识别法,系统实体识别法,丛用例中识别类,用分解与抽象技术识别类和CRC分析方法。

1.名词识别法的关键是识别系统问题域的实体,从系统描述中标识出名词及名词词组,其中单数名词可以识别成对象,而复数名词可以识别成类,如在学生管理系统中有学生、教师、课程部门等类。

2.用例识别法是通过分析用例图来帮助建立类。用例描述中出现了哪些实体(实体类),这里的实体不是Actor,而是Actor使用系统时所调用的实体,用例完成需要哪些实体的配合(协作类);用例执行过程会产生并存储哪些信息;用例需要操作哪些设备(通信类)。如学生管理系统中教学干事是一个参与者,但是在系统中并没有作为一个实体出现,他的工作都可以通过调用其他类的方法来完成。如学生实体也不是用例图中作为参与者的学生,而是作为一个系统内的业务实体供Actor使用,如增加和删除学生,可以修改学生信息等。

3.【较难理解】CRCClass Responsibility collaboration)分析法提供了一种简单的标识和组织与系统或产品需求相关的类的手段。要识别一个候选类是否是一个真正的类,应该先确定这个候选类是否担负着职责,同时是否有协作关系。

CRC建模的步骤如下:(1)标识潜在的对象类。称述中的名词或者名词短语是可能的潜在对象,他们以不同的形式展示出来。(2)筛选对象类,确定最终对象类。方法:保留的信息:仅当必须记住有关潜在对象的信息,系统才能正常运行,则该潜在对象在分析阶段是有用的。需要的服务:潜在对象必须有一组可识别的操作,他们可以按某种方式修改对象属性的值。多个属性、公共属性、公共操作、必要的需求。(3)标识责任,责任是与类相关的属性和操作。(4)标识协作者。如果两个类具有整体和部分关系或者一个类必须从另一个类获取信息,或者有依赖关系,则他们往往具有协作关系。(5)复审CRC卡。

 下面是我画的类图:

                                 计算机生成了可选文字:学 生 姓 名 学 号 金 额 类 型 0 查 余 额 0 0 查 看 充 值 记 录 0 0 查 香 上 机 状 态 0 0 修 改 密 码 0 us 充 值 卡 卡 号 崆 名 0 充 值 0 0 退 卡 0 e fcr 结 账 日 期 每 日 结 眯 单 0 每 周 结 眯 单 0 操 作 员 姓 名 输 师 号 0 添 加 学 生 信 息 0 1 0 删 淙 学 生 信 息 0 0 查 间 信 息 0 us 电 腚 座 位 号 上 机 0 每 下 机 0

总结:我在学习类图的的时候觉得最大的难点就是如何确定类,查看了一些资料还是感觉有点难,对哪个应该定义为类比较模糊。作为所有面向对象方法的支柱,要在接下来的学习中加深对类图的理解。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值