OOAD 第1章 面向对象分析与设计概述 CUMT
面向对象分析与设计--OOAD

⾯向对象分析与设计--OOAD(,)是当前界关⼼的重点,它是90年代⽅法的主流。
⾯向的概念和应⽤已超越了和开发,扩展到很宽的范围。
如、交互式界⾯、应⽤结构、应⽤平台、分布式系统、⽹络管理结构、CAD技术、等领域。
谈到⾯向对象,这⽅⾯的⽂章⾮常多。
但是,明确地给出对象的定义或说明对象的定义的⾮常少——⾄少我现在还没有发现。
其初,“⾯向对象”是专指在设计中采⽤封装、继承、抽象等设计⽅法。
可是,这个定义显然不能再适合现在情况。
⾯向对象的思想已经涉及到软件开发的各个⽅⾯。
如,⾯向对象的分析(, Oriented Analysis),⾯向对象的设计(,Object Oriented Design)、以及我们经常说的⾯向对象的编程实现(,)。
许多有关⾯向对象的⽂章都只是讲述在⾯向对象的开发中所需要注意的问题或所采⽤的⽐较好的设计⽅法。
看这些⽂章只有真正懂得什么是对象,什么是⾯向对象,才能最⼤程度地对⾃⼰有所裨益。
这⼀点,恐怕对初学者甚⾄是从事相关⼯作多年的⼈员也会对它们的概念模糊不清。
⾯向对象是当前计算机界关⼼的重点,它是90年代软件开发⽅法的主流。
⾯向对象的概念和应⽤已超越了程序设计和软件开发,扩展到很宽的范围。
如系统、交互式界⾯、应⽤结构、应⽤平台、分布式系统、⽹络管理结构、CAD技术、⼈⼯智能等领域。
⼀、传统开发⽅法存在问题1.软件重⽤性差重⽤性是指同⼀事物不经修改或稍加修改就可多次重复使⽤的性质。
软件重⽤性是追求的⽬标之⼀。
2.软件可维护性差软件⼯程强调软件的可维护性,强调⽂档资料的重要性,规定最终的软件产品应该由完整、⼀致的配置成分组成。
在软件开发过程中,始终强调软件的可读性、可修改性和可测试性是软件的重要的质量指标。
实践证明,⽤传统⽅法开发出来的软件,维护时其费⽤和成本仍然很⾼,其原因是可修改性差,维护困难,导致可维护性差。
3.开发出的软件不能满⾜⽤户需要⽤传统的开发⼤型涉及各种不同领域的知识,在开发模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满⾜⽤户的需要。
面向对象分析与设计

面向对象分析与设计在软件开发过程中,面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是一种重要的方法论。
通过OOAD,开发者可以将现实世界中的概念和问题转化为软件系统的结构和行为。
一、什么是面向对象分析与设计?面向对象分析与设计是一种以对象为核心的开发方法。
它强调将问题领域的实体、关系和行为抽象为对象、类和方法。
面向对象的分析阶段主要关注问题领域的需求和约束,而设计阶段则更关注如何将需求转化为可执行的软件系统。
二、面向对象分析与设计的优势1. 模块化:面向对象的方法将复杂的系统拆分为多个独立的对象,每个对象都有清晰的职责和接口。
这种模块化可以提高代码的可维护性和可复用性。
2. 继承与多态:继承是面向对象编程中的重要特性,它允许新的类继承已有类的属性和方法。
多态则允许对象在不同上下文中表现出不同的行为。
这些特性使得代码更加灵活和易于扩展。
3. 封装与信息隐藏:面向对象的方法将数据和操作封装在对象内部,外界只能通过对象的接口进行交互。
这种封装和信息隐藏可以保护数据的完整性和安全性。
4. 规范化的开发流程:面向对象的分析与设计有一套规范的开发流程,包括需求分析、概念设计、详细设计和实现等阶段。
这种流程可以提高开发效率,并减少错误和重复工作。
三、面向对象分析与设计的过程1. 需求收集与分析:在这个阶段,开发者与用户密切合作,收集和分析系统的业务需求。
通过访谈、文档分析等方法,确定系统的功能、性能和约束等方面的要求。
2. 概念设计:在概念设计阶段,开发者将业务需求转化为概念模型。
通过绘制用例图、类图、状态图等工具,描述系统的结构和行为。
3. 详细设计:在详细设计阶段,开发者将概念模型进一步细化,确定具体的类和接口。
同时,还需要考虑系统的性能、安全和可维护性等方面的问题。
4. 编码与测试:在编码阶段,开发者根据详细设计的要求,使用具体的编程语言实现系统。
面向对象分析与设计基础知识全掌握

