3-面向对象软件开发技术(OOA-OOD-OOP)

合集下载

《软件工程》判断题汇总及答案

《软件工程》判断题汇总及答案

判断题:1.软件就是程序,编写软件的关键是编写程序。

2.可行性研究阶段要进行一次大大压缩简化了的系统分析和设计的过程。

3.需求管理主要是对需求变化的管理,及如何有效控制和适应需求的变化。

4.数据流图表示了软件系统对数据的算法处理过程,即系统的物理模型。

5.需求分析的主要方法有SD法、OOA法及HIPO法等。

6.没有Do-case、Do-until形结构,就不能实现某些结构化程序,从而降低了程序的运行效率。

7.用面向对象方法分析、设计、实现软件,仍属线性的瀑布开发模型。

8.文档是影响软件可维护性的决定因素。

9.软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开发实际上就是编写程序代码。

10. 软件模块之间的耦合性越弱越好。

11. 软件开发小组的组成人员的素质应该好,而人数则不宜过多。

12. 总体设计的基本目的就是回答:"概括地说,系统应该如何实现?"这个问题。

13. 文档只起备忘录的作用,可以在软件开发完成后再整理生成。

14. 结构化软件开发的方法的工作模型是螺旋模型。

15. 总体设计的基本目的就是回答:"概括地说,系统应该如何实现?"这个问题。

16. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。

1.N 2.Y 3. Y 4.N 5.N 6.Y 7.N 8.Y9.N 10.Y 11.Y 12. Y 13. N 14.N 15.Y 16.Y判断题:1.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板。

2.过程描述语言可以用于描述软件的系统结构。

3.继承性是父类和子类之间共享数据结构和消息的机制,这是类之间的一种关系。

4.快速原型模型可以有效地适应用户需求的动态变化。

5.在面向对象的需求分析方法中,建立动态模型是最主要的任务。

6.集成测试主要由用户来完成。

7.确认测试计划应该在可行性研究阶段制定8.白盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可。

OOA与OOD

OOA与OOD
。主要工作包括:.
交互界面子系统的设计:与界面有关的类及类间结构的设计,以及有关算法的设计。.
交互界面子系统和应用之间接口的设计。.
应用控制部分的设计:这部分对象主要完成应用的驱动工作。这部分对象不同于从现实
世界中抽象出来的对象,在现实世界和问题域中没有原型,它们同界面子系统中的对象及问题
OOA和OOD方法,Shlaer&Mellor的OOA方法,Rumbaugh的OOAD方法等。不同的方法
体系都分别体现了人们对OOA、OOD,以及面向对象软件开发过程的不同认识。本文的主要
目的就是,试图通过对现有OOA与OOD方法的共性进行纵观分析,弄清二者之间的边界问
题,评析从OOA到OOD过渡的难易,并讨论实现这种过渡所涉及的主要工作。
了理解问题;而在OOD阶段,它们的引入则主要是针对软件的构造和实现。分类结构通过继
承机制来实现,因而代码得到了有效地复用;组装结构则将一些类组合在一起构成较大的软件
构件。
7)OOA并没有考虑对象的产生问题,当其对应的实体在现实世界中出现时,它也就在问
题域中产生了。OOA也不考虑对象属性的取值和服务算法的实现。而在OOD阶段这些问题
要求进行这方面的工作,有的则将它放到设计阶段去完成,这主要是由OOA、OOD阶段划分
的不同所造成的。动态模型一般由一组状态转换图构成,从这组状态转换图可以映射到对象模
型。系统的动态模型从对象行为的角度刻划了系统功能,方便了从OOA到OOD的过渡。有的
方法虽未提供动态模型,但也提供了表示对象行为的类似方法。早期的OOA方法对建立系
什么是OOA/OOD
Object Oriented Analyzing

浅谈OOA,OOD,OOP的理解

浅谈OOA,OOD,OOP的理解

浅谈OOA,OOD,OOP的理解OOA(⾯向对象分析)、OOD(⾯向对象设计)、OOP(⾯向对象编程),这3个概念,对于我们JAVA程序员来讲,或多或少应该都有所了解,或者说⾄少都听说过。

但是要谈到对其理解,可能对于多数⼊⾏不深的从业者来说,确实不是那么容易做到。

