1.概述
在程序设计的早期程序员要解决的问题简单,程序员专业技术不足,采用的面向过程编程设计,导致编写的代码难以维护。随着编程技术规模越来越庞大,利用面向对象方法来编写管理这些程序变得越来越必要。
1.1过程编程、结构化编程和面向对象编程
面向过程的编程方法,其程序是其函数的基础上构建的。这种技术的核心是对构成程序的 函数进行设计、组织和实现。
面向对象的编程方法中,程序提供一种管理极其复杂的技术,实现软件组件的可重用性。面向对象编程的实质将“对象”在为模型,而不是“数据”。用作模型的对象可以是屏幕上界面,如按钮/列表。也可以是现实世界的对象。如牛,马等。
对象具有特性(如:快、宽敞、褐色、湿度),也具有性能(如加速、飞、叫声等)。在编程语言中描述这些对象是面向对象编程的工作。
2.面向对象的编程通常具备以下特征:
a.模拟真实世界的活动。
b具备用户自定义的类型。
c。隐藏实现的细节。
d。通过继承来重用代码
c。允许不同的功能使用相同的名称。
3理解面向对象技术的四个主要概念.
理解面向对象技术 的抽象、封装、模块和分层结构四个主要概念后,令我们清晰理解其中的特征。
3.1抽象、封装和模块化之间区别和联系:
在抽象、封装和模块化之间存在一种协同关系。具有良好定义的逻辑边界的实体格式,封装和模块化有助于抽象周围提供安全性:封装隐藏了实际的细节,而模块化则允许我们将逻辑上相关的抽象分组在一起。所以,封装和模块化确保“干净“的接口对实体的任何用户可用。消息通过这些接口进行传递。从而确保实体的状态。实体的状态是属性以及这些属性当前在任何给定实例上获得值,
3.1 抽象
面向对象的建模是“抽象”的概念发展而来 ,用来管理真实世界的复杂问题。要求解决方案必须能够解决多元化问题。抽象为解决复杂性问题提供一种理想解决方案,令我们集中于手中主要问题,忽略不需要的细节。要满足客户需求来抽象接口,实现接口,不要凭自己兴趣随意成抽象接口。这是区分面向对象的关键。
随着对象变得越来越复杂,有必要为用户隐藏对象不重要的细节。每个对象通常有两种状态。函数的原型充当接口,而定义函数的算法就是接口所承诺的的行为的实现。
a、接口(interface):向真实世界显现实体时所采取的方法称为“接口”。
b、实现(implement):帮助实体执行其函数的时所采取的过程称为“实现”
区分面向对象方法:
1.对真实世界进行抽象时,只需对实体
例如:通过堆x的实例来看一下在面向对象的世界中接口和实现意味着什么?
堆x提供操作如下:
1.将一项压入堆x
2.将一项弹出堆x
3.查找堆x中最顶层的一项。
4.检查堆x是否为空
堆x的实体提供的接口表示可以在这些实体上执行的操作。
a.堆x的接口如下:
void push(stack ,int);
int pop(stack);
int top(stack);
int isEmpty(stack);
b.D 堆x的实现包含于高效算法
4. 封装
能够成为自包容单元的属性称为封装。利用封装实现数据隐藏,可以不了解每个对象的内部工作流程就可以使用它。C++通过创建类支持封装的属性。类的内部工作原理被隐藏,用户只需知道如何使用它,
5.继承和重用
当a汽车公司要造车时有两种选择:要吗从头开始做起,要吗修改一个现有车型。工程师不想从新设计一款新车,利用strar车型加载一个变速箱和一个涡轮增压器,就变成一款新车。新车命名为Quaaser ,新车也是star车型的一种,只是增加了新特性(这就是继承旧车的)。
C++中支持继承。可以说明一个新类型作为旧类型的扩展,这个新的子类从已有类型类型中派生。
例如:Quasar从start派生,它继承了star的所有品质,只是添加新的功能。
6.多态性
对于新车quasser车型踩下油门时作出不同star车型的反应,queer可能喷射燃油并确定涡轮增压器,而start车型让汽油进入化油器。
c++支持这种想法,即通过所谓函数多态性和类多态性不同对象做相同的事,。多态性是指同一个名称的函数和类有多种形式。