面向对象分析与设计基础知识全掌握在软件开发领域,面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是一种广泛应用的方法论。
它以对象为核心,通过抽象、封装、继承和多态等特性,实现对软件系统的理解和构建。
本文将全面介绍面向对象分析与设计的基础知识,帮助读者全面掌握这一方法。
一、面向对象思想的基本概念面向对象思想是现代软件开发的基石,理解其中的基本概念对于深入学习面向对象分析与设计至关重要。
1.1 类和对象在面向对象的世界里,类是对象的抽象和模板,定义了对象的属性和行为。
类可以看作是一种数据类型的定义,它具有封装、继承和多态的特性。
而对象是类的实例,是具体的、可以被使用的实体。
1.2 封装封装(Encapsulation)指将数据和对数据的操作封装在一个类中,通过访问权限控制,隐藏对象的内部细节,仅向外部提供必要的接口。
封装提高了代码的安全性和复用性,减少了代码的耦合度。
1.3 继承继承(Inheritance)是面向对象编程中的重要概念,它允许我们创建新的类,从已存在的类中继承属性和方法。
继承可以提高代码的可扩展性和复用性,实现了代码的层次化组织。
1.4 多态多态(Polymorphism)是面向对象编程中的另一个重要概念,它允许不同类的对象对同一消息作出响应,实现了不同对象之间的互换使用。
多态提高了代码的灵活性和可维护性。
二、面向对象分析与设计的过程面向对象分析与设计是一种系统化的方法,它通过一系列步骤来分析和设计软件系统。
下面是面向对象分析与设计的基本过程。
2.1 需求获取需求获取是面向对象分析与设计的第一步,通过与用户沟通、分析文档等方式,准确地理解用户的需求和期望。
在这一阶段,我们需要收集用户需求并进行整理和分析。
2.2 需求分析需求分析是根据获取到的需求,进一步分析需求的优先级、相互关系和约束条件等。
通过需求分析,我们可以消除需求的模糊性和冲突,为后续的设计工作提供准确的依据。
OOAD_Lec01_面向对象概述1

生平:善于观察与思考
后来,他进入美国空军服役,遇到了一个改变命运的契 机:通过了计算机编程能力测试,成为了一名程序员,为空 军解决各个航空训练设备之间数据和过程(procedure)的传 输问题。
这时他发现有个程序员想出了一个聪明的办法,就是把 数据和处理数据的过程
这已经是提出面向对象思想 的黎明时分了!
生平:面向对象思想的推出
亮点: 预测未来的最好办法,就是把它创造出来。
一一艾伦. C.凯
1971 年夏天,艾伦.凯负责设计一种新的语言,名字叫做 Smalltalk Smalltalk的设计确实与生物学上的类比相吻合:
相互独立的个体(细胞)通过发送讯息彼此交流。 每一条讯息都包含了数据、发送者地址、接收者地址, 以及有关接收者如何对数据实施操作的指令。
生平:善于联想、类比
亮点:勤于思考、知识点融合、类比,产生新的思想
我的灵感就是把这些(指对象)看做生物学上的细胞。 ——艾伦·凯
1)每个“例”细胞都遵从“主”细胞的某 些基本行为 2)每个细胞都能独立运作,它们之间由能 透过细胞膜的化学信号进行通信 3)细胞会分化---根据环境不同,同一个细 胞可以变成鼻子的细胞,也可以变成眼睛 或者脚趾甲的细胞。
生平:善于联想、类比
服役结束后,凯先从科罗拉多大学取得了数学和分子生物学 的双学位。后来因为对计算机很感兴趣,他最终决定去犹他 州立大学读计算机科学系。读书期间,他一直在寻找某种基 础构件,支持一种简单、有效的编程风格。这时他的生物学 知识给了他至关重要的灵感。
亮点:勤于思考、知识点融合、类比,产生新的思想
4
生平:家庭的熏陶
1940年,艾伦·凯出生在美国的马萨诸塞州
我的父亲是科学家,母亲是艺术家,所以在我童年的家庭氛围 中充满了各式各样的想法,以及各种各样表达它们的方式。我 至今也从未把“艺术”和“科学”分开过。
OOAD_Lec01_面向对象概述1

