1.对象(object)
1.一切皆是对象。如下图:
- ·女人是一个对象
- ·鞋子是一个对象
- ·包包是一个对象
- ·衣服是一个对象
- ·裤子是一个对象
- ·手链是一个对象
- …
2.对象由对象组成.
这里人这个对象,由鞋子、包包、衣服、 裤子、手链等对象组成。 3.每个对象都有:
- a)数据(描述对象的属性)
- b)函数(行为操作代码)
2.类(class)
- ·具有相同属性和行为的对象,我们可以把它抽象为类。
- ·类是对象的抽象
- ·对象是类的特例
.
3.面向对象的程序设计(OOP)
·面向过程的程序设计(Process oriented programming) 在面向过程时,我们重点围绕功能,用一个函数去实现一个功能。
·面向对象的程序设计(Object oriented programming) 在面向对象时,我们重点去描述对象的数据和功能。
a)设计所需的各种类。 b)定义各种各样的对象。 c)向相关的对象发送消息,完成具体的任务。
4.类的声明和对象的定义
1.设计类 关键字class
- ·成员函数
- 访问权限
private –私有的 私有的成员只能在类的内部访问 public –公有的 公有的成员才可以在类的外部使用 protected –受保护的 先放一放。继承
为了考虑到封装和信息隐藏 ,我们一般的使用原则是: 数据成员 都用private 成员函数 都用public
1.只在类的内部声明数据成员和成员函数。 2.在类的外部定义类的成员函数。 3.记得加上类的作用域。
class和struct的区别
class 的默认权限是private struct的默认权限是public
2.定义对象
·先声明类 再定义对象
·声明类的同时,定义对象
·省略类名 直接定义对象
3.访问对象的函数
对象名.函数名;
4.命名规范 ·类名首字母大写 ·对象名首字母小写
5.并非所有的成员函数都必须是公有的 ! 如果一个成员函数,它只需要在类的内部使用,也就是这个函数只被类中的其他成员函数调用,而不需要再类的外部使用,那我们将它作为私有的成员函数。
5.类的成员函数
1.访问权限: ·一般将需要被外界调用的成员函数指定为public,这是类对外的接口。 ·若函数只在类的内部调用,用来完成其他成员函数的功能,应该指定为private。 ·成员函数可以访问本类中任何的成员,无论他是私有的还是公有的。 2.inline成员函数 内置函数 内联函数: ·使用内联函数节省时间,增加目标程序的长度。 ·将规模很小,使用频繁的函数声明为内联函数。 ·内联函数不能包含复杂的循环语句和switch语句。 ·inline只是程序员对编译系统的建议。 inline成员函数: ·在类的内部直接定义的函数将被隐式地指定为内联函数。 ·在类的外部显式地声明内联函数。声明 定义 inline
对象的存储方式:
- ·各个数据分开存储。
- ·成员函数共享内存。
- ·跟访问权限无关。
6.访问对象成员 ·私有成员只能在成员函数中引用。直接使用成员名即可。 ·公有数据成员可以在类外访问public,但是考虑到封装和信息隐藏。不要这样做。 ·公有成员函数可以在类外访问,这是类对外的接口。
1.访问对象中成员的3种方法: ·对象名+成员运算符 ·指向对象的指针 + 指向运算符 ·对象的引用变量 + 成员运算符 2.私有数据成员如何访问? 私有数据成员,只能通过成员函数 访问。
如果要获取私有数据成员的值。 返回值: 指针: 引用: 这种set和get函数去设置和获取私有数据成员是很多设计者常用的方法。几乎已经成为惯例。 7.类的封装与信息隐藏 函数的原型: 函数的封装性: 1.函数的功能是什么? 2.函数的名字是什么? 3.函数有几个参数? 4.每一个参数的类型是什么? 5.函数的返回值是什么? 函数的内部: 1.采用什么样的计算方法? 2.采用什么样的程序结构? 3.怎样得到计算结果? 4.怎么返回数据? 5.性能如何保证?
这样的话,有些人专注于函数内部的具体实现。有些人则只需要知道函数怎么用就可以了。对于一个开发团队来讲,这样的设计绝对是恰到好处的。
对于类来说也是同样的道理: ·C++通过类来实现封装性,把数据和跟数据相关的函数封装在类中。 ·声明一个类之后,用户只需要调用类的公用接口 来实现具体的功能—消息传递 ·用户不必关心功能是如何实现的,只需要知道用哪一个函数可以实现什么样的功能–信息隐藏 ·类中被操作的数据是私有的,函数的实现细节是隐蔽的–私有实现
补充2个概念: 方法:类的成员函数 消息:对公有成员函数的调用
如果在一个项目开发里面涉及到很多个类,可能几百上千个类,那么类和类之间的关系式错综复杂的,如果在设计这样的程序里面,我要把每一个类里面的细节都搞清楚,这样的认知成本就太高了。而现在有了封装和信息隐藏,在整个团队里面,我们只需要知道类的公用接口就可以了,而不需要知道它的私有实现。分工明确,开发效率高。
面向对象的程序设计特性: 封装性 将数据和相关的代码封装在一个对象中。各个对象之间相对独立,互不干扰。 将对象的数据隐藏,隐藏内部实现的细节,只留下一部分接口。
抽象性 类是对象的抽象,对象是类的特例。
继承性 把最重要的特征,解决软件的重用。
多态性 由继承性产生相关不同的类。不同的对象,对象对同样的消息会做出不一样的反应。
基于对象的程序设计: 封装 抽象 面向对象的程序设计:封装 抽象 继承 多态.
|