第2章 面向对象技术与UML-郭

合集下载

面向对象的概念与UML介绍

面向对象的概念与UML介绍

实现图
组件图
配置图
2.2.2UML建模过程
分析阶段
设计阶段
制作人:赵飞
2.2.3模型视图
1.用例视图
用例视图用于建立系统的概念模型,定义 系统的外部行为。包括业务用例模型包和 用例模型包,它依赖于业务用例模型包, 包括的UML图有用例图.顺序图.协作图和活动图
2.逻辑视图
逻辑视图描述了支持用例图功能的 逻辑结构,包括UML图有类图和状态图。逻辑视图用于建立系统的逻辑关系,包括分 析模型和设计模型,模型包图组织,在模型包图下可建立包中的对象类⁄对象图.交互图. 状态图.活动图。
3.组件视图
在UML中,组件视图描述的是系统的实现。它对模型中的组件进行建模,描述应用程序搭 建的软件单元以及组件之间的依赖,从而可以估计更改的影响组件视图由组件图组成
4.配置视图
配置视图显示了系统的软件硬件的物理配置,配置视图由配置图组成
制作人:赵飞
2.3用例图
• 2.3.1用例图的元素 • 2.3.2用例间的关系
制作人:赵飞
学学
系系
组合
5.依赖关系。
它是类与类之间的连接, 表示一个类依赖于另一 各类的定义
借借对借借
依赖
借借借
制作人:赵飞
2.4.2对象图
显示了一组对象和它们之间的关系。一个对象可看成一个类图的特殊用例使用的 标识与类图基本一致,不同的对象是对显示类的多个对象实例,而不是实际 的类。由于对象存在生命周期,因此对象图只能存在于系统的某一段时期。 表示方法: 对于对象图,不需要提供单独的形式。类图中就包含对象,所以只有对象而 无类的类图就是一个对象图
对象从产生到结束可以有很多不同的状态。影响 对象的行为,如果这些状态的数目可以计算,则 能够用状态图(State Diagram)来对象的行为进 行建模。状态图显示了单个类的生命周期。状态 图可以描述以特定对象的全部能存在的状态,还可 以描述一起状态转移的事件。一般面向对象技术 使用状态图表示单个对象在其生命周期中的行为。 一个状态图包含一系列的状态以及它们之间的转 移

面向对象技术与UML

面向对象技术与UML
示例
假设有一个“动物”类,我们可以创建一个“狗”类来继承“动物”类,并添加特定的狗的行为。这样 ,如果需要添加其他动物类型,我们可以轻松地创建新的子类,而不需要修改“动物”类的代码。
里氏替换原则
定义
如果S是基类,T是派生类,则程序中使用S类型的对象的地 方都可以用T类型的对象来替换,而不会改变程序的行为。
案例二:复杂类的UML表示
定义一个复杂的类"Employee",包含属性"name"、"age"、 "department"和"position",以及方法"work"、"getSalary"和 "setSalary"。
使用UML类图表示该类,并使用聚合关系表示Employee类与 Department类之间的关系。
示例
一个“用户管理”类可能负责管 理用户信息、用户权限等。如果 它还负责处理订单或管理库存, 那么它就违反了单一职责原则。
开闭原则
定义
软件实体应该通过扩展来增加功能,而不是修改已有的代码。
解释
开闭原则鼓励使用继承和多态来实现软件的可扩展性。这意味着当需要添加新功能时,可以通过创建新的子类或实现 新的接口来扩展现有代码,而不是修改已有的代码。
确定方法
为每个类确定其方 法,包括私有、保 护和公共方法。
确定关联关系
使用实线和虚线表 示类之间的关联关 系。
类图的阅读与分析
阅读
01
首先从上到下、从左到右阅读类图,了解各个类的属性和方法。
分析
02
分析类之间的继承和关联关系,理解系统的层次结构和交互关
系。
工具

面向对象方法学与UML课件

面向对象方法学与UML课件

