OOD, OOA和OOP

OOA和OOD的区别

OOA:Object Oriented Analysis 面向对象分析方法
OOD:Object Oriented Design 面向对象设计
 1)OOA将现实世界中的实体抽象为问题对象,并构造问题域中的系统需求模型;OOD将 问题对象转化为解域中的类并在解域中构造出问题的解。 
 2)OOA侧重于用户需求的分析和对问题域的理解,分析人员关心的是系统结构及对象间 的关系;OOD则侧重于系统的实现,设计人员关心的是对象的行为及其实现。 
 3)OOA标识了一组对象,并通过其相互作用来刻划系统,该阶段的工作与程序设计语言 无关;OOD定义了一组类,并设计出系统的实现蓝图,概要设计与程序设计语言无关,但详细 设计则与之有比较密切的联系。 
 4)OOA识别的对象是对客观世界实体的抽象,标识对象的准则是:该对象的引入是否有助于对问题域的理解;OOD中构造类的准则是:该类的构造是否可行,是否有效地实现了抽象 数据类型,是否有助于系统的实现和提高软件质量。
 5)两个阶段都没有提及系统对象,但原因不同。在OOA阶段,分析与实现无关,分析所涉 及的范围与解域无关,系统对象自然不用考虑。OOD建立的对象模型本身就是要设计的软件 系统,对系统对象的考虑是隐含的。 
 6)组装结构和分类结构在两个阶段所起的作用不同。在OOA阶段,它们的引入主要是为 了理解问题;而在OOD阶段,它们的引入则主要是针对软件的构造和实现。分类结构通过继 承机制来实现,因而代码得到了有效地复用;组装结构则将一些类组合在一起构成较大的软件 构件。 
 7)OOA并没有考虑对象的产生问题,当其对应的实体在现实世界中出现时,它也就在问 题域中产生了。OOA也不考虑对象属性的取值和服务算法的实现。而在OOD阶段这些问题 都必须详细考虑。 
 8)OOD涉及到重载问题;而OOA没有考虑,因为考虑过多的实现细节对理解问题和分 析用户需求没有多大帮助。

OOP:Object Oriented Programming 面向对象的程序设计

所谓“对象”在显式支持面向对象的语言中,一般是指类在内存中装载的实例,具有相关的成员变量和成员函数(也称为:方法)。面向对象的程序设计完全不同于传统的面向过程程序设计,它大大地降低了软件开发的难度,使编程就像搭积木一样简单,是当今电脑编程的一股势不可挡的潮流。
OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:
组件 - 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。
抽象性 - 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。
封装 - 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。
多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。
继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。
由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行。Python 和 Ruby 是最近才出现的语言,在开发时完全采用了 OOP 的思想,而流行的 Perl 脚本语言从版本5开始也慢慢地加入了新的面向对象的功能组件。用组件代替“现实”上的实体成为 JavaScript(ECMAScript) 得以流行的原因,有论证表明对组件进行适当的组合就可以在英特网上代替 HTML 和 XML 的文档对象模型(DOM)。

举个简单例子分析三者(直接看这里浅显易懂)

引来对ooa,ood,oop的理解;
分析师拿到了所有来自客户的需求了;了解需求,分析需求,分析技术实现等,得出一个结论:假设要在这里修条隧道;于是分析师,系统分析师,架构设计师出现了,他们干的工作就分析出来一个方案,即项目需求,他们的身份就是OOA了。OOA是Object-Oriented Analysis(面向对象分析)

分析师们分析结果出来后,形成了最早的需求模型;可能是一个草图,一张可行性分析XX报告;设计师们拿到这个模型进行细化,模块化,定义所有的细节,也就是详图,或是详细的需求分析规格书了,在这里,可能会有隧道的位置,长度,宽度,高度,容量,光线,材料,设备,电子眼,安全等,这里就是具体的需求文档了。设计师的设计工作完成了,他们就是OOD。OOD是Object Oriented Design(面向对象设计)

OOP就是施工队了,他们按照设计图的要求完成隧道工程,包括质量,容量,安全等测试,也就是完成项目的实际操作部分,在项目里就是coding的工作和testing的工作。到此为止,隧道就完成了,駕駛員也可以说成是testing的一员,他们进行体验,体验完了,没问题,oop的工作也就结束了,我们可以收工了。OOP是Object Oriented Programming (面象对象程序设计)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值