C++面向对象程序设计计算机与信息学院罗宪本课程的性质及学习目标
本课程是“计算机科学与技术”专业一门非常重要的专业技术基础课。是在,高级语言程序设计,的基础上学习面向对象分析与面向对象程序设计方法的一门课程,其后续课程主要有:,数据结构,,,数据库程序设计,,,可视化编程技术,等。
学习目标:
掌握面向对象程序设计的基本概念及基本思想;
掌握类、对象的概念及 C++语言实现方法;
掌握继承的概念及 C++语言实现方法;
掌握多态的概念及 C++语言实现方法;
掌握 C++语言模板、流类库的应用;
—— 初步建立计算机专业必备的面向对象程序设计思想。
几点要求:
认真听课
不缺勤、遵守课堂纪律
充分调动自己的学习的主动性、能动性
认真作好课堂笔记
认真预习、复习
养成阅读教材、参考书籍的习惯,做到课前的预习,特别是课后的复习
认真完成作业
认真完成上机实验
成绩确定:
考试成绩 70%,实验成绩 20%,平时成绩 10%;
平时成绩根据考勤情况、作业完成情况等确定;
实验成绩根据考勤及实验内容完成的情况确定。
推荐教材及参考书:
,面向对象程序设计,—— 刘正林编(华中科大出版社) —— 简称教材 ① ;
,C++面向对象程序设计教程,—— 陈维兴 林小茶编(清华大学出版社) —— 简称教材 ② 。
,C++面向对象程序设计,—— 王萍 冯建华编(清华大学出版社) —— 简称教材 ③
第一章 面向对象程序设计概述本章主要内容:
面向对象程序设计的概念
面向对象程序设计的特点教材相应的章节:
教材 ① 第 1章( P1-P9)
教材 ② 第 1章( P1-P16)
教材 ③ 第 9章( P207-P225)
第一节 面向对象程序设计的概念一、程序设计方法的演进
1、程序设计语言:机器语言 → 汇编语言 → 高级语言
(面向过程序的高级语言 → 面向对象的编程语言 → 面向对象的可视化编程语言)。
2、程序设计方法:程序设计的自然描述 → 结构化程序设计(面向过程的程序设计方法) → 面向对象的程序设计方法 → 面向对象的可视化编程方法。
3、结枸化(面向过程)程序设计方法与面向对象程序设计方法的关系。
观点 1:面向过程的程序设计方法可以作为面向对象程序设计方法的基础,学习面向对象的程序设计应具备面向过程的程序设计方法方面的知识。
观点 2:面向对象的程序设计方法与面向过程的程序设计方法在思维方法上与面向过程程序设计方法相背离,是独立的程序设计体系。
二、面向对象程序设计的基本概念
㈠ 面向过程程序设计的特点
面向过程程序设计思想的核心:功能分解
面向过程程序设计思想的主要特点:程序与数据相分离。即:
程序 =算法 +数据结构
面向过程程序设计思想的主要缺点:程序代码的可重用性差,维护代价高。
第一节 面向对象程序设计的概念第一节 面向对象程序设计的概念
㈡ 面向对象程序设计的基本概念面向对象程序设计将数据及数据的操作(算法)
当成一个整体。即:
程序 =(算法 +数据结构)
其主要思想:
面向对象程序设计,是把一些具有相同数据特性的实例抽象成为一个类,通过对类的定义和类的使用(即对象的使用)实现对实例的使用的 —— 面向对象程序设计是一种新的程序设计范型。
特点:
程序由类的定义及类的使用两部分组成,通常在主程序定义各对象并规定对象间传递消息的规律;
第一节 面向对象程序设计的概念
程序中的一切操作都是通过发送消息实现的,对象接收消息后,启动相应的消息完成相应的操作 —— 对象内、对象间采用消息传递机制;
面向对象的程序设计最主要的优点:软件的可重用性
面向对象的程序设计最重要的的概念:类与对象。
三,对象与类的概念
㈠ 对象的概念对象是我们认识世界的一些基本单元 ( 人或物等 )
例 【 1.1】 观察学生对象 。 如下表:
第一节 面向对象程序设计的概念对象名属性方法
(操作 )
对象名属性方法
(操作 )

张三性别,男年龄,21
学历,本科专业:
计算机吃饭上课实验锻练

李四性别,女年龄,20
学历,本科专业:
计算机吃饭上课实验锻练