比较
面向过程侧重于考虑方法的编写(哪个方法做什么事 ,不考虑所涉及的数据在哪里)
面向对象则致力于将数据和方法先做一个封装(分配 一个对象做事,先考所需要的数据是否和它在一起)
7
面向对象的思考方式
比较:通信
过程化解决方法通过信道传递数据,服务器端需要有 专门的工具对接受的数据进行处理
对于想成为问题解决者的人来说,入门的关键是 “把单一思维模式切换成多重思维模式”
一本《红楼梦》……经学家看见《易》,道学家看见 淫,才子看见缠绵,革命家看见排满,流言家看见宫 闱秘事。——鲁迅
横看成岭侧成峰,远近高低各不同。——苏轼
3/33
什么是面向对象的思考方式?
“观察到的一切都是对象”
subsections
Example2, two writing strategies of a historian and a creative novelist
Example3, 流水生产线与一场篮球赛
6
面向对象的思考方式
C语言是一种面向过程的思维方式
程序的运行“一切尽在掌握中”:从main()函数的 逐条语句开始执行、调用了子程序就必须一层层返回 ,最终又返回main函数
Advance OO concepts
OO principle Design Pattern
10
本讲结束
11
9
面向对象的核心特征
Following concepts are basics
Object / Class Method / Message Encapsulation Inheritance Interface / Implement Polymorphism Composition / aggregation Abstraction
OOAD_Lec01_面向对象概述1

部分对象只能存在于整体对象之中,整体对象控制部分对象的生 命周期
有些时候,聚合与组合的关系不是很明确
如,房间 与 门
5/33
2)接口/实现 Interface /Implementation
生活中的例子,比比皆是
3
1)聚合/组合 Aggregation/Composition
Aggregations indicate that
one object contains a set of other objects 如,大学 是由学生、老师组成的
Aggregation relationships are transitive 传递的
电视机接口 、水管接口等,举例:汽车里面有哪些接口?
对于软件系统
软件系统的内部是由大量的互相关联的类构成的 当对其中某一个类的局部进行修改的时候,不能影响其它的类
接口 interface
describe how users of the class interact with the class 描述一个 类的用户如何与这个类交互
A car is a vehicle
A student is a person
Aggregation describes a “has a” relationship. One
object is a part of another object.
A car has wheels
A person has legs
Object oriented Analysis &Design
面向对象分析与设计
Lecture_01 面向对象概述
OOAD-设计模式(一)概述

OOAD-设计模式(⼀)概述前⾔ 在我们很多时候设计代码都是需要⽤到各种不⼀样的设计模式的,接下来着⼏篇给⼤家领略⼀下设计模式。
知道设计模式的作⽤,以及在代码的具体体现。
很多时候我们看不懂代码就是因为我们不知道它使⽤的设计模式。
国庆的我很痛苦,学习是痛苦的,成长是快乐的!⼀、什么是⾯向对象1)⾯向对象(Object-Orientation,简称OO)是⼀种系统建模技术/编程思想。
2)⾯向对象编程(Object-Orientation Programming,简称OOP)是按照OO的⽅法学来开发程序的编程⽅式3)⾯向对象分析⽅法 Object-Oriented Analysis,简称OOA分析阶段主要解决以下问题:建⽴针对业务问题域的清晰视图列出系统必须要完成的核⼼任务针对问题域建⽴公共词汇表列出针对此问题域的最佳解决⽅案此阶段要解决的核⼼问题是"what to do?"4)⾯向对象设计Object-Oriented Design, 简称OOD设计阶段主要解决以下问题:如何解决具体的业务问题引⼊系统⼯作所需的各⽅⾯的⽀持元素定义系统的实现策略 此阶段要解决的核⼼问题是"How to do?"5)OO: ⾯向对象,是⼀套集编程思想,⽅法,原则,模式,解决⽅案等为⼀体的编程模式。
OO的思想贯穿于整个软件开发的过程,⽐如需求分析,设计,编程,测试,升级等。
综上可以知道什么是OOAD?OOAD(Object Oriented Analysis Design,的分析和设计,)是现代软件企业⼴为采⽤的⼀项有效技术。
OOAD⽅法要求在设计中要映射现实世界中指定中的对象和实体,例如:顾客、汽车和销售⼈员等。
这就需要设计要尽可能地接近现实世界,即以最⾃然的⽅式表述实体。
所以的优点即为能够构建与现实世界相对应的问题模型,并保持他们的结构、关系和⾏为为模式。
⼆、⾯向对象的特点2.1、抽象 抽象就是将⼀些事物的共性和相似点抽离出来,并将这些属性归为⼀个类,这个类只考虑这些事物的共性和相似之处,并且会忽略与当前业务和⽬标⽆关的那些⽅⾯,只将注意⼒集中在与当前⽬标有关的⽅⾯。
面向对象分析与设计-分析-ppt文档

