C++面向对象程序设计——概述(对象、类、抽象、封装、继承、多态)

前言:今天第一次上C++课程。根据老师的所讲内容进度,记录C++知识!!!

第一章

问题一:什么是面向对象程序设计?
面向对象程序设计是一种新的程序设计范型。主要特征是:程序=对象+消息
面向对象程序设计的基本元素是对象,面向对象程序的主要结构特点是:
1. 程序一般由类的定义和类的使用两部分组成;
2.程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。这种方法的提出是对软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
补充:
1.程序设计范型是指设计程序的规范、模型和风格,它是一类程序设计语言的基础。
2.面向过程程序设计的特征:程序=过程+调用
问题二: 什么是对象?什么是类?对象与类的关系是什么?
对象:在现实生活中,任何事物都是对象。它可以是一个有形的具体存在的事物(一张桌子,一个学生,一辆汽车);它也可以是一个无形的,抽象的事物(一次演出,一场球赛,一次出差)。对象既可以很简单,也可以很复杂,复杂的对象可以由若干简单的对象构成。对象一般可以表示为:属性+行为,一个对象往往是由一组属性和一组行为构成的。在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。在C++中每个对象都是由数据和操作代码(通常用函数来实现)两部分组成的。
类:在现实世界中,“类”是一组具有相同属性和行为的对象的抽象。类和对象之间的关系是抽象和具体的关系。类是对多个对象进行综合抽象的结果,对象又是类的个体实物,一个对象是类的一个实例。
在面向对象程序设计中,“类”就是具有相同的数据和相同的操作(函数)的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
问题三:现实世界中的对象有哪些特征?请举例说明。
现实世界中的对象,具有以下特征:
(1)每一个对象必须有一个名字以区别于其他对象;
(2)用属性来描述它的特征;
(3)有一组操作,每组操作决定对象的一种行为;
(4)对象的行为可以分为两类:一类是作用于自身的行为;另一类是作用于其他对象的行为。
问题四:什么是消息?消息具有什么性质?
在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。当对象接收到发向它的消息时,就调用有关的方法,执行相应的操作。例如:有一个教师对象和一个学生对象,学生可以发出消息,请求老师演示一个实验,当老师接收到这个消息后,确定应完成的操作并执行之。
消息具有以下三个性质:
(1)同一个对象可以接收不同形式的多个消息,作出不同的响应;
(2)相同形式的消息可以传递给不同的对象,所作出的响应可以是不同的;
(3)对消息的响应并不是必须的,对象可以响应消息,也可以不响应。
问题五:什么是抽象和封装?请举例说明。
抽象是将有关事物的共性归纳、集中的过程。抽象是对复杂世界的简单表示,抽象并不打算了解全部的问题,而只强调感兴趣的信息,忽略了与主题无关的信息。例如:在设计一个成绩管理程序的过程中,只关心学生的姓名、学号、成绩等,而对他的身高体重等信息就可以忽略。而在学生健康信息管理系统中,身高、体重等信息必须抽象出来,而成绩则可以忽略。
抽象是通过特定的实例抽取共同性质后形成概念的过程。面向对象程序设计中的抽象包括两个方面:数据抽象和代码抽象(或称为行为抽象)。前者描述某类对象的属性或状态,也就是此类对象区别于彼类对象的特征物理量;后者描述了某类对象的公共行为特征或具有的公共功能。
在现实世界中,所谓封装就是把某个事物包围起来,使外界不知道该事物的具体内容。在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。
下面以一台洗衣机为例,说明对象的封装特征。首先,每一台洗衣机有一些区别于其他洗衣机的静态属性。如出厂日期、机器编号等。另外,洗衣机上有一些按键,如“启动”、“暂停”、“选择”等,当人们使用洗衣机时,只需要根据需要按下“选择”、“启动”或“暂停”等按键,洗衣机就会完成相应的工作。这些按键安装在洗衣机的表面,人们通过他们与洗衣机交流,告诉它应该做什么。我们无法(也没必要)操作洗衣机的内部电路和机械控制部件,因为它们被装在洗衣机里面,这对于用户来说是隐蔽的,不可见的。
问题六:什么是继承?并举例说明。
继承所表达的是类之间的相关关系,这种关系使得某类对象可以继承另外一类对象的特征和能力。现实生活中,继承是很普遍和容易理解的。例如:我们继承了父母的一些特征,如种族、血型、眼睛的颜色等,父母是我们所具有的属性的基础。
以面向对象程序设计的观点,继承所表达的是类之间相关的关系。这种关系使得某一类可以继承另一类的特征和能力。
问题七:若类之间具有继承关系,则它们之间具有什么特征?
(1)类间具有共享特征(包括数据和操作代码共享)
(2)类间具有差别或新增部分(包括非共享数据和操作代码)
(3)类间具有层次结构
假设有两个类A和B,若类B继承类A,则B包含了A的特征,同时可以加入自己所特有的新特征。我们称被继承类A为基类或父类;而称继承类B为A的派生类或子类。即类B是从类A中派生出来的。
问题八:什么是单继承、多继承?请举例说明。
从继承源上分,继承分为单继承和多继承。
单继承是指每个派生类只直接继承一个基类的特征。多继承是指多个基类派生出一个派生类的继承关系。
问题九:什么是多态性??举例说明。
面向对象系统的多态性是指不同的对象收到相同的信息时执行不同的操作。例如:
有一个桌子类对象,还有一个棋子类对象,当我们对他们发出“移动”的消息时,两个类对象可以有不同的行为。
C++语言支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载(包括运算符重载)来实现的,运行时的多态性是通过虚函数来实现的。
问题十:面向对象程序设计的主要优点是什么?
面向对象程序设计本质上改变了人们以往设计软件的思维方式,从而使程序设计者摆脱了具体的数据格式和过程的束缚,将精力集中于要处理对象的设计和研究上,极大地减少了软件开发的复杂性,提高软件开发效率。优点如下:
(1)提高程序的重用性
(2)控制程序的复杂性
(3)改善程序的可维护性
(4)能更好地支持大型程序设计
(5)增强计算机处理信息的范围
(6)能更好地适应新的硬件环境
面向对象程序设计是目前解决软件开发面临难题的最有希望、最有前途的方法之一。

听说C++是一门很难的课程,希望通过上课、自习、复习我能学好它。加油!!!!

你可能感兴趣的:(C++笔记)