UML(1)

来源:互联网 发布:mac爱奇艺flash 编辑:程序博客网 时间:2024/05/01 10:21

UML1

任何事情都要先想清楚了才能做,软件开发更是如此!软件开发过程不可能一上来就开始盲目写代码,写代码之前必须搞清楚下面一些基本问题:

1.要做什么?

2.做成什么样?

3.怎么去做?

软件设计把软件开发想清楚的过程.

软件工程对软件开发全过程进行建模和管理.

模型对问题的书面上的无歧义文字或图形的描述.简言之模型是对现实的简化通过模型人们可以了解所研究事物的本质

建模对现实系统进行适当的过滤用适当的表现规则描述出简洁的模型

建模是一种深入解决问题的方法.

建模的原则:

(1). 选择建立什么样的模型对如何发现和解决问题具有重要的影响。正确的模型有助于提高开发者的洞察力。

(2). 每个模型可以有多种表达方式使用者的身份和使用的原因是评判模型好坏的关键

(3). 最好的模型总是能够切合实际模型是现实的简化,必须保证简化过程不会掩盖任何重要的细节

(4). 孤立的模型是不完整的

UML(United Modeling Language, 统一建模语言): 是一种基于面向对象的可视化建模语言

UML 采用了一组形象化的图形(如类图)符号作为建模语言使用这些符号可以形象地描述系统的各个方面

UML 通过建立图形之间的各种关系(如类与类之间的关系)来描述模型.

UML 2.0 中一共定义了13 种图示(diagrams)。为方便了解,可分类成右侧的结构。    UML

结构图(Structure diagrams) 强调的是系统式的建模: 

  类图 (Class Diagram) 

  组件图(Component diagram) 

  复合结构图(Composite structure diagram) 

  部署图(Deployment diagram) 

  对象图(Object diagram) 

  包图(Package diagram) 

  行为图(Behavior diagrams) 强调系统模型中触发的事件: 

  活动图(Activity diagram) 

      UML

状态机图 (State Machine diagram) 

  用例图 (Use Case Diagram) 

  交互图(Interaction diagrams属于行为图形的子集合,强调系统模型中的资料流程: 

  通信图(Communication diagram]] 

  交互概述图(Interaction overview diagram) (UML 2.0) 

  序列图(顺序图)(Sequence diagram) 

时间图(UML Timing Diagram) (UML 2.0)

UML 中的关系主要包括 

关联关系(association)

依赖关系(dependency)

泛化关系(generalization)

实现关系(realization)

用例图(Use Case Diagram): 也称为用户模型图是从软件需求分析到最终实现的第一步它是从客户的角度来描述系统功能

用例图包含 个基本组件参与者(Actor), 用例(Use Case), 关系:

参与者(Actor): 与系统打交道的人或其他系统即使用该系统      的人或事物在 UML 中参与者用人形图标表示

用例(Use Case): 代表系统的某项完整的功能在 UML 中使     用一个椭圆来表示

关系定义用例之间的关系 ------ 泛化关系扩展关系包含关系

泛化关系表示同一业务目的(父用例)的不同技术实现(各个子用例). 在 UML 用例泛化用一个三角箭头从子用例指向父用例以下是某购物网站为用户提供不同的支付方式

包含关系:一个用例可以包含其他用例具有的行为并把它包含的用例行为作为自身行为的一部分在 UML 中包含关系用虚线箭头加 “<<include>>箭头指向被包含的用例

扩展关系:如果在完成某个功能的时候偶尔会执行另外一个功能则用扩展关系表示.在 UML 中扩展关系用虚线箭头加 “<<extend>>箭头指向被扩展的用例

类图:

类图是面向对象系统建模中最常用的图是定义其他图的基础.

类图主要是用来显示系统中的类接口以及它们之间的关系.

类图包含的主要元素有类接口和关系其中关系有关联关系泛化关系依赖关系和实现关系在类图中也可以包含注释和约束.

类之间的关系:

泛化关系:在 UML 泛化关系用来表示类与类接口与接口之间的继承关系泛化关系有时也称为”is a kind of”关系

在 UML 中泛化关系用一条实线空心箭头由子类指向父类

实现关系:在 UML 实现关系用来表示类与接口之间的实现关系

在 UML 中实现关系用一条虚线空心箭头由子类指向父类

依赖关系:对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间体现为依赖关系例如生产零件的机器和零件,机器负责构造零件对象充电电池和充电器,充电电池通过充电器来充电;自行车Bicycle和打气筒Pump,自行车通过打气筒来充气

在现实生活中,通常不会为某一辆自行车配备专门的打气筒,而是在需要充气的时候,从附近某个修车棚里借个打气筒打气。在程序代码中,表现为Bicycle类的expand()方法有个Pump类型的参数。以下程序代码表示某辆自行车先后到两个修车棚里充气:

关联关系:对于两个相对独立的系统,当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系。例如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司;自行车和主人,每辆自行车属于特定的主人,每个主人有特定的自行车。而充电电池和充电器之间就不存在固定的对应关系,同样自行车和打气筒之间也不存在固定的对应关系。

聚合关联:聚合关联是一种特殊的关联它表示类间的关系是整体与部分的关系简言之关联关系中的一个类描述了一个较大的事物它由较小的事物组成

聚合关系描述了 “has a” 的关系即整体对象拥有部分对象

整体和部分之间用空心菱形箭头的连线连接箭头指向部分

组合关系:组成关系是更强形式的聚合

组成关系中整件拥有部件的生命周期所以整件删除时部件一定会跟着删除而且多个整件不可以同时共享同一个部件。

聚合关系中整件不会拥有部件的生命周期所以整件删除时部件不会被删除再者多个整件可以共享同一个部件.

UML 中组成关系用实心的菱形实线表示

原创粉丝点击