第14章.面向对象建模
面向对象的建模方法

面向对象的建模方法面向对象的建模方法是一种用于软件系统设计的方法论,它把现实世界映射到软件系统中的对象和类的概念上,通过抽象、封装、继承和多态等概念,实现对现实世界中事物的建模。
面向对象的建模方法包括需求分析、领域建模、设计模式等环节,本文将详细介绍这些环节的步骤和重要性。
首先,需求分析是面向对象建模的第一步。
它主要目的是了解用户的需求和软件系统的功能。
在需求分析阶段,开发团队需要与用户进行深入沟通,明确系统的功能、性能和界面等方面的需求。
在这个阶段,可以使用用例图、活动图、领域模型等工具来表示和记录需求。
需求分析的重要性在于确保软件系统能够满足用户的期望,并且为后续的建模和设计提供必要的依据。
接下来是领域建模。
领域建模是通过分析和理解现实世界的各个领域,抽象出问题领域中的概念和关系,并将其映射到软件系统中。
在领域建模中,可以使用类图、对象图等工具来描述问题领域中的概念、属性和关系。
领域建模的目的是建立一个清晰的问题领域模型,通常使用领域专家的知识和建模技术,可以更好地理解问题的要求和限制。
在面向对象的建模方法中,设计模式也是一个非常重要的环节。
设计模式是一种解决软件设计中常见问题的可复用方案,它提供了一种在特定情况下的最佳实践,可以提高软件的质量和可维护性。
常用的设计模式包括单例模式、工厂模式、观察者模式等。
设计模式的目的是通过将系统分解为独立的对象,每个对象负责一个特定的职责,从而提高系统的灵活性和可扩展性。
此外,还有一些其他的面向对象的建模方法值得考虑。
例如,UML(统一建模语言)是一种广泛使用的建模语言,可以用来描述软件系统的结构和行为。
UML 提供了一套图形符号和规范,可以用于可视化和交流系统设计。
此外,敏捷建模也是一种常用的面向对象的建模方法,它强调团队合作、迭代开发和软件质量的快速反馈。
总结起来,面向对象的建模方法是一种通过抽象、封装、继承和多态等概念,将现实世界映射到软件系统中的方法论。
《面向对象建模》课件

# 面向对象建模PPT课件
面向对象建模是一种将系统看做对象集合的设计方法,建立在面向对象编程 思想基础上,目的是实现系统对象的抽象、封装、继承和多态。
什么是面向对象建模
定义
一种将系统看做对象集合的 设计方法
特点
建立在面向对象编程思想基 础上
目的
实现系统对象的抽象、封装、 继承和多态
分析一个简单的图书管理系统
使用UM L 进行建模
总结与展望
面向对象建模的优势
面向对象建模在实际项目中的应用
面向对象建模的未来发展方向
面向对象建模的理论基础
面向对象编程思想
UML(统一建模语言)源自U M L 类图类、属性、方法 组合、聚合、关联关系
单继承、多继承
接口
泛化、实现关系
U M L 活动图
用于描述业务流程
动作、控制流、物体流、分支结构、循环结构
U M L 时序图
用于描述对象间的时间关系
对象生命线、消息
面向对象建模案例分析
面向对象建模

一个特殊类中的所有对象可继承一般类中的属 性、服务、关系.
(2) 组装结构(整体/部分结构)
组装结构表示对象类之间的组成关系, 即整体与部分的关系。
整体对于部分是“has-a”关系。
(部分对于整体是“a-part-of”关系)
组装结构体现了面向对象方法的 聚合(也叫聚集 Aggregation)原则。
整体/部分结构表示法举例
微机
1+
监视器
主机箱
o 鼠标
键盘
电源
CPU 内存
硬盘
(3)实例连接(Instance Connection)
实例连接表现了对象之间的静态 联系,通过对象的属性来表现对象之 间的依赖关系。
面向对象术语中把对象之间的实 例连接称为链接(Link),把类之间的 实例连接称为关联(Association)
目前流行的OOA方法概述-
Rumbaugh方法(简称OMT)
Rumbaugh的OOA过程概述:
•开发对问题的范围陈述 •建造对象模型 •开发动态模型 •构造系统的功能模型
不同面向对象分析方法的相似步骤:
(1)使用基本需求作为指南选择类
和对象;
(2)为对象标识属性和操作; (3)定义组织类的结构和层次; (4)建造对象-关系模型; (5)建造对象-行为模型。
面向对象建模
对象(object)
现实世界中某个具体的物理实体或概念在 计算机逻辑中的映射和体现。 对象具有的含义: 在现实世界中:
是客观世界中的一个实体
面向对象建模
对象(object)
对象具有的含义: 在面向对象程序中:
表达成计算机可理解、可操纵、具有一 定属性和行为的对象
在计算机世界中: 是一个可标识的存储区域
面向对象建模与设计

