`

画UML类图时所查阅的相关信息

    博客分类:
  • UML
阅读更多

 

1UMLUnified Modeling Language(统一建模语言)的缩写,是使用面向对象概念进行系统分析设计的工具,它主要是用一些规范、形象的图形来描述业务或系统也就是称之为建立业务模型或系统模型,用UML建模,既是用UML建立业务模型和系统模型。

2、业务模型是指用UML描述业务,即画出业务(business)用例图,当然,这里说画用例图,不应仅仅理解为画出图形,用例图应附有详细的业务说明。

2.1、业务用例如下所示(注意:在Rational Rose中业务人员和业务用例和系统用例在图形上有所不同,业务用例用一个椭圆加一斜杠表示。)。


2.2、一般说来,业务建模只需要画出业务用例图即可。在判断一项业务的复杂程度和大小规模时,常常可根据业务用例数量来判断,因此,在业务建模时,每个业务用例应合理分解,得到的业务用例应在业务复杂程度,规模大小方面相差不多,以便于对业务的评估和进行系统开发。

 3、系统模型是指用UML描述系统,系统模型是在分析业务模型后得到的,通常,系统模型用用例图、类图、时序图三种图来描述即可,如果功能较为复杂,也可以用活动图和状态图来对某一部分功能进行特别描述。

    3.1、系统用例图是从软件功能的角度去描述软件系统,因此和业务用例是不同的,表示如下:


    3.2、系统用例图不是必须的,但它能帮助我们理解系统模型。

4、类图是系统模型中最重要的图形,是UML中唯一能产生程序代码的图形,类图描述了对象的属性和方法,如下入所示:

   


 

 

    4.1、类图示系统建模必不可少的图形,如果做得好,可由类图生成程序的结构,然后由程序员按照类图生成的程序结构去细化程序,实现功能。

5、时序图是对类图的补充,它描述了对象的方法的调用情况,时序图和类图的联系最为紧密,在时序图中添加一个消息(我一直不明白为什么要称之为消息),如下图中的inputStudents() ,则会在消息所指向的对象类图中的类—Register 自动生成一个方法inputStudents()(但在时序图中删除一个消息,则不会自动删除类图中对应的方法)。


    5.1、时序图虽不能生成程序,但它对系统功能的操作能较为清楚地描述,相对类图(类图称为静态模型)而言,它是一种动态的描述,因此称为动态模型。

    5.2、有一种和时序图相同功能的图叫做协作图,在Rational Rose 可以用F5键自动转换这两个图。

   

总结,建模分为业务建模和系统建模,其中:

    1、业务建模即建立业务模型业务用例图;

    2、系统建模即建立系统模型用例模型(用例图)、静态模型(类图)、动态模型(时序图)。

 

UML图形中英文对照(Rational Rose软件):

1  用例图—Use Case Diagram

2    —Class Diagram

3  时序图—Sequence Diagram

4  协作图—Collaboration Diagram

5  状态图—Statechart Diagram

6  活动图—Activity Diagram

7  组件图—Component Diagram

8  配置图—Deployment Diagram

 

一些相关的定义:

抽象:只定义你想要的属性和操作,不相关的可以省去不写.

继承:类之间的特性传承

多态性:类的名字不同,但有相同的操作名

封装:非公开的属性和操作,这样可以降低类之间的耦合

消息传递:类之间协作的方式

关联:类之间发生关系时的术语.两个类之间可以有多种关联.

多重性:一个类和多个类之间有关联.

聚集:1个类包含N个类,那么主和子之间就有聚集关系.

组成:聚集的加强版,即组成的每个成员都必须存在,缺一不可.

 

类的可视化例子:

类名:WashingMachine

包名:有包的情况下,可能要把包名写在类名前面,比如:PackageName::WashingMachine

属性: brandName , 更全的例子是 + brandName:String = "TNND"

对象名:myWasher:WashingMachine

操作: +addClothes(C:String)void

职责:写在类图的最下面,记述这个类它要做什么

约束:{}的格式写在类国的边上,指定个别属性的取值范围.

 

关系:

关联:A要在类B中发挥什么作用时,就用带方向的关联来表示,关联相关的概念:关联名,角色名,关联上的约束,多重性.

关联类:A和类B之间的关联,是通过类C来体现的,那么类C就是关联类.

:相对于类,对象之间的关系叫链.

多重性: 可能1个类A对应N个类B. 例子有 1 1・・* 0,1

限定关联:在多重关联时,A可能要通过一个指定的属性来识别类B.此时那个属性,就叫做限定符

自身关联:一个类可能同时代表多种角色,那在类图中就可能表现为自已和自己关联

继承:子类继承父类, 用实线空三角形指向父类.用――――――――△(这个三角要右转90度)来表示

相关概念:基类,根类,叶类,单继承,多继承.

依赖:当类A的操作里用到类B,就说类A依赖类B 用------->来表示

聚集:上面讲过了.图示为: 部分类 ―――――◇ 总的类

组成:同上.图示为: 部分类 ―――――◆ 总的类

接口:听说有两种:1)在类图的类名上面写<<interface>>, 2)把类名写成IClassName的格式.

实现:是说类和接口之间的关系,用-------△(这个三角要右转90度)来表示。另外,接口可以简化成一个圆圈.

可见性: + 公有 # 保护 - 私有

 

有点搞的地方:

1,关联和依赖:简单的说,关联是指把类B定义成类A的属性. 依赖是指,A的一个方法,用到了类B.

2,聚集和组成:聚集,少几个没问题. 组成,少一个不成. // 其实还是不知道两者有什么实际意义,感觉还是一回事.

 

UML类图的画法:

关联 association:直线

依赖 dependency:带箭头的虚线

继承/泛化 generalization:带三角箭头的实线

实现 realization:带三角箭头的虚线

聚合 aggregation:带空心菱形的虚线

组合 composition:带实心菱形的虚线

 

其中聚合和组合的区别,别人的说法是:聚合——如果整个单元消失了,被聚合的类仍然作为它本身存在下去;组合——如果整个单元消失了,被组合的类也一同消失。

 

有人举例说明:聚合,就是一台电脑和它各部件的关系。组合,就是一个人和这个人的各个器官的关系。

 

不过觉得有些偏差。人死了,器官仍然可以移植给别人用吧?虽然会有排斥反应,器官的DNA也是死去那个人唯一的。

 

从实际编程考虑的话,个人觉得,聚合用于这样的场合——有一个类,它引用了一个其他的类作为它的属性;组合——有一个类,它里面写了内部类。

这么理解可能片面了。没理解到根上。不过应该还算说得通吧。

  • 大小: 6.4 KB
  • 大小: 3.9 KB
  • 大小: 15.2 KB
  • 大小: 20.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics