uml
面向对象的开发方法,为解决问题域与解题域映射的一致性问题。引入UML工具。
什么是UML?
一种可视化语言,描述建模过程中所有的对象。软件设计全过程的建立模型工具。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。
描述关系的术语??
关联、泛化、实现、依赖
面向对象建模的步骤??重点
需求获取:
用况(use case)模型和用况场景
需求分析:
建立活动图,状态图
类图(建立域模型)
顺序图(实现用况)
编写需求规格说明书。
需求的验证。
描述客观事物的术语?8大术语???
对象:描述客观事物具体实体,由属性和操作组成。
对象只描述客观事物本质的与系统目标有关的特征。
对象之间通过消息通信,一个对象通过向另一个对象发送消息激活某一个功能。
类:
相同属性、操作、关系和语义相同一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。包括属性和服务两个主要部分。
- 属性,描述了对象的具体特征。
每条属性包括属性的可见性、属性名称、类型、缺省值和约束特性。
uml规定类属性语法为:
可见性 属性名:类型=缺省值{性质串}
可见性包括:- public(+):对所有类可见
- protected(#):该类及子类中可见
- private(-):该类本身可见
- 包内(~):只对同一包声明的类可见
可见性支持了 信息隐蔽这一软件设计原则。(考点)
- 类的操作
也称为功能,但是它被约束在类的内部,只能作用到该类的对象上。
接口
接口(Interface)是一种特殊的类,它具有类的结构但不可被实例化,只可以被子类实现。它包含抽象操作,但不包含属性。它描述了类或组件对外可见的动作。采用分栏和关键字(interface)的矩形符号来表示。供接口是圆圈,需接口是半圆。
协作:
交互,三要素:交互各方、交互方式、交互内容
用况:
对一组动作序列的描述。执行这些动作,就是产生对特定参与者有价值、可观察的结果。
主动类:
至少具有一个进程或线程的类。描述与其他元素行为并发。模型化系统中的并发行为。uml表示为比类多了两条竖线
构件或组件:
模块化的部件,通过外部接口隐藏了它的内部实现。具有相同接口构件可以相互替代。并且可以嵌套。表达解空间中可独立标识的成分。
制品:
系统中包含物理信息的,可替代的物理部件。部署,构成一个可执行系统必要而充分的制品,如dll,exe文件。
节点:
运行时存在的物理元素。具有记忆能力和处理能力的计算机的资源。配置组件部署到相应到节点上去。
表达关系的术语??四大术语
这里特指的是类之间的关系。
详见软件工程设计能够表达客观世界中各种各样的关系,即概念的完备性。
根据类与类之间的耦合度从弱到强排列,UML 中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。
依赖:
是一种使用关系,描述一个类目使用另一个类目的信息和服务。用有向虚线段表示。
它是对象之间耦合度最弱的一种关联方式,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。
依赖分类(四个):
- 绑定:表明源的实例化是使用目标给定的实际参数来达到的。即实参到形参的映射。
- 导出:表明可以从目标导出源,如由生日推出年龄。
- 允许:表明目标对源而言是可见的,一般情况下,当许可一个类访问另一个类的私有特征时,往往把这两个属性之间的这一关系模型化为允许。
- 实例:表明源的对象是目标的一个实例。
关联:
类之间的静态的关系,用得最多。最基本的关系。是一种结构的关系,是对相同结构,相同链的描述。
关联(Association)关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。
链:
对象之间具有特定语义关系的抽象。
表达关联语义
- 关联名
- 导航,对于一个给定的类目,可以找到与之关联的另一个类目
- 角色,关联一端的类目对另一端的类目的一种呈现
- 可见性,通过导航可以找到另一类目的实例
- 多重性,类中对象参与该关联的数目。也就是1…n或1.1这种形式
- 限定符,一个关联的属性或属性表,这些属性的值将与将该关联相关类的对象集做一个划分。
- 聚合:一个类是另一个类的一部分
- 组合:聚合一种特殊的形式,不可单独存在。生命周期是一样的。
- 关联类:是一种类,具有关联和类特性的模型元素。
如下图所示:
- 约束,进一步描述关联一端类的性质。
限定:体现的是类的属于对对象划分,如下图所示:
一般关联关系
关联可以是双向的,也可以是单向的。在 UML 类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类。也可以在关联线的两端标注角色名,代表两种不同的角色。
在代码中通常将一个类的对象作为另一个类的成员变量来实现关联关系。如下图所示:
老师和学生的关系图,每个老师可以教多个学生,每个学生也可向多个老师学,他们是双向关联。
聚合
聚合(Aggregation)关系是关联关系的一种,是强关联关系,是整体和部分之间的关系,是 has-a 的关系。
聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。
组合
组合(Composition)关系也是关联关系的一种,也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是 cxmtains-a 关系。
在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。
泛化:
特殊类(子类)拥有一般类(超类)全部属性与服务。称作特殊类对一般类的继承。提高软件的可重用性。仅由一些单继承关系的类形成的结构又称作层次结构,由一些存在多继承关系的类形成的结构又称作网络结构。
泛化(Generalization)关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系,是 is-a 的关系。
在代码实现时,使用面向对象的继承机制来实现泛化关系。例如,Student 类和 Teacher 类都是 Person 类的子类,其类图如图 所示。
细化:(实现)
描述的是类目之间语义关系,一个类目规约了另一个类目执行的契约。用空心三角形的虚线表示
实现(Realization)关系是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作。例如,汽车和船实现了交通工具,其类图如下:
接口与实现它们的类和构件之间。
用况与实现它们的协作之间。
使用4个术语可模型化的关系
- 结构关系,包括静态和动态结构,可以使用“关联”来模型化。如学校有系和学生
- 继承关系,系统存在一般/特殊关系,可以使用泛化对它们规约。
- 精化关系,指两个不同抽象层之间的一种关系,一个抽象层上的一个事物通过另一个抽象层上的术语细化,并增加一些必要的细节。如系统需求层一个用况可以通过一个协作予以细化。
- 依赖关系:一个类只是使用另一个类作为它的操作参数
包:
表达组合信息的术语,
模型:一个元素的一个分组,包是一个嵌套定义,包里面还可以包含子包或其他类型元素
包和包之间就两个关系引入和访问(考点)。降低关系了复杂度。
UML模型表达格式?
软考相关涉及:软考考点之UML各种图识别
图形化工具,分类?两类图
如下图所示:
结构图
描述静态信息
- 对象结构建模,主要是类图和对象图
- 应用结构建模,包图、构件图、部署图、组合结构图
行为图:
动态信息
- 对象交互建模,顺序图、协作图/交互图(通信图、交互综述图、定时图)、状态图(状态机)
- 对象行为建模,用况图、状态图(活动图)
类图:
由哪些类组成,及类之间的关系。类图显示系统各个部分以及怎样将它们组装起来,但却不能模拟组装后的系统的工作情况。
用况图:
指反映活动者,系统边界所封闭的用况,及活动者与用况之间,用况与用况之间关系的一种图。表达系统功能模型的图形化工具。
用况
对一个参与者使用系统一项功能时所进行的交互过程中的一个文字描述序列。
用况是系统,子系统或类与外部的参与者交互动作序列的说明,包括可选的动作序列和会出现异常的动作序列。
包括6个元素:
- 主题(功能、子系统)
- 用况(具有的功能、行为)
- 参与者(系统用户、另一个系统、时间)
- 关联
- 泛化
- 依赖
状态图:
描述对象在生命周期所历经的状态序列。包括状态、引起转换事件、转换(对事件响应的结果);状态图代表是某一个瞬间,包括初始状态、终止状态、通常状态,
状态:对象所处的特定阶段、所具有的对外呈现及所能提供的服务。
事件:信号事件、调用事件、时间事件、变化事件
状态转移:分支。
顺序图:
对象之间传送消息的时间顺序,对象间交互的顺序。
交互:在某个场景或用况事件流中发生的。
基本元素包括:
-
活动者,用况中的活动者
-
对象:用况中内部对象
-
生命线:对象下面的竖线,代表这个对象的生命期
-
消息:指场景内由事件流定义的内部事件称为在对象和活动者或其他对象之间的消息。
- 同步消息:返回消息,假定要有一个返回消息,同步消息用实心箭头表示
返回消息用虚线,箭头也不是实心来表示 - 反身消息:消息发送方和接收方是同一个对象。
- 异步消息,没有返回值,用非实心箭头表示
- 定时消息,对消息附加时间约束条件
- 同步消息:返回消息,假定要有一个返回消息,同步消息用实心箭头表示
-
控制操作子:为了清晰表达交互行为的复杂控制。
4种常用控制操作子- 选择执行操作子,记作opt由两部分组成:监护条件、控制体;相当于c中的分支
- 条件执行操作子alt,控制体通过水平线将其分成一些部分,每一部分表示一个条件分支,每个分支有一个监护条件,相当于case
- 并发执行操作子,par,表示进入该控制操作子时,所有部分并发执行。
- 迭代操作子loop,相当于循环。