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中定义并且在编程时加以实 现的系统元素——对象
汽车
钟表
职员
起重机 飞机
奖杯 操作员
天平 楼房
如何发现参与者 ——考虑人员、设备、外系统
面向对象分析与设计

类(class)和实例(instance)
把具有相同特征和行为的对象归在一起就形成了类。类成为 对象的模板,抽象地描述了属于该类的全部对象的属性和操 作。 属于某个类的对象叫做该类的实例。
王辉 属性 王辉 男 湖南 计算机控制 1979.1 9#楼320室 服务 杨芳 属性 杨芳 女 北京 系统结构 1979.12 5#楼418室 服务 学生 属性 姓名 性别 籍贯 专业 出生年月 住址 服务 看书 实验 上课 运动
对象(object) 一般意义来讲,对象是现实世界中存在的一 个事物。可以是物理的,如一张桌子,也可 以是概念上的,如一个开发项目。 对象具有自己的静态特征(用数据描述)和动 态特征(行为或具有的功能)。
对象的分类: 外部实体:与软件系统交换信息的外部设备、相关子系统、操作 员或用户等。 信息结构:问题信息域中的概念实体,如信号、报表、显示信息 等。 需要记忆的事件:在系统运行过程中可能产生并需要系统记忆的 事件,如单击鼠标左键、击打键盘“”键等。 角色:与软件系统交互的人员所扮演的角色,如经理、部长、技 术支持等。 组织机构:有关机构,如单位、小组等。 位置:作为系统环境或问题上下文的场所、位置,如客户地址、 收件人(机构)地址等。 操作规程:如操作菜单、某种数据输入过程等。
通过在不同程度上运用抽象的原则,可以得到较一般的类和 较特殊的类。持殊类继承一般类的属性与服务,从而简化系 统的构造过程及其文档。 复杂的对象可以用简单的对象作为其构成部分(称作聚合)。 对象之间通过消息进行通信,以实现对象之间的动态联系。 通过关联表达对象之间的静态关系。 同名服务提供不同功能实现对象的多态性。
面向对象分析与设计 OOA&OOD
1 面向对象方法概述
面向对象分析与设计

面向对象分析与设计面向对象分析与设计(Object-Oriented Analysis and Design,OOAD)是一种在软件工程中常用的方法论,它以面向对象的思维方式来进行软件系统的分析和设计。
本文将对面向对象分析与设计的概念、主要步骤和设计原则进行详细介绍。
一、概念面向对象分析与设计是一种将实际问题抽象为对象和类的方法。
它将问题空间中的实体、行为和关系转化为软件系统中的对象、方法和类,并且通过封装、继承和多态等机制来实现软件系统的模块化和可维护性。
二、主要步骤1. 需求分析:通过与用户沟通,获取系统需求,并将需求转化为用例模型或用户故事。
在需求分析阶段,可以使用用例图、活动图等工具来描述系统的功能和用户的交互过程。
2. 领域建模:通过分析问题领域中的实体、行为和关系,构建领域模型。
领域模型可使用类图、状态图等工具来表示,它可以帮助开发团队更好地理解和把握系统的核心概念。
3. 概念架构设计:根据需求和领域模型,设计概念架构,也称为系统架构。
概念架构是一个逻辑上的模型,它描述了系统的整体结构和各个模块之间的关系。
常见的概念架构模式有层次结构、客户-服务器和发布-订阅等。
4. 详细设计:在概念架构的基础上,对系统进行详细设计。
详细设计包括定义类的具体属性和方法、设计模块之间的接口和通信方式等。
可以使用类图、时序图等工具来进行详细设计。
5. 编码和测试:根据详细设计文档进行编码,并编写对应的单元测试和集成测试。
编码应遵循面向对象的编程原则,例如封装、继承和多态等。
测试阶段需要验证代码的正确性和功能完整性。
三、设计原则1. 单一职责原则(Single Responsibility Principle,SRP):一个类应该只有一个引起它变化的原因。
这样可以降低类的复杂度,提高代码的可维护性。
2. 开闭原则(Open-Closed Principle,OCP):软件实体应该对扩展开放,对修改封闭。
通过使用抽象和接口,可以实现系统的可扩展性,而不需要修改已有的代码。
面向对象分析与设计基础知识讲解