依赖关系
面向对象方法学与UML
关联关系
• 关联(association)是一种结构关系,它描述了两 个或多个类的实例之间的连接关系,是一种特殊 的依赖。
• 关联分为普通关联、限定关联、关联类,以及聚 合与复合。
面向对象方法学与UML
关联关系——普通关联
• 普通关联是最常见的关联关系,只要类与类之间 存在连接关系就可以用普通关联表示。普通关联 又分为二元关联和多元关联。
面向对象方法学与UML
4.2 面向对象的开发方法
面向对象软件开发方法的特征 ➢方法的唯一性 即方法是对软件开发过程所有阶段进行综合 考虑而得到的。 ➢从生存期的一个阶段到下一个阶段的高度连 续性 即生存期后一阶段的成果只是在前一阶段成 果的补充和修改。 把面向对象分析(OOA)、面向对象设计 (OOD)和面向对象程序设计(OOP)集成到生 存期的相应阶段。
面向对象方法学与UML
消息通信(Message Communication)
• 消息是一个对象与另一个对象的通信单元,是要求 某个对象执行类中定义的某个操作的规格说明。
• 发送给一个对象的消息定义了一个方法名和一个参 数表(可能是空的),并指定某一个对象。
• 一个对象接收到消息,则调用消息中指定的方法, 并将形式参数与参数表中相应的值结合起来。
• 但在某些情况下,需要对关联关系的语义做详细的定义、 存储和访问,为此可以建立关联类(association class),用来描述关联的属性。
• 关联中的每个链与关联类的一个实例相联系。关联类通过 一条虚线与关联连接。
面向对象方法学与UML
关联关系——聚合
• 聚合(Aggregation)也称为聚集,是一种特殊 的关联。它描述了整体和部分之间的结构关系。

2020 智慧树知到 烟台大学郭艳燕《面向对象与UML》山东联盟

2020 智慧树知到 烟台大学郭艳燕《面向对象与UML》山东联盟

