OOA(Object-Oriented Analysis),面向对象分析
OOD(Object-Oriented Design),面向对象设计
OOP(Object Oriented Programming),面向对象程序设计
OOA的主要原则
(1)抽象:一般是现实生活中抽取共同的、本质性的特征,就叫做抽象。
抽象原则有两个方面的意义:第一,尽管问题域中的事物是很复杂的,但是我们并不需要了解和描述它们的一切,只需要分析其中与系统目标有关的事物及其本质性特征。第二,通过舍弃个体事物在细节上的差异,抽取其共同特性从而得到一类事物的抽象概念。
抽象是面向对象方法中使用最为广泛的原则。数据抽象是OOA的核心原则。它强调把属性和操作结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。
(2)封装就是把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。
(3)继承:特殊类的对象拥有的其一般类的全部属性与服务,称作特殊类对一般类的继承。
在OOA中运用继承原则,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和操作,通用性的在一般类中进行显式的定义。在特殊类中不在重复的定义一般类中已定义的,但是在语义上,特殊类却自动的、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的全部属性和操作。继承原则的好处是:系统模型层级清晰。
--OOA:
面向对象分析 (Object-Oriented Analysis)是确定需求或者业务的角度,按照面向对象的思想来分析业务。例如:OOA只是对需求中描述的问题,进行模块化的处理,描述问题的本质,区别每个问题的不同点相同点,确定问题中的对象。
OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类化分析和整理。
--OOD
面向对象设计(Object-Oriented Design)方法是OO方法中一个中间过渡环节。其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。
1、OOD的目标是管理程序内部各部分的相互依赖。为了达到这个目标,OOD要求将程序分成块,每个块的规模应该小到可以管理的程度,然后分别将各个块隐藏在接口(interface)的后面,让它们只通过接口相互交流。
2、这种依赖关系的转换使得系统的各部分具有了可复用性。如果要复用某一个程序块,只要实现必须的接口就行了。
3、OOD是一种解决软件问题的设计范式,一种抽象的范式。使用OOD这种设计范式,我们可以用对象(object) 来表现问题领域(problem domain)的实体,每个对象都有相应的状态和行为。我们刚才说到:OOD是一种抽象的范式。抽象可以分成很多层次,从非常概括的到非常特殊的都有,而对象可能处于任何一个抽象层次上。另外,彼此不同但又互有关联的对象可以共同构成抽象:只要这些对象之间有相似性,就可以把它们当成同一类的对象来处理。
--OOP
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计),是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。
所谓“对象”在显式支持面向对象的语言中,一般是指类在内存中装载的实例,具有相关的成员变量和成员函数(也称为:方法)。
面向对象的程序设计完全不同于传统的面向过程程序设计,它大大地降低了软件开发的难度,使编程就像搭积木一样简单,OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:组件(Component),简而言之,组件就是对象,是对数据和方法的简单封装;是数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。
(1)抽象性- 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。
(2)封装 -也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。
(3)多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。
(4)继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。
由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行。例如,Python是最近才出现的语言,在开发时完全采用了 OOP 的思想。实际上, JavaScript(ECMAScript) 得以流行的原因也是用组件代替“现实”上的实体。
面向对象编程技术的关键性观念是它将数据及对数据的操作行为放在一起,作为一个相互依存、不可分割的整体——对象。相同类型的对象进行分类、抽象后,得出共同的特征而形成了类。面向对象编程就是定义这些类。
类是描述相同类型的对象集合。程序的执行表现为一组对象之间的交互通信。对象之间通过公共接口进行通信,从而完成系统功能。类中声明的public成员组成了对象的对外公共接口.
什么是oop的基本思想呢?把组件的实现和接口分开,并且让组件具有多态性。不过,两者还是有根本的不同。oop强调在程序构造中你必须得继承,使用类,使用对象,对象传递消息。所强调的是清楚的定义类之间的层次关系。