面向对象建模与设计随着软件开发的飞速发展,面向对象技术在软件开发领域中已经成为一种非常成熟且广泛使用的开发技术。
而面向对象建模和设计则是面向对象技术中最为重要的部分之一,通过这两个过程,可以将一个复杂的系统分解为若干个相对独立的对象,从而提高软件的可重用性和可维护性。
本文将详细介绍面向对象建模和设计的相关知识。
一、面向对象建模1.1 面向对象思想面向对象思想是指将系统中的各个实体抽象成对象,每个对象包含相应的属性和方法,并通过它们之间的交互来实现系统功能的模式。
这种思想的最大特点是将问题领域中的问题抽象成对象,并利用这些对象之间的关系构建一个精细的系统模型。
1.2 面向对象建模的主要步骤面向对象建模的主要步骤包括问题领域分析、架构设计、详细设计、实现和测试等。
其中,最为重要的是问题领域分析和详细设计这两个环节。
1.3 问题领域分析问题领域分析是在确定需求的基础上,从系统领域内识别出必要的实体、事件和业务规则,以及它们之间的关系,以此构建一个面向对象的模型。
在这个过程中,需要先分析需求文档,并将其中的业务需求分解成若干个功能模块。
然后,在每个功能模块中识别出相应的实体,将它们抽象为对象,并定义它们之间的关系。
最后,从整个系统的角度来看,将这些对象整合在一起构成一个完整的系统模型。
1.4 详细设计在问题领域分析的基础上,详细设计需要更加具体化,将对象之间的操作和关系形成一个具有细节的模型。
在详细设计阶段,需要根据问题领域分析的结果,针对每个对象分别进行详细设计。
这些细节包括对象的属性、方法、关系、状态转换等。
二、面向对象设计2.1 面向对象设计概述面向对象设计是指在面向对象建模的基础上,进一步实现面向对象编程的过程。
它主要包括实现对象的具体细节、类之间的继承关系和多态性等方面的内容。
在面向对象设计中,重点是继承和多态两个概念。
2.2 继承继承是指在一个类中定义一些通用的数据和方法,然后在子类中继承这些属性,从而实现代码的可重用性。
面向对象的设计建模

类
对象的抽象,具有相同属性和行为的对象 集合。
继承
子类继承父类的属性和行为,实现代码复 用。
封装
将对象的属性和行为封装在一起,隐藏对 象的内部细节。
面向对象设计建模的优点
代码复用
通过继承和多态,实现代码复 用,减少重复代码。
易于维护
对象之间相对独立,便于修改 和扩展。
易于理解
面向对象的设计建模更符合人 类的思维习惯,易于理解和维 护。
交互逻辑进行组织和管理。
05 面向对象设计建模的未来 发展
AI与机器学习在面向对象设计建模中的应用
01
自动化代码生成
利用机器学习技术,自动生成符 合面向对象设计原则的代码,提 高开发效率。
02
智能代码审查
03
智能重构工具
通过机器学习算法对代码进行审 查,检测出潜在的设计问题,提 供优化建议。
利用机器学习技术,自动识别代 码中的冗余、重复部分,并提供 重构建议。
微服务架构
将系统拆分为一系列小型、独立的服务,每 个服务负责单一功能。
事件驱动架构
系统中的事件触发其他组件或服务的响应。
容器化与云原生架构
利用容器技术实现应用的快速部署和管理。
04 面向对象设计建模的案例 分析
案例一:电子商务网站的设计建模
总结词
复杂度高,涉及多个实体和交互
详细描述
电子商务网站涉及商品、用户、订单等多个 实体,以及用户浏览、购物车、支付等交互 流程,需要使用面向对象设计建模来构建复 杂的关系和功能。
强大的扩展性
通过类和接口的继承和实现, 可以方便地扩展系统功能。
面向对象设计建模的适用场景
系统复杂度高
当系统复杂度较高时,使用面向 对象设计建模可以更好地组织和 管理代码。
3 面向对象建模