D. UML 是一种可视化的建模语言。 正确 本题总得分 20 分
2
【单选题】 (20 分) 以下关于 UML 的叙述中,不正确的是( )
A. UML 也是一种编程语言
B. UML 是一种可视化的建模语言
C. UML 适用于面向对象开发方法
D. UML 适用于软件生命周期的各个阶段 正确 本题总得分 20 分
2
【单选题】 (20 分)
模型的实质是什么?( )
A. 对现实的简化
B. 可视化
C. 对现实的复杂化
D. 便于交流 正确 本题总得分 20 分
3
【单选题】 (20 分)
对软件模型而言,下面说法错误的是(
)
A. 是软件的中间形态
B. 是人员交流的媒介
C. 是软件的标准文档
D. 是软件升级和维护的依据 正确 本题总得分 20 分
D. 面向对象的设计原则 错误 本题总得分 0 分
5
【多选题】 (3 分)
平时分析问题,总要获取哪些方面的信息?(

A.
事物之间如何协作完成任务?
B.
事物之间的关系是什么?
C.
事物的特征和行为是什么?
D.
问题中涉及哪些事物?
正确 本题总得分 3 分
第一章-软件建模概述
1
【多选题】 (20 分)
以下对软件建模描述正确的是(
B. 可分解性、可组合性、可分类性
C. 抽象性、继承性、封装性、多态性
D. 继承性、封装性、抽象性
正确 本题总得分 10 分
7
【单选题】 (10 分) 封装是一种( )技术,目的是使对象的生产者和使用者分离,使对象的定义和实现分 开。

UML第2章 面向对象方法论

UML第2章 面向对象方法论

整体-部分结构 整体整体-部分结构又称作组装结构, 整体-部分结构又称作组装结构,它描述对象 之间的组成关系,即:一个(或一些)对象是 之间的组成关系, 一个(或一些) 另一个对象的组成部分。 另一个对象的组成部分。
实例连接 实例连接反映对象与对象之间的静态联系。 实例连接反映对象与对象之间的静态联系。 消息连接 消息连接描述对象之间的动态联系 。
2.1.4 属性 属性是一个类中对象所具有的数据值 ,不同的 对象实例可以有相同或不同的属性。 对象实例可以有相同或不同的属性。每个属性 名在一个表中是惟一的, 名在一个表中是惟一的,而在两个不同的类中 可以有相同的属性名 。 不要把内部标识和真实应用属性混淆起来。内 不要把内部标识和真实应用属性混淆起来。 部标识符纯粹是为了实现方便, 部标识符纯粹是为了实现方便,在问题域中是 没有含义的。 没有含义的。
图2-1
无公共祖先的多重继承
图2-2
多重继承的工作环境 如子类有好几个同样重要的超类, (1)如子类有好几个同样重要的超类,那么最 好用“授权方法”并保持该模型的对称性。 好用“授权方法”并保持该模型的对称性。 (2)如某一超类明显地处于支配地位,而其他 如某一超类明显地处于支配地位, 的类处于相对次要地位时, 的类处于相对次要地位时,用单一继承和授权 方法来实现多重继承是最佳选择。 方法来实现多重继承是最佳选择。
属性和服务, 是构成对象的两个主要因素, 属性和服务 , 是构成对象的两个主要因素 , 其定义是: 其定义是: (1) 属性是用来描述对象静态特征的一个数据项 (2) 服务是用来描述对象动态特征 ( 行为 ) 的一 服务是用来描述对象动态特征( 行为) 个操作序列。 个操作序列。
对象只描述客观事物本质的、与系统目标有关 对象只描述客观事物本质的、 的特征,而不考虑那些非本质的、 的特征,而不考虑那些非本质的、与系统目标 无关的特征。 无关的特征。 对象是属性和服务的结合体,二者是不可分的; 对象是属性和服务的结合体,二者是不可分的; 而且对象的属性值只能由这个对象的服务来读 取或修改 .

面向对象技术与UML

面向对象技术与UML

继承性举例
继承传递:大学生可以继承“人”和“学生”的特
征 父类 多重继承: 在职研究生既可以继承“学生”的特 征,又可以继承“教师”的特征 人
工人 学生 教师 农民
中学生 大学生 研究生 派生类
助教
讲师
具有继承关系的对象的特性
对象类间具有共享特征(包括数据和程序代
码的共享) 对象类间具有细微的差别或新增部分(包括 非共享的程序代码和数据) 对象类间具有层次结构。 继承所具有的作用有两个方面:
第二节 面向对象分析
本节要求了解面向对象分析的基本过程和基本原则 OOA: Object-oriented Analysis . 指利用面向对象的概念和方法构建软 件模型。 面向对象分析的基本过程 理解 表达
验证
对理解和表达进 行校验,以达到 理想效果。
需求
建立模型
在面向对象分析中,主要建立对象模型,动态模型和功能模型。 对象模型是最基本最重要的模型。
3) 可重用性好 有两种方法可以重复使用一个对象类:一种方法是创 建该类的实例,从而直接使用它;另一种方法是从它 派生出一个满足当前需要的新类。 4)较易开发大型软件产品 5)可维护性好
2.1.2 喷泉模型
“喷泉”这个词体现了面向对象软 件开发过程迭代和无缝的特性。 图中代表不同阶段的圆圈相互重 叠,这明确表示两个活动之间存 在交迭;而面向对象方法在概念 和表示方法上的一致性,保证了 在各项开发活动之间的无缝过渡, 事实上,用面向对象方法开发软 件时,在分析、设计和编码等项 开发活动之间并不存在明显的边 界。图中在一个阶段内的向下箭 头代表该阶段内的迭代(或求 精)。图中较小的圆圈代表维护, 圆圈较小象征着采用了面向对象 范型之后维护时间缩短了。

面向对象与UML2

面向对象与UML2

单击OK。
8.3 控制焦点的嵌套