?
《对象技术词典》:
1.对一个系统或者一个应用的一种单一的使用方式所进行的描述。
2.关于单个参与者在与系统的对话中所执行的处理的行为陈述序列。
UML:
?
对系统在与它的参与者交互时所能执行的一组动作序列(包括其变体)
的描述。
本书的定义:
用况是对参与者使用系统的一项功能时所进行的交互过程 的描述,其中包含由双方交替执行的一系列动作。
if 货架商品数低于下限 then call 通知上货
end if; 计算本种商品总价并打印编号、 名称、数量、单价、总价; 总价累加到应收款总数; end for; 打印应收款总数; 输入顾客付款数; 计算应找回款数, 打印付款数及找回款,
应收款数计入账册。
如何定义用况
针对单个用况的描述策略: 把自己当作参与者,与设想中的系统进行交互。考虑: 交互的目的是什么?需要向系统输入什么信息?希望由 系统进行什么处理并从它得到何种结果?把上述交互过 程描述出来 。
考虑问题的思路:把系统看作一个黑箱,看它对外部的 客观世界发挥什么作用,描述其外部可见的行为。
系统是由一条 边界包围起来
的未知空间
系统边界以外 是与系统进行 交互的参与者
只通过有限 的几个接口 与外部交互
把内外交互情况描 述清楚,就确切地 定义了系统的需求
5.3 系统边界与参与者
系统边界:一个系统所包含的所有系统成分与系统以外 各种事物的分界线。 系统:被开发的计算机软硬件系统,不是指现实系统。 系统成分:在OOA和OOD中定义并且在编程时加以实 现的系统元素——对象
汽车
钟表
职员
起重机 飞机
奖杯 操作员
天平 楼房
如何发现参与者 ——考虑人员、设备、外系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
功能模型 数据模型 仿真模型设计 过程描述获取 面向对象设计 本体论描述获取 设计原理获取 信息系统审定 人与系统接口设计 用户接口建模
IDEF9 经营约束的发现 场景驱动信息系统设计 IDEF10 信息制品建模 实施体系结构建模 IDEF11 信息工具建模 IDEF12 组织设计 组织建模 IDEF13 三模式映射设计 IDEF14 网络设计
高层次语言的引入有助于解决一些与复杂性有关的问题,但 这些语言并不是充分的。 那时,无开发方法而言
课件制作人:谢希仁
传统的软件工也称为面向过程的软件开发方 法,这类开发方法都典型地包含了分析、设计、 实现、确认(测试)、演化(维护)等活动。 典型的传统软件开发方法有: Jackson方法、结构化开发方法、HIPO法、 IDEF法等。
课件制作人:谢希仁
1975年,M.A.Jackson提出了一类至今仍广泛使 用的软件开发方法。 这一方法从目标系统的输入、输出数据结构入手, 导出程序框架结构,再补充其它细节,就可得到完 整的程序结构图。 这一方法对输入、输出数据结构明确的中小型系统 特别有效,如商业应用中的文件表格处理。该方法 也可与其它方法结合,用于模块的详细设计。
课件制作人:谢希仁
得到的系统模型: 由模块及其接口构成
功能 模块 功能 模块 功能 模块
功能 模块
功能 模块
功能 模块
功能 模块
功能 模块
功能 模块
功能 模块
课件制作人:谢希仁
优点:
当时的计算机应用还不是很普及,只是特定的用户 按自己的需要,对软件系统做出了功能性的要求, 有据可寻。 在相当大的程度上,解决了以前存在的问题。特别 是与模块化编程结合使用,效率更高。
零件 / N01
实体名 / 实体号
工艺 / N04
课件制作人:谢希仁
可标定联系
实体-A / 1 零件 / 1 零件代码
父实体
关键字属性--A
从父实体 到子实体 的关系名
关系名
确定关系
实体-B / 2 关键字属性—A(FK) 关键字属性
有 工艺 / 2 零件代码(FK) 工序号
子实体
课件制作人:谢希仁
课件制作人:谢希仁
一切都是对象
编写一个开发票程序,需要对发票的名细栏进行计算。
编号 名称 规格 单位 数量 单价 金额
合计
非面向对象思路:
定义数据结构 定义函数
面向对象思路: 对象
一组属性
操作:发票总计
……
课件制作人:谢希仁
面向对象与传统开发方法的比较
课件制作人:谢希仁
面向对象 把数据和处理数据的过程作为一个整体,即对象。 算法+数据结构 算法+数据结构
非标定联系
实体-A / 1
零件 / 1 零件代码
设备 / 3
父实体
关键字属性--A
设备代码
从父实体 到子实体 的关系名
关系名
非标定关系
实体-B / 2 关键字属性—A(FK) 关键字属性
有 工艺 / 2 零件代码(FK) 工序号
使 用
子实体
课件制作人:谢希仁
分类联系:
实体-A / 1 关键字属性--A 产品对象 / 1
产品设计综合报表 产品号(FK) 具有 元器件BOM PCB板参数表
电原理设计文件 产品号(FK) 电原理设计文件
进行原理设计
进行电路功能设计 电路功能设计文件 产品号(FK) 电路功能设计文件
进行PCB设计
课件制作人:谢希仁
1.2面向对象的基本思想
1.面向对象方法的定义
面向对象方法是以对象为核心的软件开发 方法,使软件开发尽可能按照人对客观世 界认识的规律和解决问题的方法与过程, 以便使描述问题的空间与实现方法在结构 上尽量一致。 是把面向对象分析(OOA)、面向对象设 计(OOD)和面向对象程序设计(OOP) 集成到生存期的相应阶段。
课件制作人 (1)分析并确定输入数据和输出数据的逻辑结构,并用 Jackson结构图来表示这些数据结构。 (2)找出输入数据结构和输出数据结构中有对应关系的数 据单元。 (3)按以下的规则由输入、输出的数据结构导出程序结构。 1)为每一对在输入数据结构和输出数据结构中有对应关 系的单元画一个处理框。 2)为输入和输出数据结构中剩余的数据单元画一个处理 框。 3)所有处理框在程序结构图上的位置,应与由它处理的 数据单元在数据结构Jackson图上的位置一致。 4)必要时,可以对映射导出的程序结构图进行进一步的 细化。 (4)列出基本操作与条件,并把它们分配到程序结构图的 适当位置。 (5)用伪码写出程序。 课件制作人:谢希仁
课件制作人:谢希仁
面向对象方法的特色
面向对象方法是一个非常实用而强有力 的软件开发方法: 方法的唯一性,即方法是对软件开发过程 所有阶段进行综合考虑而得到的。 从生存期的一个阶段到下一个阶段的高度 连续性,即在一个阶段所使用的部分与在 下一个阶段所使用的部分是衔接的,所使 用的技术经过生存期每一阶段后不改变。
课件制作人:谢希仁
1、功能分解法(起于二十世纪七十年代)
功 能 分 解 法 ( function decomposition) 功能分解= 功能 +子功能 +功能接口 工作过程: 一层层地进行功能分解 系统
分解
功能 功能 功能 以系统需要提供的功能为 分解 中心来组织系统。 首先定义各种功能 ,然后 子功能 子功能 …… 把功能分解为子功能,同时定 分解 义功能之间的接口。 对较大的子功能进一步分 …… 子功能 子功能 解,直到可给出明确的定义。 根据功能/子功能的需要设计 …… 数据结构和算法。 ……
课件制作人:谢希仁
IDEF0方法
控制C 1 输入I 输出O
系统
A0图
2
3 4
活动
1 机制M 2 3
A3图
4
课件制作人:谢希仁
蓝图
工单
调度表
油温
时间 美味 荷包蛋
毛坯
成品零件 鸡蛋
制造零件
切屑
油、调料
煎鸡蛋
刀 机床
工人
炉
锅
课件制作人:谢希仁
IDEF1X方法
信息组成: 数据管理的着眼点应该放在与数据有关的含义上; 信息是为某个特定目的或在一定范围内聚合起来的 数据集; 管理信息资源的策略应该放在管理数据被应用于事 件的含义上。
面向对象分析与设计 Object-Oriented Analysis and Design
第1章 面向对象分析与设计 概述
张 磊 博士 副教授 zhanglei@
《计算机网络》课件 制作人:谢希仁
1.1传统开发方法 1.2面向对象的基本思想 1.3面向对象的主要概念 1.4面向对象方法的主要优点 1.5面向对象的发展与UML 1.6RUP与UML 1.7软件架构和设计模式
算法+数据结构
关系
算法+数据结构
算法+数据结构
程序=<对象,关系>
课件制作人:谢希仁 对象=(算法)+(数据结构)
结构化
程序 =<关系,算法,数据结构 >
数据结构
数据结构
数据结构
关系
算法
算法
算法
课件制作人:谢希仁
结构化方法强调过程抽象和模块化,将现实 世界映射为数据流和加工,加工之间通过数 据流进行通信,数据作为被动的实体被主动 的操作所加工,是以过程为中心来构造系统 和设计程序的。 面向对象方法把世界看成是独立对象的集合, 对象将数据和操作封装在一起,提供有限的 外部接口,其内部的实现细节、数据结构及 对它们的操作是外部不可见的,对象之间通 过消息相互通信。
课件制作人:谢希仁
1.1传统软件工程
在二十世纪六十年代以前 软件系统都是较小且相对简单的 所用的编程语言都是十分简单(Fortran,Cobol等 ) 时兴个人英雄注意,即崇尚程序员的个人技能 代码是面条式的,特别是代码中含有GOTO语句
随着软件复杂性的增长,随心所欲的方法就不再是可接受的 了,因为这样的代码是很难维护的。
删除GOTO语句,使得软件能得到有效的维护。 与模块化编程相结合,使得软件能得到有效的维护 适用于功能稳定的应用领域,如某些科学计算。 直接地反映用户的需求,所以工作很容易开始。
课件制作人:谢希仁
缺点:
开头容易,结束难。
结构化分析和设计注重处理功能,对所处理的数 据放于次要的位置。 对于众多的领域而言,其功能是易变的,如企业 管理和商业管理。对需求变化的适应能力很差。
课件制作人:谢希仁
5、IDEF方法
IDEF:是1981年美国空军公布的ICAM( integrated computer aided manufacturing)工 程中用了名为“IDEF”的方法,是ICAM DEFinition method的缩写。
课件制作人:谢希仁
IDEF0 IDEF1X IDEF2 IDEF3 IDEF4 IDEF5 IDEF6 IDEF7 IDEF8
信息 数据
含义
事实
外部模式 (用户视图)
内部模式 (计算机视图)
课件制作人:谢希仁
IDEF1X方法
数据三模式:
外部模式 (用户视图)
概念模式 (逻辑视图)
内部模式 (计算机视图)
课件制作人:谢希仁
IDEF1X方法 实体:独立实体、从属实体 联系:可标定联系、非标定联系、分类联系、非确定 联系
实体名 / 实体号
确定
工艺文件 产品号(FK) 工艺路线 工时定额
采购计划 订单编号(FK) 物料名称 数量 金额
确定
确定
生产订单数据 订单号(FK) 物料名称 数量 提单 工时资源报告