第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 个概念设计和实现的,则我们认 为这个软件系统是面向对象的。
这个新的子集合可以认为是既存类 的一个特殊化。
面向对象建模
所谓模型,就是为了理解事物而对事物作出 的一种抽象,是对事物的一种无歧义的书面 描述。
需求工程第14章面向对象建模
* Stocked-in
1
Sale
date
1
time
Store
address name
1 Paid-by
1
Captured-on
1 Hosues
1
Payment
1 Register
amount
3 建立领域模型
建立领域模型的四个步骤:
识别候选对象和类(3种方法)
概念类分类列表 名词分析 行为分析 CRC
确定概念类 建立类之间的关联 添加类的重要属性
识别候选对象和类(1)
概念类分类列表
这种方法事先给出一个概念类的分类列表,由分析人员在需 求信息中寻找相应类别的候选对象,然后对候选对象进行确 定和归纳,形成hIaer1988]
Ross[Ross1987]
从用例模型中寻找对象和类,建立领域模型;依据用例模型建立 行为模型。目的是理解用户需求。(需求分析阶段)
在领域模型和行为模型中加入软件实现细节,建立细化的对象模 型和行为模型,完成完全的对象模型。(系统设计阶段)
选择一种面向对象的语言,完成程序的编写。(系统实现阶段)
本章重点
建立领域模型:对象模型类图 建立行为模型:交互图、状态图
名称 属性列表 方法列表
Student
Name Age Phone Register(course) Calc-GPA()
类的UML图示
对象名:类名 状态(属性列表极其取值)
Instancel:student
Name=‘张三’ Age=19
Phone=null
对象的UML图示
2 对象模型——类
类的产生——分类 类产生的关键是进行正确的分类 人们认识和处理具体事物时总会有意识或无意识的对它们进行归类
UML面向对象建模与设计
作者简介Muchael Blaha博士和James Rumbaugh博士(以及 Bill Premerlani、Fred Eddy和BIll Lorensen)前身之一面向对象建模技术(OMT)的发明者。
当明OMT只是一种应用最广泛的设计方法,如今它的大部分概念已经直接被UMT采用。
Michael Blaha博士是加拿大温哥华Modelsoft咨询公司以及美国伊利诺伊州芝加哥SentientPoint公司的合伙人。
他是IEEE计算机学会的活跃人物。
他的研究兴趣包括面向对象技术、建模、系统架构、数据库设计、企业集成和逆向工程。
James Rumbaugh博士是IBM Rational的杰出工程师。
他是UML三位首创者之一。
他撰写的有关面向对象的书籍和文章在计算机界影响深远。
编辑推荐“由James Rumbaugh和Michael Blaha及其同事编写的《面向对象建模和设计》一书的初版已经被奉为经典。
此书对我的影响远甚于任何其他建模相关的书籍。
在过去10年中,我曾成功地把他们的思想应用到大型高校课程项目当中,我很高兴看到这本标志性图书最新版本:它肯定会影响新一代软件设计师和建模人员的思维习惯。
”——Bernd Bruegge,慕尼黑技术大学“Blaha&Rumbaugh王者归来了。
他们为当今时代更新了其经典之作,通过简明直接的讲解,精深的洞察力,以及关键的示例和练习,再次显示了采用面向对象方法其实并不复杂:任何一名实践者都应该拥有、阅读和研究本书。
”——Michael J.Chonoles“我们信息系统专业的硕士和博士课程采纳了《UML面向对象建模与设计(OOMD)》一书中的方法学。
这本书由本领域内两名卓越的专家所编写,涵盖了OOMD的所有层面,充满真知灼见和最新的示例。
它使我们的教学获益良多。
”——Peter H.Chang,劳伦斯技术大学“如果你正在寻找一本介绍UML的图书,其中包括简单实用的面向对象分析和设计过程.以及面向对象概念的重要细节知识,那么我强烈推荐你学习这本出色的著作。
UML面向对象建模基础答案(徐峰、陈暄-中国水利水电出版社)
UML不是方法论。它仅仅是一种描述模型的标准语言,虽然渗透了许多方法论的基础概念,但是却没有在标准中给出完整的方法指南。
7. 请简要说明UML和面向软件开发之间的关系。
UML和面向对象软件开发之间有很强的关联关系,甚至可以说是面向对象软件开发催生了UML。但是由于在UML的标准化和发展过程,有机地吸纳了业务建模、工作流建模、数据库建模等领域的标准规范,形成了一个适用性很强的标准。
4. 请说明蓝图和草图的区别,并简单描述其适用的场景。
蓝图一般是指采用CASE工具绘制的、正式的、规范的UML模型;而草图则通常是指手工绘制的、规范度较低的在纸张的UML模型。
对于局部的、重要性不高的、共享范围较小的UML模型,直接将草图扫描到电脑存档即可;对于全局的、重要性高的、高度共享的,在草图的基础上用CASE工具绘制成为正式的蓝图,并将其纳入统一的模型管理中
8. 标记值的作用是什么?它的表示法和约束的表示法有什么异同?在UML模型中如何区分它们?
标记值是用来为事物添加新特性的。约束的表示法和标记值法类似,都是使用花括号括起来的串来表示,不过它是不能够放在元素中的,而是放在相关的元素附近。
9. 构造型的作用是什么?如果我们采用一个自定义的图标来表示它,那么可能遇到的主要问题是什么?
UML面向对象建模基础(徐峰、陈暄)
第1章 UML概述
1. 请指出UML的三个主要的特性。
1)UML是一种语言
2)UML是用来建模的
3)UML是统一的标准
2. 请指出三种以上现实生活中的常用模型,并说明它们分别在各自的领域中发挥了什么样的作用。
1)电路图:电子产品设计、生产、维修
面向对象建模与设计
面向对象建模与设计面向对象建模与设计是软件工程学科中的重要内容,它是指通过分析问题域中的实体、属性、行为等信息,将其抽象为对象并建立对象之间的关系。
面向对象建模与设计是软件开发过程中的关键环节,它能够帮助开发人员更好地理解问题领域,并将其转化为可执行的程序。
面向对象建模与设计的主要目标是实现软件的可扩展性、可重用性、可维护性以及可靠性。
通过面向对象的方法,开发人员可以将问题领域中的实体抽象为类,将实体之间的关系抽象为类之间的关联、继承、聚合等关系。
这样,开发人员可以在系统设计阶段就能够规划好软件的架构,减少后期的修改和维护工作。
面向对象建模与设计的基本过程包括需求分析、概念设计、详细设计和实现等阶段。
首先,开发人员需要对问题域进行需求分析,了解需求,确定系统的功能和性能要求。
然后,通过概念设计阶段,将问题域中的实体和关系抽象为类和关联。
在详细设计阶段,开发人员需要将类和关联进行细化,确定属性、方法等具体实现细节。
最后,在实现阶段,开发人员通过编程语言来实现设计好的类和关联。
面向对象建模与设计的一种常用工具是UML(Unified Modeling Language,统一建模语言)。
UML是一种图形化的语言,能够帮助开发人员更好地描述和表达软件设计的概念和结构。
在UML中,开发人员可以使用类图、时序图、用例图等不同类型的图形来表示系统的不同方面。
通过UML,开发人员能够更清楚地理解整个系统的架构和设计思路。
面向对象建模与设计还包括一些重要的原则和模式。
例如,开发人员可以使用单一职责原则来确保每个类只负责一个单一的功能,并且通过继承和多态来实现代码的重用和扩展。
此外,还可以使用设计模式来解决一些常见的设计问题,例如单例模式、策略模式、观察者模式等等。
总之,面向对象建模与设计是软件工程中非常重要的环节,它通过抽象和建模将问题域中的实体和关系转化为可执行的程序。
通过面向对象的设计,开发人员能够更好地理解问题领域,设计出具有良好架构和可扩展性的软件系统。
面向对象建模与设计
面向对象建模与设计面向对象建模与设计(Object-Oriented Modeling and Design)是一种软件开发方法,用于描述和设计系统的结构和行为。
它基于面向对象的思想,将系统看作是由对象及其相互作用构成的。
面向对象建模与设计包括以下主要步骤:1. 确定系统需求:了解用户的需求和系统的功能。
这可以通过与用户的交流和需求分析得到。
2. 定义系统的静态结构:根据系统需求,识别出系统中的对象和它们之间的关系。
这可以使用类图和关系图来表示。
3. 定义系统的行为:确定每个对象的职责和行为,并将它们组织起来以实现系统的功能。
这可以使用状态图和活动图来描述对象的行为。
4. 设计系统的架构:定义系统的整体结构和组织方式。
这可以使用组件图和包图来表示。
5. 实现系统:将设计好的模型转化为实际的代码。
这可以通过面向对象的编程语言来实现。
6. 测试和调试:验证系统是否符合需求,并进行错误排查和修复。
面向对象建模与设计的优点包括:1. 可维护性:由于系统结构和行为清晰地描述在模型中,因此对系统进行修改和维护更加容易。
2. 可重用性:面向对象的设计方法鼓励代码的重用,可以有效地减少开发工作量。
3. 可扩展性:面向对象的设计方法使得系统的扩展更加方便,可以通过添加新的对象和行为来实现新功能。
4. 可测试性:面向对象的设计方法使得系统的测试更易于进行,可以针对对象和行为进行单独的测试。
综上所述,面向对象建模与设计是一种强调系统结构和行为的软件开发方法。
它通过对系统进行抽象和建模,帮助开发人员更好地理解和设计系统,从而提高软件开发的效率和质量。
面向对象建模-课件PPT
4
1.1建立分析模型
• 三种模型
需求获取信息 业务模型
每本书 都有至少一个
作者
问题世界
分析模型
书 (1, n)
(0, n) 作者
写作
Book #ISBN
Title Varchar(100) …...
1 1..n
Wrote #ISBN #ID #NUM …...
计算世界
计算模型
Author
部分可以映射到计算实体 • 计算实体:对象 • 层次关系:聚合(组合)、继承、关联 • 组合接口:一个对象暴露的接口
13
1. 面向对象分析 ——面向对象建模
• 面向对象建模:一种用于辨识系统环境中的对象及这些对 象之间关系的技术
– OMT (James Rumbaugh) – Booch方法(Grady Booch) UML – OOSE (Ivar Jacobson)
– Coad-Yourdon – Shlaer-Mellor – Fusion
14
• UML的三位主要奠基人,被 称为“三友”(three amigos ),Unified
– G.Booch 布奇 Booch方法
– J.Rumbaugh 兰博 OMT方法
– I.Jacobson 雅格布森 OOSE
统的一个表示,这个表示以精确一致的方式描述系统,使得系统 的使用更加容易” – 建模方法
• 抽象 • 分解 • 投影
3
1.1建立分析模型
• 抽象(Abstraction)
– 一方面要求人们只关注重要的信息,忽略次要的内容
• 通过强调本质的特征,就减少了问题的复杂性
– 另一方面也要求人们将认知保留在适当的层次,屏蔽更深层次的 细节
面向对象设计面向对象建模基础
面向对象设计面向对象建模基础xx年xx月xx日CATALOGUE目录•面向对象设计基础•面向对象建模基础•面向对象设计案例分析•面向对象建模案例分析•面向对象设计与面向对象建模的联系与区别•总结与展望01面向对象设计基础面向对象设计是一种软件开发方法,它以“对象”为核心,通过将现实世界中的实体抽象成程序中的对象,实现对现实世界的映射和抽象。
面向对象设计的目标是将现实世界中的问题空间映射到程序中的解决方案空间,使程序具有更好的可读性、可维护性和可扩展性。
什么是面向对象设计面向对象设计的基本原则将现实世界中的实体抽象成程序中的对象,每个对象都有其属性和行为。
抽象封装继承多态将对象的属性和行为封装在一个独立的单元中,每个对象都有其自己的状态和行为。
通过继承已有的对象来创建新的对象,子类继承父类的属性和行为,并可以添加或覆盖父类的行为。
同一消息或方法调用可以影响多种类型的对象,从而实现不同的行为。
提高软件的可维护性面向对象设计将现实世界中的实体抽象成程序中的对象,每个对象都有其自己的属性和行为,使得代码更加模块化、易于理解和维护。
提高软件的可扩展性面向对象设计采用类和接口的方式,可以方便地添加新的功能和扩展点,实现软件的灵活性和可扩展性。
提高软件的可测试性面向对象设计将复杂的功能分解为独立的对象,每个对象都可以单独测试和验证,降低了测试的难度和成本。
提高软件的可重用性面向对象设计通过继承和多态的机制,可以实现代码的重用,减少重复开发的工作量。
面向对象设计的优势02面向对象建模基础面向对象建模是一种软件开发方法,使用对象、属性、方法和行为来描述现实世界中的事物和关系。
它通过建立模型来映射现实世界中的各种实体、属性和关系,为软件开发提供了一种自然的、易于理解的方法。
什么是面向对象建模通过创建类图来描述对象及其之间的关系,包括继承、接口、实现等。
类图建模法通过创建时序图来描述对象之间的交互和消息传递,用于表现系统的动态行为。
面向对象建模
⾯向对象建模
建模:为了理解事物⽽对事物作出的⼀种抽象,是对事物的⼀种⽆歧义的书⾯描述。
建模的⽬的:减少复杂性。
⾯向对象⽅法最基本的原则:按照⼈们习惯的思维⽅式,⽤⾯向对象观点建⽴问题域的模型,开发出尽可能⾃然地表现求解⽅法的软件。
⽤⾯向对象⽅法开发软件,通常需要建⽴3种形式的建模,它们分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。
⼀个典型的软件系统组合了上述3个⽅⾯内容:它使⽤数据结构(对象模型),执⾏操作(动态模型),并完成数据值的变化(功能模型)。
对象模型:对象模型表⽰静态的、结构化的系统的“数据”性质。
它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。
对象模型为建⽴动态模型和功能模型,提供了实质性的框架。
动态模型:动态模型表⽰瞬时的、⾏为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。
功能模型:功能模型表⽰变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了⽤户对⽬标系统的需求。
第十四章 统一软件开发过程-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
过程的静态结构
“谁”——工作者 “什么方法”——活动 “做什么”——制品 “什么时候”——工作流
工作者
工作者定义了软件开发工作中某个工作单位的行为和责任,这个工 作单位可能指某个个体,或者某个工作小组。
工作者更像是一种角色:在不同的时刻(也可能同时),同一个个 体可能担任着不同的工作者角色。
确定的工作者角色担任着确定的任务和责任,它要亲力亲为地完成 那些任务。
细化阶段具有承前启后的意义:
一方面,细化阶段的结果可能为整个项目的进一步开展提供了重要的依 据,也可能为这个项目宣判死刑;
另一方面,在细化过程交付之后,项目将从前面的轻量级、低风险的工 作进入高风险、高投入的工作中。
细化阶段的重点控制对象是系统分析的稳定性和开发的可行性。
பைடு நூலகம் 构建阶段
在构建阶段中,我们将要开发和整合所有剩余的组件和应用特性, 然后对所有的功能和特性进行完全的测试。
统一软件开发过程简介
统一软件开发过程(简称RUP)是一套由IBM下属的RATIONAL分部提 出的软件工程方法,它由IVAR JACOBSON的THE OBJECTORY PROCESS和 THE RATIONAL APPROACH发展而来。
统一软件开发过程将软件开发过程按照时序组织成几个阶段,每个 阶段有当前阶段的最重要任务,并且根据这些任务的完成情况为下一 个阶段提供输入,实现每个阶段的逻辑连接。
执行活动后的成果(输出)。 一些常见的制品:
模型:用例模型、设计模型、分析类模型等 模型中的元素:类、用例、参与者、子系统等 文档:需求分析文档、可行性分析文档、用户手册等 代码 可执行文件
工作流
当活动具备了工作者、活动、制品三个核心元素之后,需要使用工 作流来对活动的操作顺序进行描述。除此之外,工作流还可以展示工 作者之间的交互关系。
- 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)
?
用例模型