面向对象分析与设计基础知识讲解面向对象分析与设计(Object-oriented analysis and design,简称OOAD)是软件工程领域中重要的一部分。
它是指通过对现实世界的事物进行抽象和建模,以实现软件系统的开发和设计。
本文将介绍面向对象分析与设计的基础知识,包括面向对象的概念、面向对象分析和面向对象设计的过程。
一、面向对象的概念面向对象是一种软件开发方法,将现实世界抽象成为对象和对象之间的关系。
在面向对象的设计中,对象是系统中具体的实体,它包含了数据和操作数据的方法。
对象之间通过消息传递来完成协作和交互,从而实现系统的功能。
面向对象的四个基本概念:1. 类(Class): 类是对象的抽象,它定义了对象的属性和行为。
每个对象都是根据类的定义创建的。
2. 对象(Object): 对象是类的实例,它具有类定义的属性和行为。
每个对象都有唯一的身份,可以通过引用来访问。
3. 继承(Inheritance): 继承是指通过已有的类创建新的类,新类继承了原有类的属性和行为。
继承使得代码的复用更加方便,也提高了代码的可维护性。
4. 多态(Polymorphism): 多态是指同一个方法可以根据不同的对象产生不同的行为。
多态通过继承和接口实现。
二、面向对象分析(OOA)面向对象分析是软件开发中的第一步,它的目标是理解系统的需求,确定系统中的对象以及它们之间的关系。
面向对象分析主要包括以下步骤:1. 确定系统的边界和范围:明确系统要解决的问题和目标。
2. 确定系统的对象:从需求文档中提取对象,并识别它们之间的关系。
3. 定义对象的属性和行为:确定每个对象的属性和操作。
4. 划分对象的责任:将对象的操作分配到合适的对象上,确保每个对象的职责明确。
三、面向对象设计(OOD)面向对象设计是根据面向对象分析的结果,通过定义类和交互关系来实现系统的设计。
面向对象设计要考虑到系统的可扩展性、可维护性和可重用性。
OOAD_Lec01_面向对象概述1

An object should only reveal the interfaces needed to interact with it. Details not pertinent to the use of the object should be hidden from other objects.
间()?
我们为什么要封装
保护隐私 保护数据安全 隔离复杂度 (内部实现细节不对外公开)。如“空调”,封
装了制冷的过程,对人提供了一个制冷的按钮
面向对象的封装有四种方式(可见性)
Public Private Protected Package
4/33
1)封装 Encapsulation
6
2)继承 Inheritance
1 public class Jet extends Airplane { 2 3 private static final int MULTIPLIER = 2; 4 5 public Jet(int id, int speed) { 6 super(id, speed); 7} 8 9 public void setSpeed(int speed) { 10 super.setSpeed(speed * MULTIPLIER); 11 } 12 13 public void accelerate() { 14 super.setSpeed(getSpeed() * 2); 15 } 16 17 } 18
The only access to manipulate the object data is through its interface 对象的数据只能通过接口去访问
Encapsulation allows objects to be viewed as ‘black boxes’ 封装使得对象可以被看成一个“黑盒子”
面向对象分析与设计

面向对象分析与设计一、引言面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件工程中的一种方法论,用于解决复杂系统的设计与开发问题。
本文将介绍面向对象分析与设计的概念、原则和过程,并结合实际案例说明其重要性和应用。
二、概念解析1. 面向对象分析(Object-Oriented Analysis,简称OOA):通过识别和描述系统所涉及的对象及其相互关系,以及对象的属性和行为,从而确定系统需求和问题领域的分析方法。
2. 面向对象设计(Object-Oriented Design,简称OOD):基于面向对象分析的结果,通过定义类、抽象数据类型、方法、接口等概念,设计出系统的结构和组织,以及类之间的关系和交互方式。
三、面向对象分析与设计的原则1. 单一职责原则(Single Responsibility Principle,简称SRP):一个类只负责一项职责,保证类的内聚性和高内聚性。
2. 开放封闭原则(Open-Closed Principle,简称OCP):系统中的类、模块等应该对拓展开放,对修改封闭,通过继承、接口等方式实现。
3. 里氏替换原则(Liskov Substitution Principle,简称LSP):所有引用基类的地方必须能透明地使用其子类的对象,即子类必须能够替换基类。
4. 依赖倒置原则(Dependency Inversion Principle,简称DIP):高层模块不应该依赖于底层模块,二者都应该依赖于抽象;抽象不应该依赖于具体,具体应该依赖于抽象。
5. 接口隔离原则(Interface Segregation Principle,简称ISP):客户端不应该依赖于它不需要的接口,接口应该进行细化拆分以适应不同的场景和客户端需求。
6. 迪米特法则(Law of Demeter,简称LoD):一个对象应该对其他对象有尽可能少的了解,减少耦合性,降低系统的复杂度。
- 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) 物料名称 数量 提单 工时资源报告