软件工程复习——第4章


本文总结于《软件工程——原理、方法与应用》第三版
## 第四章 面向对象与UML

1. 面向对象概述

(1) 类和对象的关系

对象:代表客观世界中实际或抽象的事物
	·客观世界是由各种对象组成的
	·数据以及在其上的操作的封装体
类:一组相似的对象的共性抽象
	·类是一组客观对象的抽象
	·实现抽象数据类型的工具
类与对象的关系
	·抽象与具体的关系
	·组成类的每个对象都是该类的实例
	·实例是类的具体事物
	·类是各个实例的综合抽象

(2) 面向对象的基本特征

抽象、封装、继承、多态

(3) 面向对象开发的优点

可复用性、可扩展性、可维护性

2. UML(统一建模语言)简介

通用的可视化的建模语言
目前在软件工程里主要用于系统分析与系统设计
软件生存周期:RUP(统一过程)
软件建模方式:可视化的语言
软件文档规范:文档由UML建模工具自动产生
软件人员分工:岗位界面逐渐趋向模糊

静态图
类图:类以及类之间的相互关系
对象图:对象以及对象之间相互关系
实现图
构件图:构件及其相互依赖关系
部署图:构件在各节点上的部署
交互图
时序图:强调时间顺序的交互图
协作图:强调对象协作的交互图
行为图
状态图:类所经历的各种状态
活动图:对工作流建模
用例图
用例图:需求捕获,测试依据

(1) UML的模型元素

表示模型中的某个概念
	·类、对象、构件、用例、结点、接口、包、注释
表示模型元素之间的关系
	·关联、泛化、依赖、实现、聚集、组合

在这里插入图片描述

(2) UML的元模型结构

元元模型层、元模型层、模型层、用户模型层
在这里插入图片描述

(3) UML的组成

图
	·静态图
		·用例图
		·静态图:类图、对象图
		·实现图:构件图、部署图
	·动态图
		·行为图:状态图、活动图
		·交互图:时序图、协作图
视图
	·用例视图(用例图 [活动图] )
		·从用户角度看到的系统应有的外部功能
	·逻辑视图(静态:类图、对象图;动态:状态图、时序图、协作图、活动图)
		·描述系统的静态结构和对象间的动态协作关系
	·进程视图(状态图、时序图、协作图、活动图、构件图、部署图)
		·展示系统的动态行为及其并发性
	·构件视图(构件图)
		·展示系统实现的结构和行为特征
	·部署视图(部署图)
		·显示系统的实现环境和构件被部署到物理结构中的映射
模型元素
通用机制

(4) UML的特点

·统一标准
·面向对象
·表达功能强大、可视化
·独立于过程
·易掌握、易用

(5) UML五类九种图的符号体系

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3. UML主要内容

静态建模机制、动态建模机制

(1) 静态建模

·静态建模包括
 	用例图、类图、对象图
·用例模型
	·使用用例图表示
	·从最终用户的角度描述系统功能
·类和对象模型
	·类图和对象图表示
1) 用例图与用例模型
  • ·用例图的组成符号

在这里插入图片描述

  • ·用例之间的关系

·扩展关系
·根据指定的条件,一个用例中有可能加入另一个用例的动作;
如果一个用例明显地混合了两种或者两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样可能会使描述更加清晰。扩展用例为基用例添加新的行为,可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。
< < extend > >是扩展关系的构造型,箭头指向基本用例

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

·包含关系
·一个用例的行为包含另一个用例的行为
当可以从两个或两个以上的用例中提取公共行为时,应该使用包含的关系来表示它们。其中这个提取出来的公共用例成为抽象用例,而把原始用例成为基本用例或基础用例。
< < include > >是包含关系的构造型,箭头指向抽象用例。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

·包含关系和扩展关系的联系和区别:
·联系:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通过不同的方法来重用这个公共的用例,以减少模型维护的工作量。
·区别:扩展关系中基本用例的基本流执行时,扩展用例不一定执行,即扩展用例只有在基本用例满足某种条件的时候才会执行。
包含关系中基本用例的基本流执行时,包含用例一定会执行。

例:
现有一医院病房监护系统,病症监视器安置在每个病房,将病人的病症信号实时传送到中央监视系统进行分析处理。在中心值班室里,值班护士使用中央监视系统对病员的情况进行监控,根据医生的要求随时打印病人的病情报告,定期更新病历,当病症出现异常时,系统会立即自动报警, 并实时打印病人的病情报告,立及更新病历。
要求根据现场情景,对医院病房监护系统进行需求分析, 建立系统的用例模型。

