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个概念:
方法:类的成员函数
消息:对公有成员函数的调用
如果在一个项目开发里面涉及到很多个类,可能几百上千个类,那么类和类之间的关系式错综复杂的,如果在设计这样的程序里面,我要把每一个类里面的细节都搞清楚,这样的认知成本就太高了。而现在有了封装和信息隐藏,在整个团队里面,我们只需要知道类的公用接口就可以了,而不需要知道它的私有实现。分工明确,开发效率高。
面向对象的程序设计特性:
封装性
将数据和相关的代码封装在一个对象中。各个对象之间相对独立,互不干扰。
将对象的数据隐藏,隐藏内部实现的细节,只留下一部分接口。
抽象性
类是对象的抽象,对象是类的特例。
继承性
把最重要的特征,解决软件的重用。
多态性
由继承性产生相关不同的类。不同的对象,对象对同样的消息会做出不一样的反应。
基于对象的程序设计: 封装 抽象
面向对象的程序设计:封装 抽象 继承 多态.
版权归原作者 Technical^Blog 所有, 如有侵权,请联系我们删除。