嵌套的控制焦点依附在另外 一个控制焦点之上,它可以 确切地区分一个消息开始和 终止的具体位置。 要显示嵌套的控制焦点,必 须同时选中Options对话框 中Diagram标签中的 Hierarchical Messages和 Focus of Control两个选 项。
分析:党务信息平台的类图
学院有许多党组织,通过党组织编码唯一的 确定一个党组织,每个党组织有一名或多名党务 管理员,每个党务管理员能够管理本级及其下属 党组织;每个党组织有多名党员,每名党员只能 属于一个党组织。党组织记录每一年度增加的党 员信息以及每一年度减少的党员信息。
注意: 关联规范中的“Role A Detail” 和“Role B Detail”标签
包容(Containment) 设置关联属性是按值还是按引用包容
选项 通过值 含义 按数值。属性放在类中
通过涉及 非指定
按引用。属性放在类外,类指向这个属性 未指定。还没有指定控制类型
按“成分”聚合(A Part of)
按“成员”聚合(A Number of) 在Rose规范中统称为聚合关系,通过包容(Containment) 选项的设置加以区别。在有些标准中称为“聚合”与“复 合”。
7.3 链的规范 2)Messages标签 显示了当前链接上的消息信 息 右图说明: 一个是正向的链消息(由客 户发给供应者),一个是逆 向的链消息(由供应者返回 给客户);消息的编号分别 为2和4;消息名分别为通知 和更新,接收对象分别为操 作系统类的实例和图形界面 类的实例。
8
顺序图所特有的元素——控制焦点
在系统分析阶段,类图主要用于显示角色和提供 系统行为的实体的职责;

《UML2面向对象分析与设计 第2版 》读书笔记思维导图

《UML2面向对象分析与设计 第2版 》读书笔记思维导图
4 9.4 数据库
设计
5
9.5 练习题
第10章 从模型到代码
10.1 正向工程 10.2 逆向工程
10.3 模型驱动架 构
10.4 练习题
参考文献
图书资源支持
关于本书
谢谢观看
04
7.4 职责 分配模式
06
7.6 练习 题
05
7.5 其他 问题
第8章 架构设计
8.1 过渡到设计
8.2 架构设计基 础
8.3 确定设计元 素
8.4 引入设计机 制
8.6 描述系统部 署
8.5 定义运行时 架构
8.7 练习题
第9章 构件设计
9.1 用例设 1

9.2 子系统 2
设计
3
9.3 类设计
3.7 练习题
第4章 用例建模
4.1 理解需求
4.2 从业务模型 获取需求
4.3 建立用例模 型
4.4 编写用例文 档
4.6 其他问题
4.5 重构用例模 型
4.7 练习题
第5章 用例分析
01
5.1 理解 分析
025.2 从用 例开始分析035.3 架构 分析
04
5.4 构造 用例实现
06
5.6 练习 题
05
5.5 定义 分析类
第6章 面向对象的设计原则
6.1 设计需要原 则
6.2 Liskov替换 原则
6.3 开放—封闭 原则
6.4 单一职责原 则
6.6 依赖倒置原 则
6.5 接口隔离原 则
6.7 练习题
第7章 面向对象的设计模式
01
7.1 模式 与设计模式
02
7.2 GoF模 式
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在结构化方法中,现实世界被映射为功能(函数)的集合。
结构化方法的特点: 结构化程序设计:程序 = 算法 + 数据结构 从算法的角度进行建模,大量精力都集中在控制流程和 算法的分解上(功能分解)。 缺点:需求变动、维护困难
2.1 面向对象技术概述

面向对象方 法的引入: 软件复杂性 的增长, 使软件开发 越来越困难。 面向对象的 方法按照人 类的自然思 维的方式, 面对客观世 界建立软件 模型。
对象的标识(名字)

每一个对象都有一个唯一的标识, 即使其状态有可 能与其它对象一样。
no1 no2 no3
对象的状态(数据属性)

一个对象的状态是它反映于现实世界的一系列 属性:

基本描述 载客人数 它与其它对象的关系 任一时刻的历史状态
飞机类型 飞机驾驶员 所属的航空公司
可能的状态: 停泊 班机 747 飞行 着陆
继承的描述
子类可以继承父类的全部属性与操作,并 可以添加或重新定义所继承的方法。 如果是重新定义,称为覆盖。
注意:覆盖和重载是不同的。

覆盖的例子

重载的例子
public class A{ String name; public String getValues(){ return “Name is”+name; } } public class B extends A{ String address; public String getValues(){ return “address is”+address; } }
6. 多态性


定义:同一操作作用于不同的对象,可以有 不同的解释,产生不同的执行结果。 例子: 动物叫

多态性是指在父类中定义的属性和操作被子类继 承后,可以表现出不同的行为。 在父类与子类的类层次结构中,利用多态性可以 使不同层次的类之间共享一个方法名,而个自有 不同的操作。当一个对象接收到一个请求消息时, 所采取的操作将根据该对象所属的类决定。
1. 2. 3.
继承性表示类之间的层次关系。 类间具有共享特征 类间具有差别或新增部分 类间具有层次关系
继承关系是“is a ”或“kind of”的关系。
继承的好处
1.
通过继承可实现代码复用,可降低软件开发 和维护的费用,继承是OO技术和非OO技术 的一个很明显的区别。
2.
继承的另一个好处是可以保证类之间的一致 性,父类可以为所有的子类定制规则,子类 必须去遵守这些规则。如C++中的虚函数, Java中的接口。

封装是面向对象方法的一个重要原则。 封装有两个含义: 结合性(数据抽象):把对象的属性和方法结合起 来,形成一个不可分割的单位。

信息隐蔽性:尽可能隐藏对象的内部细节,对象的 私有数据不能被外界存取,对外使用接口与外部发 生联系。
例如:电视机
为什么要封装
结构化程序设计:程序 = 算法 + 数据结构



一个类可以实现多个接口。使用接口比使用抽 象类要安全得多,因为它可以避免许多与多重 继承相关的问题。
这也是为什么像Java和C#等新型编程语言允 许类实现多个接口,但只能继承一个通用或抽 象类。
多态性的实现方式:
1. 通过接口实现多态性 接口描述类需要实现实现的操作以及每个操 作需要接收和返回的参数类型,但将操作的特 定实现留给实现接口的类去完成。 多个类可以实现相同的接口。 单个类可以实现一个或多个接口。 实现某接口的类都有此接口定义操作的不同实 现方式。

一个类通过一系列操作来定义行为

类和对象的关系

每一个对象都是某一个类的实例。 每一个类在某一时刻都有零个或更多的实体。


类是静态的;它们的存在、语义和关系在执行 前就已经定义好了。 对象是动态的; 它们在程序执行时可以被创 建和删除。

3.抽象


抽象是从众多的事物中抽取出共同的、本质性的 特征 。 抽取对问题域有帮助的对象属性和行为。 问题域不同,抽象结果也不同。
2. 类

类是一组具有相同数据结构和相同操作的对象 的集合,类是对象的抽象,它为属于该类的对 象提供了统一的抽象描述。
在下面这副图中您看到了什么类?
属性

属性是类的特征或特性

属性的值是某一特定对象的属性值 在类中属性名必须是唯一的 同类的对象具有相同的属性,但属性值会有所不同。
银行帐户类属性 Mary的银行帐户属性值
帐号 银行名称 拥有者 金额
12345678 First National Bank Mary Smith $1024.48
UML对象的绘制 注意:对象名下有下 划线
属性取决于视点
一辆汽车具有的属性:

从销售人员的角度 型号 价格 颜色 里程数

从维修人员的角度