表中各对象都是现实世界中一个客观实体,其特性是:
每一个对象均有一个名字;
用属性 ( 或称状态 ) 描述对象的某些特征;
通过一组操作来描述对象的各种行为 。
第一节 面向对象程序设计的概念例 【 1.2】 观察 WINDOWS下窗口的命令按钮:
每个命令按钮都有一个名字,如:,确定,,,取消,;
每个按钮都有一些属性,如:,长,高,颜色等,;
对每个按钮均可实现一些操作,如:,改变焦点,单击,双击,按回车键等,
总之,对象是现实世界一个个客观实体 。
㈡ 类的概念
如例 【 1,1】,对象,张三,,,李四,…,具有相同的一些属性,操作,将其抽取具体所描述的数据,
可抽象为一个类别 —— 类:即学生类 。
如例 【 1.2】,,确定,,,取消,按钮等可抽象为一个类 —— 命令按钮类 。
第一节 面向对象程序设计的概念
由此可知,类是对象的抽象 ( 如,学生,是对张三,
李四等的抽象,,命令按钮,是对确定,取消等的抽象 ) ; 对象是类的实例 ( 如张三是,学生,的一个实例,确定是,命令按钮,的一个实例 ) 。
在实际应用中,先定义一个类,然后再定义一个个具体对象 。
在面向对象程序设计中的定义,类是创建对象的样板,
它包含对创建对象的状态描述及操作行为的说明;对象是类的实例化 ( 对象变量,对象数组等 )
第二节 面向对象程序设计的特性面向对象系统的最突出的特性,封装性,继承性,多态性 。
一,数据的抽象与封装例 【 1,3】 现实社会中抽象与封装的例子:
家电设备 ( 电视机等 ) 的使用;
汽车的驾驶 。
㈠ 数据的抽象与封装的基本概念
1,数据的抽象
数据的抽象是对数据进行实例分析,抽取其共同性质的结果 。 如:
,学生,对象,先对一些学生实例进行分析,确定他们的共同特性或主要特性 ( 姓名,性别,年龄,专业等 ),忽略不同点或次要的引不起兴趣的那些特性 ( 长相差异,性格差异等 ) 。
思考,数据抽象是否与类有很强的相似性?
(数据抽象加上对数据的操作,即为类)
2,数据的封装
将 数据结构以及作用于数据结构上的操作组成一个实体,把数据的表示方式及操作细节隐藏起来,用户通过接口对数据进行操作 。 这样,用户就只知道操作接口对该数据进行操作,而不知道内部是如何做的以及如何表示的 — 数据的封装 。
例 【 1.4】 银行帐户的抽象与封装
分析:
用户关心的问题:存款、取款、转帐、查询、修改密码
数据结构:业主、帐号、余额、利息、密码等第二节 面向对象程序设计的特性第二节 面向对象程序设计的特性
数据的抽象与封装
WithDraw(取款 )
Transfer(转帐 )
Search(查询 )
Change_passwords
( 更改密码 )

balance( 余额 )
interestYTD( 年利息 )
owner( 业主 )
account_number( 帐号 )
passwords( 密码 )
…,
MakeDeposit(存款 )
WithDraw(取款 )
Transfer(转帐 )
Search(查询 )
Change_passwords( 更改密码 )
接口实现细节
(用户不可见)
用户第二节 面向对象程序设计的特性结论,抽象是抽取数据共同性质的结果,而封装则是隐蔽了抽象的内部实现细节的结果,是将数据抽象的外部接口与内部实现细节清楚地分离开 。
㈡ 对象的特性
1,封装性
2,模块独立性:每个对象都是一个独立的模块,
具有独立的计算能力,通过消息激活对象自身的动作;
3,动态连接性:通过消息传递机制将对象动态地联接在一起,使多个对象共同完成某项任务 。
4,系统的易维护性二,继承性
㈠,继承的概念例 【 1.4】 现实社会中继承的实例
教材 ① P8-P9中的例子
教材 ② P10-P11中的例子由此可知:
继承是将客观世界中一般和特殊关系模型化成层次结构;
通过继承可实现和增强代码的可重用性 —— 通过继承基类的属性,方法实现;
在创见新的派生类时,只要指明了派生类是由哪个基类派生的便可自动继承基类的属性和方法 。
修改或扩充程序功能时不必修改原代码 ( 增加新代码即可 ) 。
第二节 面向对象程序设计的特性第二节 面向对象程序设计的特性
㈡ 继承的几个名词:
基类 ( 父类,超类 )
派生类 ( 子类 )
直接基类及间接基类
㈢ 继承的分类
单继承
多继承第二节 面向对象程序设计的特性三、多态性
多态性:是指不同的对象在收到相同的消息时产生多种不同的行为。
多态性的例子。
,+”,2+3=5
设复数 a=2+3i b=3+4i 则,a+b=5+7i
(运算符重载)
max()函数的调用:
max(a,b)—— 求二个数之间的大最大数;
max(a,b,c) —— 求二个数之间的大最大数;
max(*p,n)—— 求 n个数的最大数。
(函数重载)