面向对象编程(OOP)
面向对象(Object Oriented )是认识事务的一种方法,是一种以对象为中心的思维方式
面向对象的程序设计:
对象=(算法+数据结构)
程序=对象+对象+……+对象
面向对象程序设计模拟自然界认识和处理事物的方法,将数据和对数据的操作方法放在一起,形成一个相对独立的整体——对象(object),同类对象还可抽象出共性,形成类(class )。一个类中的数据通常只能通过本类提供的方法进行处理,这些方法成为该类与外部的接口。对象之间通过消息(message)进行通讯。
我们把对象之间产生相互作用所传递的信息称做消息。
C++将“向对象发消息”处理成“调用对象的某个成员函数”
基本概念——对象
世界上所有的事物都可以称为对象(Object)。对象可以是有形的如:一台电视机等。也可以是无形的如:帐户、一项记录等。
一个对象就是一个独立存在的客观事物,它由一组属性和对属性进行操作的一组操作构成。
- 属性是对象静态特征的描述
- 操作是对象动态特征的描述
属性和操作是对象的两大要素。如电视的属性有:品牌、尺寸、重量等。操作有:收视、选台、音量调节等。
基本概念——类
类是一个抽象的概念,用来描述某一类对象所共有的、本质的属性和类行为。
类实根据抽象的原则对客观事物进行归纳和划分。

面向对象的基本特征
- 抽象
- 封装和数据隐藏(简单介绍)
- 继承
- 多态
封装和数据隐藏
封装是指按照信息屏蔽的原则,把对象的属性和操作结合在一起,构成一个独立的对象。
通过限制对属性和操作的访问权限,可以将属性“隐藏”在对象内部,对外提供一定的接口,在对象之外只能通过接口对对象进行操作。
封装性增加了对象的独立性,从而保证了数据的可靠性。
外部对象不能直接操作对象的属性,只能使用对象提供的服务。
抽象的设计思路
数据抽象化为属性
处理过程抽象化为操作(方法)
-例如:当建立一个图书管理系统时,通过直觉知道系统里一定要有图书管理员/读者/书这些对象, 而其中读者的行为含有借书/还书,学生还有其相应的学号/姓名/班级等内容
类的定义
C++通过建立数据类型——类来支持封装和数据隐藏。一个定义完好的类可以作为独立模块使用。
类的定义格式分为说明部分和实现部分
—说明部分包含数据成员和成员函数说明
—实现部分是用来对成员函数的定义
类的一般定义格式如下:
class <类名>
{
public :
<公有数据成员和成员函数>;
protected:
<保护数据成员和成员函数>;
private :
<私有数据成员和成员函数>;
};
class是定义类的关键字是数据类型说明符,<类名>是一个标识符,用于唯一地标识一个类(新的数据类型),类名后面花括号扩起来的部分是类体(Class Body)。
类体中定义了类成员表(Class Member List)
—数据成员(Data Member)
—函数(Member Function)
public、protected和private是访问限定符(access specifier)
一般在类体内先说明公有成员,它们是用户所关心的,后说明私有成员,它们是用户不感兴趣的,但此顺序并不是必须的。
***注意:
①在类的说明部分之后必须加分号“;”。
②类的定义放在一个头文件中(.h),供其它需要使用该类的文件包含
③类的实现部分放在一个源文件中(.cpp),该文件需要包含定义类的头文件
④类的定义和实现可以放在一个文件里,但不提倡,因为结构不清晰,影响了程序的可读性
数据成员(属性)
类中的数据成员的类型可以是任意的,可以定义各种类型的变量、指针、数组等,甚至是其他类的对象。
在说明数据成员时,一般按数据成员的类型大小,由小到大说明,这样可提高空间利用率。
在类的定义中只能声明数据成员,不允许对所定义的数据成员进行初始化。
类的数据成员只能在类里声明,类的数据成员最好都是私有的
外部函数需要修改它,一般也只给它提供公有函数接口,让它通过类的公有成员函数访问类的私有数据数据成员也可以放在public部分,但不提倡
成员函数(方法)
成员函数可以直接使用类定义中的任一成员,可以处理数据成员,也可调用成员函数。
类的成员函数定义通常可采取两种方式,即外部定义和内部定义(不推荐!影响到了程序的可读性)。
成员函数的实现一般放在类的外面,在类里面对函数的原型进行声明
成员函数的实现在类的定义外面时,必须声明其所属,在函数名前加类名和作用域运算符“::”,用来表示某个成员函数属于哪个类的,定义格式如下:
返回类型 类名::成员函数名(参数说明)
{
函数体
}
类成员函数的实现也可以放在类里,不需要加类名和作用域运算符
访问控制
三个访问说明符:public、private和protected
作用:控制对类的成员的访问
在用class定义的类中,默认的访问方式是private
在类的定义中,三个访问说明符都可以使用多次(不提倡)。它们的作用域是从该说明符出现开始到下一个说明符之前或类体结束之前结束。
访问符说明
private:类的私有成员只能被类的成员函数、友元函数、友元类访问,类外无法访问他们
protected:类的受保护成员能被类的成员函数、友元函数、友元类和派生类成员函数访问
public:类的公有成员可以被类的成员函数、友元函数、友元类所有能访问到类的对象的外部程序代码直接访问,这部分往往是一些操作(即成员函数)
类的公有成员是类的对外接口
类的功能
类定义了函数(方法)和数据(属性)的访问控制属性
—哪些成员可被外界直接访问
—哪些成员只能被自己的成员函数访问
封装和信息隐藏技术使类变得很安全
私有数据成员只有类自己的成员函数能访问
只要确保成员函数操作的合理合法性,对象就是安全的
提高了程序的可维护性
对象的定义
对象是类的实例。对象是属于某个已知的类。
定义对象之前,一定要先定义好该对象的类。
定义好的类可以作为新的数据类型来使用
声明的语法:类的名称 对象的名称;
例如:
例如:
Stack oneStack; //Sta

——C++面向对象设计和使用&spm=1001.2101.3001.5002&articleId=115315916&d=1&t=3&u=05f14f0e1f174d4eacf8c067f2471157)
4984

被折叠的 条评论
为什么被折叠?