马达类型
传动类型 维修记录
public class A{ String name; public String getValues(){ return “Name is”+name; } } public class B extends A{ String address; public String getValues(String name){ return “address is”+address; } }
算法
全局数据
算 法
一个大问题:如何保证数据的 一致性和安全性?
面向对象程序设计:程序 = 对象s + 消息
对象1={算法 + 数据结构} ... 对象n= {算法 + 数据结构}
封装
•信息隐藏的过程 •有选择的数据隐藏 •防止意外的数据破坏,保证数据的一致性和安全性 •更易于隔离和修复错误
封装的目的
2.1.1 面向对象的基本概念
① ② ③

⑤ ⑥ ⑦ ⑧
面向对象的核心元素: 对象 类 抽象 封装 继承 多态性 消息 结构与连接
1. 对象



客观世界里的任何实体都可以被称为对象。 对象可以是具体的、有形的物,也可以是无形的事物或概念。 对象是问题域或实现域中某些事物的一个抽象。不同的角度 和不同的问题域对一个对象的描述有所不同。 对象是一个封装数据属性和操作行为的实体。 系统中的对象在软件生命周期的各个阶段可能有不同的表示 形式。例如:分析设计阶段和编码阶段不同。
对象的行为(操作行为)

定义当其它对象发出请求时,该对象如何反应 由对象定义的一系列操作决定
动作: 起飞 着落
核对出发时间
(返回 9:27)
机票代理
班机 747
UML中的对象表示
注意:对象名下有下划线
1. 命名对象
对象名
J Clark : Professor
对象名:类名
ቤተ መጻሕፍቲ ባይዱ
2. 匿名对象
:类名
: Professor
什么叫问题域?

开发一个软件是为了解决某些问题,这些问题 所涉及的业务范围称为该软件的问题域。 不同问题域中同一事务描述的角度就不相同。 问题域的范围也对软件开发的复杂程度有一定 的影响。


2.1.1 面向对象的基本概念

Coad和Yourdon: 面向对象=对象+类+继承+通信
• 面向对象技术基于对象概念,以对象为中心, 以类和继承为构造机制,充分利用接口和多态 提供灵活性,来认识、理解、刻划客观世界和 设计、构建相应的软件系统。

将对象的使用者和对象的设计者分开,使用者不必知道行 为实现的细节,只需用设计者提供的消息来访问该对象。 把定义和实现分开,可以大大提高软件的可维护性、可修 改性。


在类的外部不能访问
私有
在类的外部可以访问
公有
可见性问题

UML 类图
ROSE画 出的类图
Visibility-可见性 层次


继承性又分为单重继承和多重继承两类。
单重继承:子类只有一个父类
多重继承:有多个父类的继承
FlyingThing Multiple Inheritance Animal
Airplane
Helicopter
Bird
Wolf
Horse
思考一下?

C++是否支持多继承?

JAVA是否支持多继承?

继承是否具有传递性?

多态性分为两种: 1.编译时的多态性。通过重载和对象调用实现。 (静态绑定) 2.运行时的多态性。通过指向基类的指针实现, 并且需要虚函数。 (动态绑定)

接口(Interface)的概念

接口是一组没有相应方法实现的操作,非常类似 于仅包含抽象方法的抽象类。 接口是对对象行为的描述,但是并不给出对象的 实现和状态。(通俗的说,接口只是说明函数应 该做什么(what),但没有定义函数如何做 (how)。) 接口只包含操作而不包含属性,并且接口也没有 对外界可见的关联。
第2章 面向对象技术与UML
面向对象技术概述 2.2 面向对象的分析 2.3 面向对象的设计 2.4 基于UML的面向对象分析、设计过 程
2.1
软件开发的难点

结构化软件开发方法的主要思想: 对问题进行功能分解,如果分解后得到的功能过大,那么 再对这些功能进行分解,直到最后分解得到的功能能比较方 便地处理和理解为止。(功能分解法 )
操作

对象的行为是由为此对象定义的一系列操作决 定的。 操作访问或修改对象的属性值。 一个类可能同时存在多个实例,也可能在某一 时刻没有实例。 一个类的所有实例都可以使用在这个类中定义 的操作。
相关文档
最新文档