嵌入式移动开发 2019-11-01
面向对象(Object-oriented)技术是一种新型程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象、类、封装、继承、聚合、关联、消息、多态等基本概念来构造系统的软件开发方法。它充分体现了分解、抽象、模块化、信息隐蔽等思想,可以有效地提高软件生产率、缩短软件开发时间、提高软件质量,是控制软件复杂性的有效途径。
(1)传统结构化方法与面向对象方法比较?
传统的结构化方法着眼于一个信息系统需要什么样的方法和处理过程。以过程抽象来对待系统的需求,其主要思想就是对问题进行功能分解,如果分解后得到的功能过大,那么再对这些功能进行分解,直到最后分解得到的功能能比较方便地处理和理解为止。它从算法的角度进行建模,所有的软件都用过程或者函数作为其主要构造块,所以,具有模型脆弱、难以适应需求的变动、维护较困难等特点。
与传统的结构化方法相比,面向对象方法在描述和理解问题域时采用截然不同的方法。其基本思想是,对问题域进行自然分割,以更接近人类思维方式建立问题域模型,从而使设计出的软件尽可能直观地描述现实世界,具有更好的可维护性,能适应用户需求的变化。
面向对象技术优点:
首先,用面向对象技术开发的系统比较稳定,较小的需求变化不会导致大的系统结构的改变。
其次,用面向对象技术开发的系统易于理解。结构化方法和面向对象方法对现实世界采用了不同的映射方法。在结构化方法中,现实世界被映射为功能的集合;在面向对象方法中,现实世界中的实体及其相互关系被映射为对象及对象间的关系,实体之间的相互作用被映射为对象间的消息发送,以及其他类似的各种映射关系。
第三,采用面向对象技术开发的系统具有更好的适应性,能更好地适应用户需求的变化,有助于改造大型软件系统。
第四,用面向对象技术开发的系统具有更高的可靠性,有助于软件的维护与复用。
第五,面向对象技术有助于提高软件的质量和生产率。
(2)面向对象的基本原则
抽象、封装、委托、分类、继承
对象:对象(object)是系统中用来描述客观事物的一个实体,它是构造系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组方法组成。属性是用来描述对象静态特征的一个数据项,操作是用来描述对象动态特征的一个动作序列。对象之间通过消息通信。
类:类(class)是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供一个统一的抽象描述。类是静态的,类的语义和类之间的关系在程序执行前就已经定义好了,而对象是动态的,对象是在程序执行时被创建和删除的。
封装:封装就是把对象的属性和方法结合成一个独立的系统单位,并尽可能地隐藏对象的内部细节。封装使一个对象形成两个部分:接口部分和实现部分,对于用户来说,接口部分是可见的,而实现部分是不可见的。封装提供了两种保护,首先封装可以保护对象,防止用户直接存取对象的内部细节;其次,封装也保护了客户端,防止对象实现部分的变化可能产生的副作用,即实现部分的改变不会影响到客户端的改变。
继承:特殊类(子类)拥有其一般类(父类)的生命属性与操作,称作特殊类对一般类的继承。在子类中可以增加或重新定义所继承的属性或方法,如果是重新定义,则称为覆盖(override)。与覆盖很类似的一个概念是重新(overload),重载指的是一个类中有多个同名的方法,但这些方法在操作数或/和操作数的类型上有区别。
多态:多态指的是一个实体在不同上下文条件下具有不同意义或用法的能力。对象的多态通常是指一般类中定义的操作和属性被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。注意:多态属于运行时的问题,而重载是编译时的问题。
example:Graph类中有一个draw方法,Circle和Rectangle类中继承了draw方法,可以声明一个Graph类型对象的变量,但在运行时,可以把Circle类型或Rectangle类型的对象赋值给变量,即变量所引用的对象在运行在运行时会有不同的形态。如果调用draw方法,则根据运行时该变量所引用Circle还是Rectangle,来决定调用Circle中的draw方法还是Rectangle中的draw方法。
消息:消息是向对象发出的服务请求,它包含了提供服务的对象标识、服务标识、输入信息和回答信息等。注意:消息不等同于函数调用。消息可以包括同步消息和异步消息,如果消息是异步的,则一个对象发送消息后,就继续自己的活动,不等待消息接收者返回控制,而函数调用往往是同步的,消息的发送者要等待接收者返回。