0x00 前言
文章中的文字可能存在语法错误以及标点错误,请谅解;
如果在文章中发现代码错误或其它问题请告知,感谢!
本文档为个人边学习边记录的C++笔记,非教程,笔记中会存在引用他人文章内容的部分,被引用的原文不会被特殊标记出来,但会在参考文档中给出原文链接。
0x01 面向对象方法
1.面向对象方法由来
面向对象方法出现以前,设计程序的方法采用的是面向过程的程序设计方法。因为随着计算机的硬件和性能越来越强大,用途也更加广泛,程序也就也来越复杂和庞大,所以为了使用程序很好的解决复杂问题,20世纪60年代产生结构化程序设计思想,该思想是面向过程的程序设计方法,结构化程序设计的思路是:
·自顶向下、逐步求精;
·其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构;
·各模块之间的关系尽可能简单,在功能上相对独立;
·每一模块内部均是由顺序、选择和循环3中基本结构组成;
·其模块化实现的具体方法是使用子程序。
结构化程序设计(面向过程设计)把数据和处理数据的过程分离成相互独立的实体,当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
一个好软件可以随时响应用户的任何操作,而不是按照既定的步骤来使用,比如一个好的文字处理软件可以随心所欲的使用,软件功能很难用过程来描述和实现,如果用面向过程的方法,开发和维护都很困难。
所以提出面向对象设计方法。面向对象设计方法可以将数据以及对数据操作的方法放在一起,作为一个相互依存、不可分离的整体——对象。对同类型的对象抽出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。这样,程序模块间的关系,更为简单,程序模块的独立性、数据的安全性就有了良好的保证。
2.面向对象的基本概念
1)对象
面向对象方法的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。对象由一组属性和一组行为构成。属性是静态特征,可以用某种数据来描述;行为是动态特征,表示对象所表现的行为或具有的功能。
2) 类
类是具有相同属性和服务的一组对象的合集。分类所依据的原则是抽象,即忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。
3)封装
封装是一个面向对象方法的一个重要原则,就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。这里有两个含义:对象的全部属性和服务结合在一起,形成一个不可割裂的独立单位;尽可能隐蔽对象的内部细节,对外形成一个边界(屏障),只保留有限的对外接口使之与外部发生联系。
4)继承
特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。继承类对于软件复用有着重要的意义,使特殊类继承一般类,本身就是软件复用。不仅与此,如果将开发好的类作为构件放到构件库中,在开发新系统时便可以直接使用或继承使用。
5)多态性
多态性是指在一般类中定义的属性或行为,被特殊类继承后,可以具有不同的数据类型或表现出不同的行为。
《C++语言程序设计(第4版)》书上所有章节出现的示例源代码随着学习的深入会陆续上传至github,代码为个人手动输入并通过编译,有的示例代码可能没有注释:https://github.com/fyw4/C-plus-plus-learning-example
以上。
参考文档:
郑莉 董渊 何江舟.《C++语言程序设计(第4版)》[M].北京:清华大学出版社。