UML分析类图的绘制

来源:互联网 发布:vip影视盒子源码 编辑:程序博客网 时间:2024/05/01 01:59

首先明确分析类是基于我们之前的用况分析之上的


类图分为三个层次

1.对象层 (确定有哪些类)

2.特征层 (确定每个类的具体属性和操作)

3.关系层(确定这些类之间的关系)


我们对类图的绘制就是要确定这三个层次的内容并用规范的UML将它们表示出来。

在整个过程中,我们不可能将每一层都分析得非常完美再进行下一个层次的分析。我们需要保持足够严谨和认真的态度,在基本确定这一部分的分析内容,并审查调整之后,在后续的分析过程中,用可能迸发出的灵感或者对某个错误的意识,对之前的内容不断的调整和完善。

我个人认为面向对象分析与设计对于那些玩技术的大牛们来说没有太大技术含量,甚至有些繁琐无聊。但是在软件工程中,面向对象分析建模的作用与重要性是大家都了然于心的。然而一份优秀的作品却一定是在我们的反复修改与推敲的过程中产生的。因此更多的是态度。不过不排除鄙人才学疏浅还没有体会到UML技术层面的博大精深。始终认为所有走心的东西都让人看起来很舒服。

 恩,废话结束。


一、对象层


分析类类型:

1.边界类(系统边界):用户界面、系统接口、硬件接口

2.实体类(系统信息):系统存储的信息及相关行为

3.控制类(协调用例行为):封装用例所持有的控制行为

 

分析类(Analysis Classes)

* 每一对Actor-UseCase一个Boundary类

* 每一个UseCase一个Control类

* 每一个UseCase若干个Entity类


 

 


分析类的表示方法:(以下3种都可以)

 


 


 

接口:接口类,仅具有操作说明,没有实现,是实现它和使用它的类的桥梁。 UML中,把一个接口定义为一个类、构件或子系统的对外可见的一组操作的描述符---对外提供的服务。

 

 

 

 


对象和类的概念

对象是具有明确语义边界并封装了状态和行为的实体,由一组属性和作用在这组属性上的一组操作构成,是构成系统的一个基本单位。

类是对一组具有相同属性和操作的一组对象的抽象描述。

 

识别对象与类:

1.考虑系统边界(人、设备、外系统的接口)

2.研究问题域(领域模型、客观事物对系统对象的映射、事件等)

3.考虑系统责任(功能提供的对象、用况产生的场景)

4.名称法

 

审查与筛选

1.舍弃无用的类

2.(与实现条件有关的类,可推迟到OOD考虑)

3.检查命名的准确性,如歧义不准确等

4.类的调整(简化)

 

二、特征层:描述类的属性和操作

这里感觉也没什么好说的欸,自己根据经验判断这个系统中的类应该有什么属性和操作就好吧。

总之原则是:宁多勿少,去芜存菁


主动对象:分析阶段是具有主动行为的对象,在设计阶段是拥有线程或进程并能够启动控制活动的对象。

(考虑问题域、系统责任、系统边界、执行路线的逆向追踪)

类属性:所有对象的共同特征,一个类的所有对象实例,属性值相同,类属性名称有下划线。(static)

类操作: 类操作是用来操纵类属性的操作,带下划线。

 

三、关系层

类图的关系层:类之间的关系(泛化、关联、聚合、依赖)

1.泛化

抽象操作:一个类中没有实现的操作(即没有提供方法),带有标记“{abstract}”,或者把操作的特征标记写成斜体来表示

抽象类:含有抽象操作的类是不能直接实例化的,叫抽象类。带有标记“{abstract}”,或者把类名写成斜体来表示。

2.关联

定义:如果类的对象之间通过属性有连接关系,那么这些类之间的语义关系就是关联。用关联* (association)表示类之间的静态联系。

链:链是关联的一个实例,是对象间的语义连接。用链*(link)表示类对象之间的静态联系。如果有关联名,就应该在它的下面画线表示链名。

 

 

多重性的表示:1,3,8    0..1   0..*    *    1..3,7..10,15,19..*

关联类:关联类既可以被看作是具有类的性质的关联,也可以被看作为具有关联性质的类。

限定符:在使用关联时,一种常见的用法是查找。给定关联一端类中的一个对象,按照另一端类的对象的特点,查找其中的对象时,可使用限定关联*。

 

建立关联:

1)认识对象之间的静态联系 :考虑问题域和系统责任——哪些类的对象之间的关系需要在系统中表达。

2)认识关联的属性与操作: 对于考虑中的每一种关联,进一步分析它是否应该带有某些属性和操作。就是说,是否含有一些仅凭一个简单的关联不能充分表达的信息。

3)分析并表示关联的多重性:从连接线的每一端,看本端的一个对象可能与另一端的几个对象发生连接,把结果标注到连接线的另一端。

4)对多对多的关联的处理

 

3.聚合

聚合:表示整体类和部分类之间的“整体-部分”关系,是关联的特殊形式。

组合:一个部分类的对象在一个时刻仅可属于一个整体类的对象,整体类的对象负责部分类的对象何时属于它,何时不属于它,且在整体类的对象销毁之前,它要释放或销毁它的部分类的对象。部分类的对象可以先于整体类的对象而存在,也可以由整体类的对象创建它。

表示法(组合的聚集端的多重性不能超过1):把聚合表示成一端带有一个菱形的线段,菱形指向聚集的那一端,如果是组合则菱形为黑色实心


 

 







 


4.依赖(用带箭头的虚线表示)

依赖规约了两个或多个模型元素(或两个模型元素集合)之间的一种语义关系,对目标元素的改变可能需要改变该依赖中的源元素。

 

 

 

关联主要用于类间通过属性建立结构关系的地方。仅当被建模的关系不是结构关系时,才考虑使用依赖


确定某项内容的每一步完成后都要进行审查和筛选(包括问题域、系统责任和自身的正确性和合理性等),审查过后要对类图的对应层(对象层、特征层、关系层)进行相应的修改


以上大部分内容都是总结于面向对象分析与设计课,在此对认真可爱的曾老师表示感谢,之后会不断地拓展深入学习相关内容。

0 0