特别是对于绝⼤多数的3年以内的低中级软件⼯程师⽽⾔。

因为他们的⼯作更多是需要按照项⽬经理分配的任务来编写功能代码,很少有多余的时间去阅读或者思考⼀些概念性的东西。

说起这个问题,我也在⽹络上也搜索过很多的资料,⼤多摘录⾄书籍,⽐较官⽅化。

让初学者⽆从理解。

为了⼴⼤的新从业者或者应聘者,在这⾥,我们以⼀种实例的⽅式来对这3个概念进⾏重新的阐述:业务场景:建⾏卡持有者,张三与李四两⼈,现在需要张三给李四转账⼈民币5000元整。

按照业务分析后的流程图如下:对于分析业务流程,常见的2种:⾯向过程分析(POA),⾯向对象分析(OOA)⾯向过程分析(Procedure Oriented Analysis):是⼀种以过程为中⼼的编程思想,以数据流向为主要导向。

为了解决问题,将解决问题的业务过程,按照⼀定的顺序划分成为⼀个⼜⼀个的事件,然后再封装成⼀个⼜⼀个的函数,最后由⼀个函数统⼀的按照顺序⼀步⼀步的调⽤即可。

在⾯向过程分析中,顺序很重要,要实现功能只需要按照⼀定的顺序相互调⽤函数即可。

上述业务场景按照⾯向过程分析出来的结果就是:1. 程序检查张三卡中余额是否⾜够5000元⼈民币(事件1,满⾜则调⽤事件2)2. 程序从张三卡中扣除5000元⼈民币(事件2)3. 程序向李四卡中加⼊5000元⼈民币(事件3)4. 程序检测李四卡中是否正常⼊账(事件4,满⾜则结束整个业务)5. 程序向张三卡中加⼊5000元⼈民币(事件5)在上述过程中,我们将这个业务过程,分成了5个步骤,也叫做5个事件,那么如果需要在程序中完成该转账业务的话,那么我们只需要按照1-2-3-4-5这样的顺序依次调⽤函数⽅法即可。

面向对象软件开发

面向对象软件开发

OOA
❖ OOA的意图是提供系统的精确、简明、易理解的面 向对象模型,也就是“蓝图”自动化。为了达到这 个目标,必须完成以下任务:
1. 必须在客户和软件工程师之间沟通, 了解基本的用户需求;
2. 必须标识类(定义属性和方法); 3. 必须刻划类的层次结构; 4. 表示对象与对象关系(关联); 5. 必须建模对象行为; 6. 任务1到5迭代反复使用,直至完成建模。
a Truck Vehicle is a kind of Vehicle
❖在 Gen-Spec 结构中,使用继承将 较一般化的属性和服务放在一般化
的类和对象中。
❖从整体的视点来看,一个 WholePart 结构可看作一个 “has a” 或 “is a part of” 结构。例如,
Vehicle has a Engine
Jacobson方法
❖ Jacobson方法提出面向对象的软件工程 OOSE,强调use case,描述用户和产品或 系统之间如何交互的场景scenario.
Coad/Yourdon方法
❖ Coad/Yourdon的OOA过程概述: 使用“寻找什么”标准来标识对象 定义一般/特殊结构 定义整体/部分结构 标识主题(子系统构件的表示) 定义属性 定义服务
面向对象软件开发
❖ 面向对象技术是一个有全新概念的开发模式, 其特点是: 方法是对软件开发过程所有阶段进行综合 考虑而得到的; 从生存期的一个阶段到下一个阶段所使用 的方法与技术具有高度的连续性; 将OOA、OOD、OOP集成到生存期的相应阶段。
OOA
❖ OOA方法使得软件工程师能够定义待解决问题 的类和对象,类之间的相互关联的方式,对 象的内部结构(属性和操作),以及允许对 象在一起工作的通信机制(消息)来对问题 域进行建模。

面向对象程序设计是什么

面向对象程序设计是什么

面向对象程序设计是什么面向对象程序设计(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计软件。

对象可以包含数据(通常称为属性或字段)和代码(通常称为方法或功能)。

面向对象程序设计的核心概念包括封装、继承、多态和抽象。

封装封装是将数据(属性)和操作数据的代码(方法)组合在一起的过程。

这样做的好处是,它允许开发者隐藏对象的内部状态,只暴露必要的接口。

封装提高了代码的安全性和可维护性,因为外部代码不能直接访问对象的内部状态,只能通过对象提供的方法进行交互。

继承继承是一种机制,允许新创建的类(子类)继承现有类(父类)的属性和方法。

这使得代码重用变得可能,同时保持了代码的组织性和清晰性。

继承还可以支持多态性,因为子类可以重写父类的方法,提供特定的实现。

多态多态性是指允许不同类的对象对同一消息做出响应的能力,但具体的行为会根据对象的实际类型而有所不同。

这通常通过方法重写实现,即子类可以提供一个与父类具有相同名称和参数的方法,但具有不同的实现。

抽象抽象是简化复杂的现实世界问题的过程,只关注对于当前问题相关的方面。

在面向对象程序设计中,抽象通常通过创建抽象类和接口来实现。

抽象类不能被实例化,但可以被继承,而接口则定义了一组方法规范,具体的类可以实现这些接口。

面向对象程序设计的优点包括:- 代码重用:通过继承和多态,可以减少代码的重复编写。

- 模块化:封装使得每个对象都是独立的模块,易于管理和维护。

- 易于扩展:新的功能可以通过添加新的类或扩展现有类来实现,而不影响现有的代码。

- 易于理解:面向对象的方法模仿现实世界中的对象和行为,使得代码更易于理解和学习。

面向对象程序设计的缺点可能包括:- 性能开销:由于面向对象的特性,如动态绑定和继承,可能会引入额外的性能开销。

- 过度设计:开发者可能会过度使用面向对象的特性,导致设计过于复杂。

- 学习曲线:对于初学者来说,理解和掌握面向对象的概念可能需要一定的时间和实践。

OOA,OOD,OOP,OOT java面向对象

OOA,OOD,OOP,OOT java面向对象
组件 - 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。
抽象性 - 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。
封装 - 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提 供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。
二、面向对象分析产生三种分析模型
1、对象模型:对用例模型进行分析,把系统分解成互相协作的分析类,通过类图/对象图描述对象/对象的属性/对象间的关系,是系统的静态
模型
2、动态模型:描述系统的动态行为,通过时序图/协作图描述对象的交互,以揭示对象间如何协作来完成每个具体的用例,单个对象的状态变
化/动态行为可以通过状态图来表达
3、功能模型(即用例模型à作为输入)。
三、OOA的主要优点
(1)加强了对问题域和系统责任的理解;
(2)改进与分析有关的各类人员之间的交流;
(3)对需求的变化具有较强的适应性;
(4)支持软件复用。
(5)贯穿软件生命周期全过程的一致性。
(6)实用性;
(7)有利于用户参与。
(3)继承:特殊类的对象拥有的其一般类的全部属性与服务,称作特殊类对一般类的继承。
在OOA中运用继承原则,就是在每个由一般类和特殊类形成的一般—特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具
有的属性和服务,一次性地在一般类中进行显式的定义。在特殊类中不再重复地定义一般类中已定义的东西,但是在语义上,特殊类却自动地
OOA在定义属性的同时,要识别实例连接。实例连接是一个实例与另一个实例的映射关系。

面向对象分析方法名词解释

面向对象分析方法名词解释

面向对象分析方法名词解释
面向对象分析(Object-Oriented Analysis, 简称OOA),是一种基于软件工程中面向对象思
想的软件分析方法,旨在搭建软件需求分析基础模型,以识别、分析和实现客户软件需求,制定出对软件研发工作与设计有效的管理模型。

OOA 是拔高软件开发进程中最重要的步骤,它旨在满足客户对于软件的要求,使客户能够在满意的时间,满意的经费以及满意的套大成果得到期望的软件。

OOA 的拥有者一般是由软件项目经理控制的全职专职软件分析师,他们会使用OOA 快速获取软件要求信息,这
些信息是从客户的说明开始的形式,因此将比研发者在识别需求时所需要的时间更少。

OOA 的主要任务就是使软件发展过程更加高效。

Face-to-face(面对面)会谈,讲解,文
档研究以及运用建模工具等方法将客户提出的需求进行阐明,并把客户的大部分需求变成
客观的功能和属性的可操作的模型,因此OOA 的设计方法也称为可重用组件的设计(Reusable Components Design)。

OOA 的模型通常有以下几种:系统架构,逻辑和物理;在实现系统架构中,把客户提出的需求变成给定的抽象模型即为系统拓扑。

在逻辑模型中,将系统拓扑拆分为不同的构件,
以表达客户关心的系统服务和非功能性要求,而在物理模型中,关于客观和完整的描述系统结构,有细粒度的描述和定义每个构件的不同的属性。

面向对象分析也可以用于检验软件开发过程中的系统是否符合预期的情况,也可以用于发现并实施软件系统的改进与更新。

只要对OOA 方法有正确的运用,软件开发项目就容易
得到客户的满意和顺利实施。

软件工程填空题试题及答案

软件工程填空题试题及答案

《软件工程》填空题二、填空题(请把答案写在相应的横线上,每小题分)1、软件是数据、计算机程序及其说明程序的各种文档。

2、概要设计主要是把各项功能需求转换成系统的体系结构。

3、面向对象开发方法包括 OOA 、OOD 、 OOP 三部分。

4、结构化设计中以数据流图为基础的两种具体分析设计方法是变换分析、事物分析设计。

5、在单元测试时,需要为被测模块设计驱动模块和桩模块。

6、CMM把软件过程从无序到有序的进化分成5个阶段,排序而形成5个逐层提高的等级,分别是初始级、可重复级、已定义级、已管理级和可优化级。

7.子类自动共享父类的属性和操作的机制称为继承。

8. 软件工程管理的具体内容包括对开发人员、组织机构、用户、文档资料等方面的管理。

9、可行性研究的三个方面是技术可行性、社会可行性和__经济可行性__。

10、在软件概要设计阶段,建立软件结构后,还应为每个模块写一份处理说明和_接口说明__。

11、在画分层的DFD时,父图与子图的输入输出数据流要__平衡__。

12、在详细设计阶段,除了对模块内的算法进行设计,还应对模块内的__数据结构_进行设计。

13. 对象的抽象是___类___。

14. 基线的作用是把各阶段的开发工作划分得更加明确,便于检查与确认阶段成果。

因此,基线可以作为项目的一个___检查点__。

15. 包括软件开发技术和__软件工程管理__两大部分内容。

16、开发过程管理包括项目计划、控制和___任务管理__等。

17、CASE是多年来在软件开发管理、软件开发方法、软件开发环境和__软件工具__等方面研究和发展的产物。

18、数据字典中有四类条目,分别是___数据流、数据项、数据存储、基本加工。

19、用于描述基本加工的小说明的三种描述工具是结构化语言、判定表、判定树_。

20、子类只继承一个父类的属性和操作,这称为__单重继承__。

21、 McCabe复杂性度量又称__环路度量_。

22、喷泉模型是一种以用户需求为动力,以__对象__为驱动的模型。

面向对象编程(oop)名词解释

面向对象编程(oop)名词解释

面向对象编程(Object-Oriented Programming, OOP)是一种程序设计范式,它将现实世界中的事物抽象为程序中的对象,并通过对象之间的交互来实现各种功能。

在面向对象编程中,对象可以是具体的实体,也可以是抽象的概念,它们都可以拥有属性和方法,通过这些属性和方法可以描述和操作对象的特性和行为。

面向对象编程是现代软件开发中最常用的编程范式之一,它具有高内聚、低耦合的特点,能够提高代码的复用性、可维护性和可扩展性。

面向对象编程的核心思想包括封装、继承和多态。

1. 封装(Encapsulation)封装是面向对象编程的重要特性之一,它通过将数据和方法封装在对象内部,隐藏对象内部的实现细节,只暴露特定的接口给外部使用,从而保护数据的安全性和完整性。

封装可以使对象的内部状态只能通过指定的方法进行访问和修改,提高了程序的安全性和稳定性。

2. 继承(Inheritance)继承是面向对象编程中的另一个重要概念,它允许一个类(子类)继承另一个类(父类)的属性和方法,并且可以对其进行扩展或修改。

通过继承,可以减少重复的代码,提高代码的复用性和可维护性,同时也能够构建出更加抽象和通用的数据模型。

3. 多态(Polymorphism)多态是面向对象编程的另一个重要特性,它允许不同的对象对同一个消息做出不同的响应,即同一操作作用于不同的对象上可以有不同的结果。

通过多态,可以实现更加灵活的程序设计,减少代码的复杂度,提高程序的可扩展性和可维护性。

面向对象编程是软件开发中非常重要的一部分,它已经广泛应用于各种编程语言和评台上。

通过面向对象编程,可以更加方便地描述和模拟现实世界中的问题,提高程序的抽象能力和可扩展性,减少程序设计和开发的复杂度,从而提高软件开发的效率和质量。

面向对象编程是一种强大而灵活的编程范式,它通过封装、继承和多态等特性,使代码更加具有可读性、可维护性和可重用性,是现代软件开发不可或缺的一部分。

面向对象的开发方法

面向对象的开发方法


工 程
❖“ 面 向 对 象 ” 就 是 面 向 问 题 空 间 中 的 实
概 述
体。
10
2021/4/9
10

件 工
对象

➢ 对象——是对客观世界中事物的一种抽象。
是由数据(属性)及其之上的操作(行为)

组成的封装体。
或:
软 件 工
类和对象封装了对描述某些现实世界实体的 内容和行为所需的数据和过程的抽象。

象。
19 Operation(操作)——说明要进行的操作。
A2r02g1/u4/9ments(变量)——提供操作完成所需的信 19


工 ➢ 封装——又称信息隐藏。用户只能见到

对象封装界面上的信息,对象内部对用
户时隐蔽的。

封装的目的是将对象的使用者与设计者

件 分开。

程 概
封装有效的实现了模块化。
➢ 流行的范型

❖ 过程性范型
❖ 逻辑性范型

❖ 面向存取范型
❖ 面向对象范型

❖ 面向进程范型

❖ 函数型范型

不同的范型,会导出不同的模块、过程和规
程 概
则。

对于不同的问题,应选择更适合的范型作为
解决问题切入点。
5
2021/4/9
5

件 工
➢ 过程性范型

❖ 产生过程的抽象,将软件视为处理流,并定
A 之
Op1
软 件
Op2 消息


C


Op6
Op7
OP8

面向对象分析OOA

面向对象分析OOA
冗余:用户、磁卡、副本----储户、现金兑换卡
无关:成本、市、街道、营业厅、储蓄所
笼统:银行、网络、系统、软件、信息、访问
属性:有些名词实际上描述的是其他对象的属性,应该
把这些名词从候选类与对象中去掉。当然,如果某个性质 具有很强的独立性,则应把它作为类而不是作为属性。
在ATM系统的例子中,“现金”、“支票”、“取款额”、“账单”、 “余额”、“分行代码”、“卡号”、“密码”、“类型”等,实际 上都应该作为属性对待。
在用面向对象观点建立起的3种模型中,对象 模型是最基本、最重要、最核心的。
一、 面向对象分析的基本过程
面向对象分析,就是抽取和整理用户 需求并建立问题域精确模型的过程。
三个模型、五个层次
3个模型:对象模型 (静态结构)、动态模型(交互次 序)和功能模型(数据变换)。
复杂问题(大型系统)的对象模型由5个层次组成
最后,比较各个对象的状态图,检查它们之间的 一致性,确保事件之间的匹配。
1、编写脚本
脚本:系统在某一执行期间内出现的一系列事件。 脚本描述用户(或其他外部设备)与目标系统之间 的一个或多个典型的交互过程,以便对目标系统 的行为有更具体的认识。
编写脚本的目的:是保证不遗漏重要的交互步骤, 它有助于确保整个交互过程的正确性的和清晰性。
二、需求陈述
需求陈述的内容包括:问题范围,功能需求,性 能需求,应用环境及假设条件等。总之,需求陈 述应该阐明“做什么”而不是“怎样做”。
书写需求陈述时,要尽力做到语法正确,而且应 该慎重选用名词、动词、形容词和同义词。
需求陈述可简可繁。 反复迭代,逐步完整、准确、有效。
三、建立对象模型
OOA 过程
概念上:OOA大体上按照下列顺序进行:寻找类 与对象,识别结构,识别主题,定义属性,建立 动态模型,建立功能模型,定义服务。

面向对象的OOA_OOD软件开发技术分析

面向对象的OOA_OOD软件开发技术分析

第25卷 第5期2009年10月 忻州师范学院学报JOURNAL OF X I N ZHOU TE ACHERS UN I V ERSI TY Vol.25 No.5 Oct.2009 面向对象的OOA、OOD软件开发技术分析任胜兰(太原师范学院,山西太原030012)摘 要:面向对象是当前计算机界关心的重点,是上个世纪90年代软件发展的主流,实际上,面向对象的概念和应用已经超越程序设计和软件开发,而且已经渗透到了系统模拟、数据库、多媒体、图形技术、网络管理系统、CAD技术、人工智能等多个领域。

文章主要讨论面向对象的开发方法OOA和OOD,并且对面向过程与面向对象加以比较,阐述了面向对象的OOA、OOD之不足及适用范围,同时也分析了发展中存在的争论问题。

关键词:面向对象;OOA;OOD;软件开发中图分类号:TP311 文献标识码:A 文章编号:1671-1491(2009)05-0039-04 面向对象(Object-O riented,简称OO)技术是一种以对象为中心的分析和解决问题的新方法,它克服了传统方法中对象与行为之间联系松散的缺点,更能体现软件开发中的三个重要概念,即抽象、信息隐蔽和模块化。

因此面向对象技术已广泛应用于软件开发的各个阶段,从而产生了面向对象的分析方法OOA(Object-O riented Analysis),面向对象的设计方法OOD(Object-O riented Design)等面向对象的技术。

面向对象(OO:Object-O riented)是当前计算机界关心的重点,是90年代软件发展的主流,实际上,面向对象的概念和应用已经超越程序设计和软件开发,而且已经渗透到了系统模拟、数据库、多媒体、图形技术、网络管理系统、CAD 技术、人工智能等多个领域。

一些新的工程概念及其实现,如并发工程、综合集成工程等,也需要面向对象的支持。

实践证明,采用面向对象的方法在提高软件的可靠性、可理解性和可维护性,提高软件质量和生产效率,降低生产成本等方面都具有重要的意义。

面向对象分析与设计

面向对象分析与设计

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

2、设想用户界面
界面对用户是否喜欢、是否接受一个系统起着很 重要的作用。 界面中的信息交换方式是非常重要的。 设想用户界面的目的就是确保能够完成全部必要 的信息交换,而不会丢失重要的信息。
3、画事件跟踪图/状态图 画事件跟踪图/ 确定事件与状态 UML顺序图、活动图表示事件活动的过程 UML状态图表示事件与对象状态的关系
OOA 过程
概念上:OOA大体上按照下列顺序进行: 概念上:OOA大体上按照下列顺序进行:寻找类 大体上按照下列顺序进行 与对象,识别结构,识别主题,定义属性, 与对象,识别结构,识别主题,定义属性,建立 动态模型,建立功能模型,定义服务。 动态模型,建立功能模型,定义服务。 但,正如前面已经多次强调指出过的,分析不可 正如前面已经多次强调指出过的, 能严格地按照预定顺序进行,大型、 能严格地按照预定顺序进行,大型、复杂系统的 模型需要反复构造多遍才能建成。通常, 反复构造多遍才能建成 模型需要反复构造多遍才能建成。通常,先构造 出模型的子集,然后再逐渐扩充,直到完全、充 出模型的子集,然后再逐渐扩充,直到完全、 分地理解了整个问题,才能最终把模型建立起来。 分地理解了整个问题,才能最终把模型建立起来。
三、建立对象模型 获取客户对OO系统的需求 获取客户对OO系统的需求 OO 使用基本的需求作为指引来选择类和对象 为每个系统对象标识属性和操作 定义组织类的结构和层次 建造对象—关系模型 建造对象 关系模型
1、确定类和对象 找出候选的类与对象
筛选出正确的类与对象
ATM系统
ATM系统候选类和对象:
OOA --- 面向对象分析
不论采用哪种方法开发软件, 不论采用哪种方法开发软件,分析的过程都是提 取系统需求的过程。 取系统需求的过程。 分析工作主要包括3项内容,这就是理解、表达和 分析工作主要包括 项内容,这就是理解、 项内容 理解 验证。 验证。 分析过程得出的最重要的文档资料是软件需求规 格说明(在面向对象分析中,主要由对象模型、 格说明 在面向对象分析中,主要由对象模型、动 在面向对象分析中 态模型和功能模型组成)。 态模型和功能模型组成 。
OOD设计金字塔 设计金字塔
OOD — OO系统的设计
尽管分析和设计的定义有明显区别,但是在实 际的软件开发过程中二者的界限是模糊的。许 多分析结果可以直接映射成设计结果,而在设 计过程中又往往会加深和补充对系统需求的理 解,从而进一步完善分析结果。因此,分析和 设计活动是一个多次反复迭代的过程。 面向对象方法学在概念和表示方法上的一致性, 保证了在各项开发活动之间的平滑(无缝)过渡, 领域专家和开发人员能够比较容易地跟踪整个 系统开发过程,这是面向对象方法与传统方法 比较起来所具有的一大优势。
把这些名词从候选类与对象中去掉。当然,如果某个性质 具有很强的独立性,则应把它作为类而不是作为属性。
在ATM系统的例子中,“现金”、“支票”、“取款额”、“账单”、 “余额”、“分行代码”、“卡号”、“密码”、“类型”等,实际 上都应该作为属性对待。
操作、实现……
2、确定关联
初步确定关联 筛选 进一步完善 实例 p238-246
面向对象分析(OOA)的关键: 识别出问题域内 面向对象分析(OOA)的关键: (OOA)的关键 的类与对象,并分析它们相互间的关系, 的类与对象,并分析它们相互间的关系,最终 建立起问题域的简洁、精确、 建立起问题域的简洁、精确、可理解的正确模 型。 在用面向对象观点建立起的3种模型中, 在用面向对象观点建立起的3种模型中,对象 模型是最基本、最重要、最核心的。 模型是最基本、最重要、最核心的。
一、 面向对象分析的基本过程
面向对象分析, 面向对象分析,就是抽取和整理用户 需求并建立问题域精确模型的过程。 需求并建立问题域精确模型的过程。
三个模型、 三个模型、五个层次
静态结构) 动态模型( 3个模型:对象模型 (静态结构)、动态模型(交互次 个模型: 序)和功能模型(数据变换)。 功能模型(数据变换) 复杂问题(大型系统)的对象模型由5个层次组成 复杂问题(大型系统)的对象模型由5
以可实现的方式描述每个子系统 对象设计 消息设计 复审设计模型并在需要时迭代
对象设计 分析
系统设计
OOD设计准则 OOD设计准则
模块化 抽象 信息隐藏 弱耦合(减少交互耦合、增加继承耦合) 强内聚(服务内聚、类内聚、一般-特殊内聚) 可重用
OOD — 系统设计过程
划分分析模型 并发性和子系统分配 任务管理构件 数据管理构件 资源管理构件 人机界面构件 子系统间通信
ATM正常情况的事件顺序图 正常情况的事件顺序图
ATM取款类的状态图 取款类的状态图
五、建立功能模型/定义服务 建立功能模型/
功能模型表明了系统中数据之间的依赖关系, 以及有关的数据处理功能。 建立功能模型:数据流图、UML的用例图 定义服务
OOD— OO系统的设计 系统的设计
责任设计 消息设计 类及对象设计 子系统设计
OOD — 对象设计过程 对象描述 涉及算法和数据结构 程序构件和接口
---- 面向对象实现
面向对象实现(OOP) 面向对象实现(OOP)
实现语言 基本实现手段 实现环境(类库、开发工具) 编码调试 测试
基本实现手段
类定义 对象创建 结构定义 实例关联定义 操作调用和消息发送 内存管理 封装 多态
面向对象的概念和原则
Introduction to Object Technology Concepts of Object Orientation 标识对象模型元素
面向对象软件开发技术
面向对象分析(OOA) 面向对象设计(OOD) 面向对象实现(OOP)
OOA/D中最关键、最基本的能力是熟练地 为软件组织分配职责。 OOA OOA强调在问题领域内发现和描述对象或 概念,而不是解决方案 。(做正确的事) OOD强调的是定义软件对象和这些软件对 象如何协作来满足需求。(正确地做事)
小 结
近年来,面向对象方法学日益受到人们的重视, 近年来,面向对象方法学日益受到人们的重视,特 别是在用这种方法开发大型软件产品时, 别是在用这种方法开发大型软件产品时,可以把该 产品看作是由一系列本质上相互独立的小产品组成, 产品看作是由一系列本质上相互独立的小产品组成, 这就不仅降低了开发工作的技术难度, 这就不仅降低了开发工作的技术难度,而且也使得 对开发工作的管理变得比较容易了。 对开发工作的管理变得比较容易了。 使用面向对象范型能够开发出稳定性好、 使用面向对象范型能够开发出稳定性好、可重用性 好和可维护性好的软件。 好和可维护性好的软件。 UML是基于面向对象技术的标准建模语言 通常, 是基于面向对象技术的标准建模语言。 UML是基于面向对象技术的标准建模语言。通常, 使用UML的类图来建立对象模型,使用UML UML的类图来建立对象模型 UML的状态 使用UML的类图来建立对象模型,使用UML的状态 图来建立动态模型,使用数据流图或UML UML的用例图 图来建立动态模型,使用数据流图或UML的用例图 来建立功能模型。 来建立功能模型。
ATM系统原始的类图 系统原始的类图
3、划分主题 4、确定属性(分析、选择) 确定属性(分析、选择) 5、识别继承关系 6、反复修改
修 改 后 的 A T M 对 象 模 型
四、建立动态模型
在开发交互式系统时,动态模型却起着很重要的 作用。 第一步,是编写典型交互行为的脚本。虽然脚本 中不可能包括每个偶然事件,但是,至少必须保 证不遗漏常见的交互行为。 第二步,从脚本中提取出事件,确定触发每个事 件的动作对象以及接受事件的目标对象。 第三步,排列事件发生的次序,确定每个对象可 能有的状态及状态间的转换关系,并用状态图描 绘它们。 最后,比较各个对象的状态图,检查它们之间的 一致性,确保事件之间的匹配。
银行,ATM,系统,中央计算机,分行计算机,柜员终端,网络,总 行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户, 现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡 号,用户,副本,信息,密码,类型,取款额,账单,访问。
冗余:用户、磁卡、副本----储户、现金兑换卡 无关:成本、市、街道、营业厅、储蓄所 笼统:银行、网络、系统、软件、信息、访问 属性:有些名词实际上描述的是其他对象的属性,应该
1、编写脚本
脚本:系统在某一执行期间内出现的一系列事件。 脚本描述用户(或其他外部设备)与目标系统之间 的一个或多个典型的交互过程,以便对目标系统 的行为有更具体的认识。 编写脚本的目的:是保证不遗漏重要的交互步骤, 它有助于确保整个交互过程的正确性的和清晰性。 编写脚本:首先编写正常情况的脚本。然后,考 虑特殊情况,最后,考虑出错情况。
三种模型之间的关系
三种模型分别从3个不同侧面描述了所要开发的系 统。它们相互补充、相互配合,使得我们对系统 的认识更加全面:功能模型指明了系统应该“做 什么”;动态模型明确规定了什么时候(即在何种 状态下接受了什么事件的触发)做;对象模型则定 义了做事情的实体。 在面向对象方法学中,对象模型是最基本最重要 的,它为其他两种模型奠定了基础。
二、需求陈述
需求陈述的内容包括:问题范围,功能需求, 需求陈述的内容包括:问题范围,功能需求,性 能需求,应用环境及假设条件等。总之, 能需求,应用环境及假设条件等。总之,需求陈 述应该阐明“做什么”而不是“怎样做” 述应该阐明“做什么”而不是“怎样做”。 书写需求陈述时,要尽力做到语法正确, 书写需求陈述时,要尽力做到语法正确,而且应 该慎重选用名词、动词、形容词和同义词。 该慎重选用名词、动词、形容词和同义词。 需求陈述可简可繁。 需求陈述可简可繁。 反复迭代,逐步完整、准确、有效。 反复迭代,逐步完整、准确、有效。
生命周期方法学把设计进一步划分成总体设计和 详细设计两个阶段。 面向对象设计细分为系统设计和对象设计。 系统设计确定实现系统的策略和目标系统的高层 结构。 对象设计确定解空间中的类、关联、接口形式及 实现服务的算法。 系统设计与对象设计之间的界限,比分析与设计 之间的界限更模糊。
相关文档
最新文档