第一章 面向对象的概述
面向过程:将数据和对数据的操作分成独立的实体
面向对象:将数据和对数据的操作集合成一体构成一个对象,将同一类型对象抽象出其共性,形成类。后半句指的是什么?
类中的数据:通过本类方法来处理
类通过外部接口与外界联系
对象之间通过消息进行通信
面向对象程序设计语言必须支持抽象数据类型和继承性
一、基本概念
1>对象:是其自身所具有的特征和对这些状态施加的操作结合在一起构成的独立实体。
对象的特性:模块独立性(封装)、动态连接(通过消息激活机制,把对象之间动态的联系连接在一起)、易维护
2>消息:消息的具体表现为函数,是对象之间相互请求或相互协作的途径,是要求某个对象执行其中某个功能操作的规格说明。
公有消息:外界对象发送的消息
私有消息:自身对自己发送的消息
3>类:对所遇到的若干同类对象进行分析,归纳出它们的共同特性,包括数据特性和行为特性,建立一个类。
类是对多个对象的抽象描述,而对象是类的实例。
例如:王洋是一个老师,老师是一个类,王洋是一个实例。
二、面向对象的基本特性
封装性、继承性、多态性
封装性:将抽象出来的数据和操作封装在类中,外界只能通过接口对类中的数据进行操作,也就是达到了对数据访问权限的合理控制。
特点:对象的私有数据和内部数据是不能直接访问的;外界不能修改对象内部代码的实现细节;有外部接口。
继承性:类之间虽然是独立的但是类之间也会出现相似的特征,继承性就指的是类与类之间的相交关系。
继承分为单继承和多继承。
优点:清晰的体现了相关类之间的层次关系;增加程序的重用性;通过增强一致性来减少模块之间的接口和界面,提高了程序的可维护性;可以实现类的扩充
多态性:
编译时的多态性,通过重载来实现
具有相同名字的函数或运算符在不同的场合可以表现出不同的行为,即函数和运算符重载。定义函数重载的时候函数名要相同,但是函数所带参数的个数或者参数类型必须有所区别否则会出现二义性。
运行的多态性,通过虚函数来实现
虚函数使得用户可以在同个类族(基类及其各级派生类)中使用同名函数的多个版本,每个版本均属于同个类族中的不同的类。究竟使用哪个版本,需要在运行中决定。虚函数中的各个版本中,其返回值、函数参数的个数和类型必须一致。
三、从C过渡到C++
1>函数原型
函数原型,包括所有函数的返回值类型、函数名和函数的各个参数的类型。
2>变量的说明,在C++程序中,变量的定义可以出现在任何位置
3>输入和输出,流式输入输出,引入头文件“iostream.h”,其中“>>”("<<")是输入(输出)运算符。不同类型的变量可以组合在一条语句中,编译程序在检查时,根据出现在“>>”("<<")操作符右边的变量或变量的类型来决定如何输入(输出)该数据。
4>const说明符
(1)用来代替传统的#define宏类定义常量。
#define MAX 100用const int MAX=100
//标示符常量 即 “常变量”
(2)定义指针常量
const char *name="Richard";//指针所指的内容不能修改,指针的指向(地址)可以修改
char *const name="Richard";//指针所指的内容可以修改,但指针的指向(地址)不能修改
const char *const name="Richard";//指针的内容,指向(地址)均不能修改