2 x n X iYi uv i 1
100 80 60 40 20 0 第一阶段
第三阶段
仿真实验分析
计算机仿真程序
仿真模型
6
3.3 面向对象建模的过程
面向对象软件开发过程与仿真系统开发
仿真系统开发过程 实际系统 面向对象软件开发过程 实际系统 真实世界
概念模型 抽象层 数学模型 面向对象分析
3
3.1 面向对象建模的依据
面向对象建模的基本思想
建模 实体概念 类
抽象 模拟 现象
具体
对象
问题空间
解空间
4
3.2 面向对象模型的构成
状态模型 类模型 类的属性 活 动 模 型 交 互 模 型
类的操作
类间关系
实验框架
5
3.3 面向对象建模的过程
仿真系统开发的一般过程
现实世界 概念模型 数学模型
类间关系之一般-特殊关系 一般-特殊关系的定义要符合分类的常识
Point x y draw() x y r
Circle x y r h
Cylinder
draw()
draw()
31
3.5.2 静态建模详解
类间关系之一般-特殊关系 认清类的本质,根据建模目标选择合适 的分类体系 根据“里氏替换法则”验证继承关系的 正确性
3. 面向对象建模
主要内容
3.1 面向对象建模的依据
3.2 面向对象模型构成 3.3 面向对象建模过程 3.4 建立实验框架 3.5 静态建模
3.6 动态建模
2
3.1 面向对象建模的依据
建模的一般原则 基于建模目的对系统进行合理抽象 模型要和实际系统在本质上具有相似性 模型要尽量简单,具有可控性 模型要经过充分验证,具有足够可信度 模型的多样性
面向对象的设计建模

面向对象的设计建模1.类和对象的抽象:面向对象的设计建模将问题域中的实体抽象为类和对象的概念,类是对具有相同属性和行为的对象的抽象,而对象是类的具体实例。
通过对类和对象的抽象,可以更好地理解和描述问题,并提供开发和维护代码的基础。
2.继承与多态:继承是一种将类与类之间的关系进行抽象的方式,通过继承,子类可以继承父类的属性和方法,并可以在此基础上进行扩展和修改。
多态是一种运行时的特性,它允许不同类型的对象对同一个方法做出不同的响应。
继承和多态可以提高代码的重用性和可扩展性。
3.封装与数据隐藏:封装是一种将数据和操作封装到一个独立的单元中的方式,通过封装可以隐藏对象的内部实现细节,并提供公共接口供其他对象调用。
数据隐藏可以保护数据的完整性和安全性,同时也提高了软件的可维护性。
4.关联与依赖:关联是对象之间的一种关系,它描述了对象之间的连接和交互。
依赖是一种对象之间的使用关系,当一个对象依赖于另一个对象时,它需要调用该对象的方法或访问其属性来完成一些操作。
通过关联和依赖可以建立对象之间的协作和交互,实现系统的功能。
5.接口与实现:接口是一种规范,它定义了对象提供的服务和方法,而实现是接口的具体实现。
接口与实现的分离可以降低对象之间的耦合度,并提供更高的灵活性和可扩展性。
面向对象的设计建模常常使用接口来描述对象之间的交互和通信。
在进行面向对象的设计建模过程中1.单一职责原则:一个类应该只负责一个职责,这样可以提高类的内聚性和复用性。
2.开放封闭原则:一个系统应该对扩展开放,对修改关闭,这样可以提高系统的可扩展性和可维护性。
3.依赖倒置原则:高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
通过抽象可以降低对象之间的耦合度,提高系统的可测试性和可重用性。
4.迪米特法则:一个对象应该尽可能少地与其他对象发生交互,只与其直接的朋友发生交互。
通过减少对象之间的依赖关系,可以提高系统的灵活性和可移植性。
面向对象的设计建模是软件开发过程中非常关键的一步,它可以帮助开发者更好地理解和描述问题,优化系统的架构和设计,提高代码的可维护性和可重用性。
面向对象的概念面向对象建模面向对象分析与模型化面向对象

