UML学习笔记之类图

类图:

         面向对象设计的基础就是类。类是代表现实事务或者功能的构造块。

         类图是静态图,贯穿分析设计的始终。一般从商务伙伴能理解的类开始建模,最终成为只有开发小组才能理解的类。

         建模类图是为了更加详细描述产品。随着反复的建模类图,类图会越来越成熟,其数量和大小会不断增加,它们会越来越详细,逐渐显示出产品中执行流的每一条路径。

 

类图的标记符组件:

l         类:分成三部分的矩形框,类名,特性,操作。“-”为私有,“+”为公有,“#”表示收保护

l         关联:两个类通过一条线相关联。在线上可以写关联名,比如“Teacher”类和“Class”类之间的连线上写“teach>”,表示teacher教授一个class

l         多重性(Multiplicity):用来指示一个类的“多少”对象与另一个类的“一个”对象相关。“*”表示无限多个,通常读作“many”。多重性还可以用来显示多个范围或者数值组,用逗号隔开。

l         角色:在类图中使用角色可以帮助读者理解第一个类对于第二个类的作用。角色与多重性显示的位置类似。例如:teacherclass中扮演instructor的角色,instructor写在teacher端,同时instructorclass中的一个属性。

l         对象:它是一个带有文本Object Name:Class Name的方框,整个文本带有下划线。对象可以有特性值,在某种意义上它就唯一了。

l         包:Package Name::Class Name。例如:JasonTRoff : Wackos :: RockStar 之中,Wackos是包,RockStar是类,JasonTRoff是对象

l         聚合:一种关联。使用一端有空心菱形的连线。聚合表示两个类之间是整体与部分的关系,其中部分类可以独立于整体类而存在。例如:CPU和显示器聚合成了电脑,而CPU和显示器都可以独立存在。

l         组合:聚合的一种。使用一端有实心菱形的连线。组合表示部分类不能脱离整体类而存在,整体类消亡了部分类也消亡了。

l         泛化:

l         约束(constraint):约束可以预定义,也可以由用户定义。有两种方式为泛化建模约束:第一种,多个泛化不共用空心箭头时,用虚线穿过所有泛化的连线,并将“{约束名}”标在虚线上;第二种,多个泛化共用空心箭头,则将“{约束名}”标在箭头下。介绍几种UML中的预定义约束:(没有强制性要求使用这些约束)

1.         不完全约束(incomplete constraint):表示泛化或者子类化的类的清单是不完全的,即类图中没有完全显示出来,可以让读者知道实际内容不止眼前看到得这些。

2.         完全约束(complete constraint):读者看到得是全部内容。

3.         解体约束(disjoint constraint):表示在紧靠约束下面的泛化的类不能子类化为通用的类。也就是紧靠约束下的多个类不能有共同的子类。

4.         重叠约束(overlapping constraint):与解体约束相反,表示约束下的多个类可以共享相同的子类

l         鉴别器(discriminator):标记在箭头旁。用来说明泛化的作用。它们指示出泛化关联中的子类应用于相关超类时的角色。鉴别器不能是超类的特性名,也不能是与超类相关的任何关联的关联名。

l         有序和排序约束:可以在任何关联上使用。有序约束(ordered constraint)用来说明一个类的对象以某个次序与另一个类的对象相关。排序约束(sorted constraint)表示类中的对象在与关联中其他类的其他对象相关是排序好的。

l         导航:之前使用的关联都是双向导航。也可以使用单向导航,单向导航时一个带箭头的线。

 

 

 

如何建模类图:

四种方式:隐藏特性和操作(不显示特性和操作,不表示没有),只显示特性,只显示操作,同时显示特性和操作(显示了特性和操作,但是框里什么都没写,表示没有)。不显示和显示了是空的是有区别的。

特性:用来表示类持有的数据,并最终提供类的状态。

操作:用来为与建模的类相关的其他类提供功能。

 

如何为特性提供信息:

l         添加数据类型

l         添加初始值

l         添加多重性

l         添加派生的值:派生的值可以使用数学函数、字符串函数或者将要在应用程序中实现的其他逻辑。要想指明一个特性是派生的,需要在特性前添加一个“/”,并且要附加一个注释,注释中包含了派生特性值的指令。

如何为操作提供参数:

l         参数列表(parameter list):parameter name : data type。使用“in”“inout”“out”修饰参数,“in”表示该值为传递值,传递后的值改变不影响原值;“inout”表示该值为传递值,传递后的值改变影响原值;“out”用于值不是传递到操作,而是操作把值返回给参数的情况。

l         返回值:表示返回值类型,“操作 : 返回值类型”

l         例子:+ChangePassword( in OldPassword : String , in NewPassword : String ) : Boolean

 

如何建模类图:反复执行两个步骤:“确定类及其关联”、“确定特性和操作”

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值