面向对象程序设计方法学
面向对象程序设计吸取了结构化程序设计的一切优点,又考虑了现实世界与面向对象解空间的映射关系,它所追求的目标是将现实世界问题的求解尽可能的简单化。
面向对象程序设计将数据及对数据的操作放在一起,作为一个相互依存、不可分割的整体来处理,它采用数据抽象和信息隐藏技术。它将对象及对对象的操作抽象成一种新的数据类型—类,并且考虑不同对象之间的联系和对象类的重用性。
下面我将就本人了解的一些面向对象基本概念和大家分享。希望对大家有所帮助。
一、对象的基本概念
面向对象=对象+类+继承+消息通信
面向对象系统最突出的特性就是封装性、继承性和多态性,衡量某一种程序设计语言,看它是否是面向对象的程序设计语言,主要看它是否具有以上三种特性。 像C++,C#,java等都是这样的程序设计语言。
二、类与对象
类(class)是对具有相同属性和服务的一个或一组对象的抽象定义。
类与对象是抽象与具体实例的关系,一个具体的对象被称做类的一个实例。
是否建立了丰富的类库是衡量一个面向对象程序设计语言成熟与否的一个重要标志。
对象(object)是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,是类的实例。
面向对象的软件系统是由对象组成的,复杂的对象是由比较简单的对象组合而成。也就是说,面向对象方法学使用对象分解取代了传统方法的功能分解。
对象的属性和方法称为这个对象的“成员”。它是构成对象的主要部分。
类可以说是对象的蓝图(blueprint)
三、对象三要素
对象三要素:对象标志、属性和服务
对象标志:也就是对象的名字,供系统内部唯一地识别对象。
属性:也称状态或数据,用来描述对象的静态特征。在某些面向对象的程序设计语言中,属性通常被称为成员变量或简称变量。
服务:也称操作、行为或方法等,用来描述对象的动态特征。某些面向对象程序设计语言中,服务通常被称为成员函数或简称函数。
封装:对象的一个重要原则,目 的是使对象的定义与实现分离。它有两层含义:第一,对象是其全部属性和全部服务紧密结合而形成的一个不可分割的整体;第二,对象是一个不透明的黑盒子,表 示对象状态的数据和实现操作的代码都被封装在黑盒子里面。使用一个对象的时候,只需知道它向外界提供的接口形式,无须知道它的数据结构细节和实现操作的算 法。从外面看不见,更不可能从外面直接修改对象的私有属性。
l 处于私有段(private)的changemark,这是不向外公开的功能,只供对象自己使用。
l 处于保护段(protected)的getmark,这是只向外界宣布的功能,只对其派生类对象提供服务。
l 处于公有段(public)的getname和getmajor,这是向所有外界公开的功能,它可以响应外界对象的请求。
四、继承(inheritance)和多态(polymorphism)性
继承:是面向对象程序设计语言不同于其它语言的主要特点,是类之间共享属性和操作的机制。其定义为:特殊类(或称子类、派生类)的对象拥有其一般类(或称父类、基类)的全部属性与服务,称做特殊类对一般类的继承(分为单继承和多继承)。在面向对象的方法学中,继承是提高软件开发效率的重要原因之一。
多态性:指对象在收到消息时,要给予相应,对象收到同一个消息后可能产生完全不同的结果。
总体上分为:编译时的多态和运行时的多态。
参数多态(使用函数重载来实现)是应用最广泛的多态,是最纯的多态。
多态性不仅增加了面向对象软件系统的灵活性,进一步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。
在定义函数重载时,函数名字相同,但函数所带的参数的个数或类型必须有所区别,否则就会出现二义性。
习惯称被继承的类为“父类”,而继承的类称为“子类”。
在面向对象系统中除了函数可以重载外,运算符也可以重载。java也是这样。
注意:编译时的多态一般由函数重载来实现,而运行时的多态由虚函数来使用。