面向对象程序设计:
1、传统的面向过程的程序设计:POP(Process Oriented Programming)
2、面向对象的程序设计:OOP(Object Oriented Programming)
3、面向对象(Object Oriented )是认识事务的一种方法,是一种以对象为中心的思维方式
4、面向对象的程序设计:
对象=(算法+数据结构)
程序=对象+对象+……+对象
面向对象程序设计模拟自然界认识和处理事物的方法,将数据和对数据的操作方法放在一起,形成一个相对独立的整体——对象(object),同类对象还可抽象出共性,形成类(class )。一个类中的数据通常只能通过本类提供的方法进行处理,这些方法成为该类与外部的接口。对象之间通过消息(message)进行通讯。
我们把对象之间产生相互作用所传递的信息称做消息。
对象概念:是对类的具象化
1、C++将“向对象发消息”处理成“调用对象的某个成员函数”
世界上所有的事物都可以称为对象(Object)。对象可以是有形的如:一台电视机等。也可以是无形的如:帐户、一项记录等
2、一个对象就是一个独立存在的客观事物,它由一组属性和对属性进行操作的一组操作构成。
属性是对象静态特征的描述----->一般不改变的东西--->数据成员:数据值
操作是对象动态特征的描述----->一些技能-->成员函数:具体的实现过程
3、属性和操作是对象的两大要素。如电视的属性有:品牌、尺寸、重量等。操作有:收视、选台、音量调节等。
类的定义:抽象出对象共有的,本质的属性和行为
1、是一个抽象的概念,用来描述某一类对象所共有的、本质的属性和类行为
2、根据抽象的原则对客观事物进行归纳和划分
3、C++通过建立数据类型——类来支持封装和数据隐藏。一个定义完好的类可以作为独立模块使用。
4、类的定义格式分为说明部分和实现部分
说明部分包含数据成员和成员函数说明
实现部分是用来对成员函数的定义
5.在类的定义中只能声明数据成员,不允许对所定义的数据成员进行初始化。
封装和数据隐藏:
1、封装是指按照信息屏蔽的原则,把对象的属性和操作结合在一起,构成一个独立的对象。
2、通过限制对属性和操作的访问权限,可以将属性“隐藏”在对象内部,对外提供一定的接口,在对象之外只能通过接口对对象进行操作。
3、封装性增加了对象的独立性,从而保证了数据的可靠性。
4、外部对象不能直接操作对象的属性,只能使用对象提供的服务。
构造函数:
1、对于对象的初始化,采用构造函数(constructor)。编写一个或一组构造函数。构造函数是特殊的成员函数
2、构造函数的功能:为对象分配空间;对数据成员赋初值;请求其他资源。
3、如何声明构造函数:
(1)函数名和类名完全相同
(2)不能定义构造函数的类型(返回类型),也不能使用void
(3)构造函数应声明为公有函数,但它不能像其他成员函数那样被显式地 调用
(4)构造函数可以有任意类型和任意个数的参数,一个类可以有多个构造 函数(重载)
4.创建类的对象时,自动调用类的构造函数
5.创建一个对象时只调用一个构造函数(根据参数列表)且只在创建时调用一次
构造函数中使用默认参数:
1、可以为类的成员函数指定参数的默认值,包括构造函数在内。
2、要把默认参数值放在函数声明中,而不应放在函数定义中
3、如果一个构造函数的所有参数均有默认值,这时再定义无参数的默认构造函数无意义,将产生调用时二义性。
类的访问控制:
三个访问说明符:public、private和protected
作用:控制对类的成员的访问
在用class定义的类中,默认的访问方式是private(结构体的默认访问方式是public)
在类的定义中,三个访问说明符都可以使用多次(不提倡)。它们的作用域是从该说明符出现开始到下一个说明符之前或类体结束之前结束。
private:类的私有成员只能被类的成员函数、友元函数、友元类访问,类外无法访问他们
protected:类的受保护成员能被类的成员函数、友元函数、友元类和派生类成员函数访问
public:类的公有成员可以被类的成员函数、友元函数、友元类所有能访问到类的对象的外部程序代码直接访问,这部分往往是一些操作(即成员函数)
类的公有成员是类的对外接口