打电话者拿起电话受话器 电话忙音开始 打电话者拨数字(8) 电话忙音结束 打电话者拨数字(2) ....... 打电话者拨数字(3) 接电话者的电话开始振铃 铃声在打电话者的电话上传出 接电话者回答 接电话者的电话停止振铃 铃声在打电话者的电话中消失 通电话 .........
状态图与事件追踪图的关系
揿下鼠标按钮(按钮、位置) 拿起电话受话器
数字拨号(数字)
事件追踪图
事件追踪图侧重于说明发生于系统 执行过程中的一个特定“场景”。
场景也叫做脚本,是完成系统某个 功能的一个事件序列。
场景通常起始于一个系统外部的输 入事件,结束于一个系统外部的输 出事件,它可以包括发生在这个期 间的系统所有的内部事件。
类是一组具有相同数据结构和相同 操作的对象的集合。
类的定义包括一组数据属性和在数 据上的一组合法操作。
类定义可以视为一个具有类似特性 与共同行为的对象的模板,可用来 产生对象。
在一个类中,每个对象都是类的实 例 (Instance),它们都可使用类中 提供的函数。
继承 (Inheritance)
面向对象方法学的要点(2)
对象彼此之间仅能通过传递消息互相联系 面向对象的方法学可以用下列方程来概括:
OO=objects+classes+inheritance+ communication with messages
如果一个软件系统是使用这样 4 个概念设计和实现的,则我们认 为这个软件系统是面向对象的。
这个新的子集合可以认为是既存类 的一个特殊化。
面向对象建模
所谓模型,就是为了理解事物而对事物作出 的一种抽象,是对事物的一种无歧义的书面 描述。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4. 行为模型 ——交互图
顺序图
对象标识 生命线
name : Class
激活态
同步消息 异步消息 返回消息
other
Class A Attribute int I; Void Print(){ Printf(“%d”,I);
}
a)
Class B : A
Void Print(){ I+=1; }
Class A
Attribute int I;
Void Print(){ Printf(“%d”,I);
}
Class A
Attribute int I; Void Print(){ Printf(“%d”,I);
数据驱动(Data-Driven) 将具有相同属性的对象归为一类 产生自哲学上传统的经典分类理论(Classical Categorization Theory)
所有具有一个给定特性或共同特性集的实体组成一个类
职责驱动(Responsibility-Driven) 会依据事物的相似性而不是完全的相同性来进行事物的分类 产生自哲学上的概念聚类(Conceptual Clustering)
OMT (James Rumbaugh) Booch方法(Grady Booch) UML OOSE (Ivar Jacobson)
Coad-Yourdon Shlaer-Mellor Fusion
1. 面向对象分析 ——UML
Jacobson
Rumbaugh
Jacobson Booch
抽象描述称为接口(Interface),定义了类所含对象对外 的(其他类和对象)的统一协议
生成模板称为实现(Implementation),说明了类所含对 象的生成机制和行为模式
2.1 对象模型组成元素 ——类
类的分类 类产生的关键是进行正确的分类 人们认识和处理具体事物时总会有意识或无意识的对它们进行归类
概念类不显式的标记类的行为,即概念类不包 含明确的方法
2.3 领域模型
concept or domain object association
attributes
SalesLineItem Records-sale-of
Item
quantity
0..1
1
1..* Contained-in
1
* Stocked-in
第14章.面向对象建模
主要内容
1. 面向对象分析 2. 对象模型 3. 用例模型 4. 行为模型 5. 对象约束语言OCL 6. 面向对象建模
1. 面向对象分析 ——现实世界的复杂模型
复杂总是简单部分的组合 简单部分又是更简单部分的组合
简单组成复杂的过程存在层次性
每个最小简单部分独立负责完成一系列相关任务
3. 用例模型
Communication
Actor
Specialized Use Case
General Use Case
Base Use Case
<<extend>>
Extending Use Case
Special Actor
Special Actor
Base Use Case
<<include>> Included Use
由a指向b的链接使得b对a可见,或者说a拥有b的可见性 (Visibility)
a获取b的可见性的途径有以下几种:
b是全局对象,它对系统内的所有其他对象都是可见的; b是a的一部分; b是被a创建的; b的引用被作为消息的一部分传递给了a
2.1 对象模型组成元素 ——类
类
类是共享相同属性和行为的对象的集合,它为属于 该类的所有对象提供统一的抽象描述和生成模板
2.1 对象模型组成元素 ——链接
链接
对象之间的物理或业务联系
链接通常是单向的,当然也有双向的链接存在
如果一个对象a存在指向b的链接,那就意味着 a拥有对b的假设,关于b的行为和行为效果的 假设。也就是说,b需要满足a的某些行为期望
2.1 对象模型组成元素 ——链接
导航和可见性
由a指向b的链接除了包含假设和期望因素之外,还意味着a 能够在链接的指引下,正确的找到并将消息发送给b,即a可 以导航到b
绝不是简单的将属性和行为放置在一起
2.1 对象模型组成元素 ——关联
关联
指出了类之间的某种语义联系 关联是类对其对象实例之间的无数潜在关系的描述
参与类
基数
关联名
员工
*
参与
Байду номын сангаас* 组织
二元关联
贡献级别
关联类
2.1 对象模型组成元素 ——关联
角色 address
Address
Person
方向
可见性
一个对象的整体协议可能会分为多个内聚的逻辑行为组, 划分后的每一个逻辑行为组就描述了对象的一个独立职责, 体现了对象的一个独立角色
对象职责
职责是指对象持有、维护特定知识并基于知识行使固定 职能的能力
如果一个对象拥有多个行为组,就意味着该对象拥有多个 不同的职责,需要扮演多个不同的角色。
理想的单一职责对象应该仅仅扮演一个角色
使用概念描述而不是指定的特征来描述类别和事物,在进行事物分类 时它会考虑概念之间的相似性,并将事物归入和其概念最为相似的类 别
2.1 对象模型组成元素 ——类
抽象
抽象是指在事物的众多特征当中只注意那些和目标密切相关 的特征,同时忽略那些不相关的特征,进而找出事物的本质 和共性
抽象是人们在理解事物时常用的手段
Hand
聚合 组合
1
1
Contains Contains
2..* Point
0..6 Finger
2.2 对象模型重要概念 ——继承
如果一个类A继承了对象B,那么A就自然具有 B的全部属性和服务,同时A也会拥有一些自 己特有的属性和服务,这些特有部分是B所不 具备的
结构继承和语义继承
2.2 对象模型重要概念 ——继承
狭义多态
多个对象在同一情景中表现出相同形态的现象
2.3 领域模型
类大多是概念类(Concept Class),是一个 能够代表现实世界事物的概念
概念类之间存在指明语义联系的关联,这些关 联通常不标记方向,也不标记关联端的可见性
概念类会显式的描述自己的一些重要属性,但 不是全部的详细属性,而且概念类的属性通常 没有类型的约束
相比较而言,每个组合内部各部分的关系比其内部与 外部的关系都更紧密
各个部分通过一致的接口进行组合,即一个部分对其 它部分的所知仅仅是接口
1. 面向对象分析 ——映射现实模型的面向对象思想
任何系统都是能够完成一系列相关目标和任务的对象
对象完成一个任务时会请求一系列其他对象帮助其完 成一些子目标
对象就是对现实世界事物的抽象结果,它表达了系统 所需要的现实世界事物特征,抛弃了那些系统不需要 的特征。
类则是对象集的抽象结果,它忽略了具体某个对象在 特定时间和空间的细节状态,从对象集的全局出发, 在一个更高的逻辑层次上,描述了对象集的共性
2.1 对象模型组成元素 ——类
封装
封装是指尽可能隐藏构造单位内部的实现细节,只 通过有限的对外接口保持对外联系的一种软件构造 策略
3. 用例模型 4. 行为模型 5. 对象约束语言OCL 6. 面向对象建模
2.1 对象模型组成元素 ——对象
对象
对象是指在一个应用当中具有明确角色的独立可确 认的实体
每个对象都要包含
标识
唯一的标识自己,引用
状态
对象的特征描述,包括对象的属性和属性的取值
行为
对象在其状态发生改变或者接收到外界消息时所采取的行 动
和应用相关的组织单位,例如分公司、部门、团队、小 组等;
问题域中问题发生的地点,例如车间、办公室等;
事物组合的结构关系,例如部分与整体的关系等。
2.1 对象模型组成元素 ——对象
但是也有事物不是对象
无法界定的事物 纯粹的值 纯粹的行为
2.1 对象模型组成元素 ——对象
一个对象维护其自身的状态需要对外公开一些方法,行使 其职能也要对外公开一些方法,这些方法组合起来定义了 该对象允许外界访问的方法,或者说限定了外界可以期望 的表现,它们是对象需要对外界履行的协议(Protocol)
Case
3. 用例模型
信用卡系统 使用信用卡功能
处理客户单据 客户
账户管理
零售机构 金融机构
3. 用例模型 ——用例图的作用
主要内容
1. 面向对象分析 2. 对象模型 3. 用例模型 4. 行为模型 5. 对象约束语言OCL 6. 面向对象建模
4. 行为模型
行为模型
交互图(Interaction Diagram)
广义多态
一个对象在相似情景下表现出多个不同形态,或者 多个对象在同一情景中表现出相同形态的现象
一个对象在相似情景下表现出不同的形态
重载(Overloading) ▪ 依据参数或返回值的不同为协议定义不同的版本,每一个 版本都可以表现出自己独特的行为
泛型(Generality) ▪ 使用同一个通用的实现处理不同的数据类型,然后根据数 据类型的不同表现出不同的行为
顺序图(Sequence Diagram)
通信图(Communication Diagram)
交互概述图(Interaction Overview Diagram)
时间图(Timing Diagram)
活动图(Activity Diagram)
状态图(State Diagram)
?
用例模型