简单的需求分析说明
系统名称:医院病房监护系统
根据分析系统主要实现以下功能:
  1、病症监视器可以将采集到的病症信号(组合),格式化后实时的传送到中央监护系统。
  2、中央监护系统将病人的病症信号开解后与标准的病症信号库里的病症信号的正常值进行比较,当病症出现异常时系统自动报警。
  3、当病症信号异常时,系统自动更新病历并打印病情报告。
  4、值班护士可以查看病情报告并进行打印。
  5、医生可以查看病情报告,要求打印病情报告,也可以查看或要求打印病历。
  6、系统定期自动更新病历。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

2) 类图Class Diagram

在这里插入图片描述

·类图表示类间关系

  • ·关联关系(Association)

·类之间存在的语义上的关系
·普通关联、递归关联、多重关联等
在这里插入图片描述

·二元关联
二元关联表示为在两个类之间用一条直线连接,直线上可写上关联名
在这里插入图片描述

关联的两端可加上重数,表示该类有多少个对象可与对方的一个对象关联
在这里插入图片描述

允许一个类与自身关联
在这里插入图片描述

·多元关联
三个或三个以上的类之间可以互相关联
在这里插入图片描述在这里插入图片描述

·受限关联
用于一对多或多对多的关联,限定符用来区分关联”多”端的对象集合,它指明了在关联“多”端的某个特殊对象

在这里插入图片描述

  • ·聚集关系(Aggregation)

·特殊的关联:表示类之间具有整体与部分的关系
特征是“部分”对象可以是多个任意“整体”对象的一部分,“部分”可以参与到多个“整体”中,部分可以脱离整体。
在这里插入图片描述

  • ·组合关系(Composition)

·特殊的聚集:整体强烈拥有部分
在组合中,“整体”强烈拥有“部分”,“部分”与“整体”共存。如果“整体”不存在了,“部分”也会随之消失。“整体”的重数必须是0或1,“部分”的重数可以是任意的。

·

  • 泛化关系(Generalization)

·又称继承
·普通泛化,限制泛化
此处的一般元素可视作父类,特殊元素视作子类。
·一般元素所具有的关联、属性和操作,特殊元素也都隐含性地拥有;
·特殊元素应包含额外信息;
·允许使用特殊元素实例的地方,也应能使用一般元素。
在这里插入图片描述

  • ·实现关系

实现关系将一个模型元素(如类)连接到另一个模型元素(如接口),后者是行为的规约,而不是结构,前者必须至少支持(通过集成或直接声明)后者的所有操作,可以认为前者是后者的实现。
在这里插入图片描述

  • ·依赖关系(Dependency)

对一个类/对象的修改会影响另一个类/对象
例如,某个类中使用另一个类的对象作为操作中的参数,一个类存取作为全局对象的另一个类的对象,或一个类的对象是另一个类的类操作中的局部变量等,都表示这两个类之间有依赖关系。

class Boss{
	void do(Staff s){
		s.do();
	}
}

在这里插入图片描述

·约束与派生
·约束与派生机制能应用于任何模型元素
·用花括号括起放在模型元素旁边
·典型的属性约束是该属性的取值范围
·派生属性可由其它属性通过某种方式计算得到,通常在派生属性前面加一个“/”表示
·关联关系可以被约束,也可以被派生
在这里插入图片描述

·包图
描述系统的分层结构

在这里插入图片描述

3) 对象图Object Diagram

在这里插入图片描述

对象图是类图的实例。

(2) 动态建模

·消息
在这里插入图片描述

·状态图
状态图描述对象的所有可能状态及事件发生时状态的转移条件
在这里插入图片描述

·状态图之间发送消息
在这里插入图片描述

·时序图(元素:对象、对象生命线、消息)
时序图用来描述对象之间的动态交互,着重体现对象间消息传递的时间顺序。它以垂直轴表示时间,水平轴表示不同的对象。对象用一个带有垂直虚线的矩形框表示,并标有对象名和类名。垂直虚线是对象的生命线,用于表示在某段时间内对象是存在的。对象间的通信在对象的生命线间通过消息符号来表示,消息的箭头指明消息的类型。
在这里插入图片描述在这里插入图片描述

·协作图(元素有对象、链接和消息流)
协作图描述了对象间的动态协作关系,但它强调消息发生和接收的对象的结构组织(及连接关系)(协作对象之间的交互和链接)
在这里插入图片描述

活动图
活动图描述了用例的活动行为以及活动时的约束关系(泳道表明执行的对象)
在这里插入图片描述在这里插入图片描述

(3) 物理架构建模

·逻辑架构和物理架构
·	逻辑架构
	·物理架构
·构件图:显示软件构件直接的依赖关系。一般来说,软件构件就是一个实际文件,可以是源代码文件、二进制代码文件和可执行文件。构件图可以用来表现编译、链接或执行时构件之间的依赖关系。

在这里插入图片描述

·部署图:描述系统硬件的物理拓扑结构以及在此结构上执行的软件。部署图可以显示计算节点的拓扑结构和通信路径、结点上运行的软件构件、软件构件包含对的逻辑单元(对象、类)等。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来lai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值