1、 结构化程序设计
程序 = 算法 + 数据结构
算法第一,数据结构第二
2、面向对象程序设计OPP
程序 = 对象 + 对象 +...
关键:让每一个对象负责执行一组相关任务
3、面向对象编程开发范式的特性
万物皆对象
程序是一组对象彼此之间在发送消息 ( 对象之间的交互构成了程序的逻辑 )
每个对象都有自己的内存占用,可以组装成更大对象
每个对象都有类型,特定类型的所有对象可以接收相同的信息
4、类的概念
类 是创建对象的模板和蓝图 , 是一组类似对象的共同抽象定义
5、对象的概念
对象是类的实例化结果 , 对象是实实在在的存在,代表现实世界的某一事物。 (比如 类是车 , 对象是楼下的奥迪车)
6、对象的三大关键特性
行为:对象能干什么 (比如 能载人)
状态:对象的的属性,行为的结果 ( 比如 车的价格 车的车速)
标识:对象的唯一身份 (比如 车的车牌号)
7、类和对象的区别
类是静态定义 , 对象是动态实例 , 程序代码操作的是对象而非类, 建模得到的是类而非对象
类和对象的联系
类是对象的定义 , 对象的产生离不开类这个模板 , 类存在的目的是实例化得到对象
8、 从 对象 抽象出 类
将对象和对象的共同点 抽象出来,可以构成一个类。
9、定义一个类的步骤
<1>定义类名
<2>编写类的数据成员代表属性
<3>编写类的方法代表行为
10、类的建模是一个抽象和封装的过程。
抽象:去掉不关注的、次要的信息而保留重要的信息
封装:信息打包
<1>具体一点就是:将数据和行为结合在一个包中,对对象的使用者隐藏数据的实现方式
<2>实现封装的关键:不能让类中的方法直接访问其他类的内部数据,只能通过公开行为方式间接访问(比如你不能直接查询别人的银行卡里的余额,但是能通过直接问的方式获知该数据)
11、在C++中类和结构体的区别
在C++中只有两点区别: (主要体现在安全性上)
(1)class中默认的成员访问权限是private的,而struct中则是public的。
(2)从class继承默认是private继承,而从struct继承默认是public继承。
除此这外无任何区别。
结构体能做到,类都能做。
12、在类中定义成员函数并声明 ----在.h文件中 //////当然也可以自在类中定义函数,然后在源文件内声明函数
在C++中,类定义通常在头文件中,因此这些成员函数定义也伴随着
# include<iostream> using namespace std; class Nian { public: void set(int y,int m,int d) { year = y; month = m; day = d; } bool IsRun() { if((year%4==0 && year%100!=0)||year%400==0 ) { return true; } else { return false; } } void print() { cout<<year<<"/"<<month<<"/"<<day<<endl; } private: int year,month,day; };
# include<iostream> # include<stdlib.h> # include"year.h" //要用双引号 using namespace std; int main() { Nian a; //利用类 创建对象 a //注意:a.day =1 是错误的 因为在main方法中,不可以访问pravite权限的值 a.set(2004,5,4); bool k = a.IsRun(); cout<<k<<endl; a.print(); system("pause"); return 0; }
13、在类之后定义 成员函数
<1>C++允许在其它位置定义成员函数
<2>将类定义和其成员定义分开,是目前开发程序的通常做法
<3>我们把类定义(头文件)看成是类的外部接口,类的成员函数定义看成是类的内部实现
14、重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法
<1>类的成员函数可以像普通函数一样重载
<2>但不同类即使有相同的函数名也不算重载
15、类的成员函数可以像普通函数一样设置默认值
# include<iostream> using namespace std; class Nian { public: void set(int y=2001,int m=1,int d=1) { year = y; month = m; day = d; } } private: int year,month,day; };
16、调用成员函数必须指定对象和成员名
month = 10; 这是错误的,没有指定对象而且还可能不是成员名 是变量
Nian::month = 10; 这是错误的,没有指定对象
Nian::set(2004,1,5); 这是错误的,没有指定对象
17、this指针代表当前对象占用内存空间的地址
void set(int y,int m,int d) { this->year = y; this->month = m; this->day = d; }