电子科技大学计算机学院电子科技大学计算机学院
黄迪明
11
第一章
C++入门
../../../Web/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%BD%91%E7%BB%9C%E8%AF%BE%E4%BB%
一、面向对象的方法是在计算机语言发展过程
中产生的。
早期:机器语言、汇编语言
50年代中期:FORTRAN语言引进了许多现
代仍然使用的程序设计概念。
50年代后期:ALGOL60提出块结构的思想。
60年代:SIMULA67首先提出对象和类的概
念,并支持类的继承,是面向对象语言的鼻祖
70年代:ADA不能全面地支持继承,称为基
于对象的语言。
§ 面向对象的由来和发展
后来出现的Smalltalk是最有影响的面
向对象的语言之一。
80年代中后期以后,随着面向对象的程
序设计语言的广泛应用,出现了更多的面向
对象的语言。
面向对象的语言可分为以下两类:
1、开发全新的面向对象的语言
Object—C Eiffel Smalltalk80
2、对传统语言进行面向对象的扩展,称为混
合型语言,其代表有C++语言。
增加面向对象程序设计的支持增加面向对象程序设计的支持
支持传统的面向过程的程序设计
C++C
C++ 语言具有C语言的丰富的应用基础和开发
环境的支持,对于已经掌握C语言的人讲,更
易学易普及。
二、从C到C++
C语言是贝尔实验室为DEC公司开发PDP
系列计算机操作系统时研制的。
C作为UNIX操作系统的开发语言而广为应用
和流行。1989年制定为ANSI C标准。
1、语言简洁、紧凑,使用方便、灵活。
2、运算符和数据类型丰富。
3、访问内存地址、寄存器、进行位操作,
具有汇编语言的功能。
4、生成的目标代码质量高、程序运行效率高。
C语言的独有特点是:
局限:
1、对类型的检查机制相对较弱、程序中的
一些错误不能在编译时发现;
2、无支持代码重用的语言结构;
3、当程序规模达到一定的程度时,难以控
制程序的复杂性;
为满足管理程序复杂性需要,1980年,贝
尔实验室对C进行了改进和扩充:
“带类的C”C
1983年取名为C++,后经过三次修订。
1994年制定了ANSI C++标准的草案。
1、C++是C的扩展,C是C++的子集,C++ 包
括C的全部特征、属性和优点。同时,增加了对
面向对象编程的完全支持。
2、与C 一致, C++程序结构采用函数驱动机
制实现。
3、C++实现了类的封装,数据隐藏、继承及
多态,使其代码可重用并容易维护。
4、C++是一门高效使用的程序设计语言,既
可进行过程化程序设计,又可进行面向对象程
序设计。
C++的特点
在面向过程的程序设计中,程序是处理数
据的一系列过程。过程(或函数)定义为实
现特定功能的一组指令。
其主要设计思想是功能分解并逐步求精。
数据与程序过程分开存储,编程的主要技巧
在于关注模块之间的调用关系及数据的变化。
§ 面向过程的程序设计
1、当数据量增大时,数据与处理这些数
据的方法之间的分离使程序变得越来越难以
理解。
2、相对于老问题的新方法都要带来额外
的开销,程序的可重用性小。
面向过程程序设计的主要缺点
面向对象程序设计 OOP (Object-Oriented
Programming)的三要素:
对象、类和继承
面向对象程序设计的实现需要:
封装和数据隐藏技术
继承和多态性技术
§ 面向对象程序设计
1、封装和数据隐藏
什么是对象?
概念上:在问题空间中,将客观世界的实
体称为对象。对象可以是人、物、事件、规则、
概念等。
例如:开发一个商品销售系统。
实现上:把数据和处理数据的过程(操作
或方法)当成一个整体,这个封装体就称为对
象。
数据1
…….
数据n
操作1
…….
操作n
状态
(数据结构和值)
方法
对象的模型结构
例如:电脑装配声卡,早点销售点
无须知道封装体内部是如何工作就能使用的
思想称为数据隐藏。
对象实现了信息隐藏;
对象与外部通过操作接口联系,操作接口提
供了对象的功能,操作的具体实现外部是不可
见的。
对象之间是通过消息传递信息。
对象是由特定的类创造的,什么是类?
类是创建对象的样板,它包含着所创建对象
的状态描述和方法的定义。
由一个特定的类所创建的的对象也称为
这个类的实例。
一个类的所有对象都有相同的数据结构,
并且共享相同的实现操作的代码,而各个对
象又有具体的不同的状态。类和对象类似于
面向过程语言中数据类型和变量。
例如:学生类和某个学生对象。
2、继承和重用
制造一种新型号的电视机可以有两种选择:
1)从草图开始重新设计
2)对现有型号加以改进(继承和重用)
C++采用继承机制支持重用,不仅可重用具
有特定功能的类,而且继承可以由已有的类
创造新的类。
新类共享已有类的属性,自己还具有额外
添加的属性,新类是从已有类派生的,称为派
生类或子类,已有类称为父类或基类。
在客观世界中,存在着整体和部分的关系、
一般和特殊的关系,继承将后者模型化。
汽车类, 各类汽车
昆虫类, 各类昆虫
3、多态性
封装性、继承性、多态性是构成面向对象
程序设计的三大特征。
封装性是基础
继承性是关键
多态性是补充
什么是多态性?
多态是指一个名字有多种语义,或一个相
同界面有多种实现;
或是指发出同样的消息被不同类型的对象
接受而导致完全不同的行为。即对象根据所
接收到的消息做出相应的操作。
例如:在学籍管理系统中
学生类(基类)
计算成绩的操作
中学生类(派生类)
计算成绩的操作
大学生类(派生类)
计算成绩的操作
又如:在绘图系统中使用的多态性。
函数重载和运算符重载表现了最简单的多态性。
函数重载:
Void f(int,int,char);
Void f(char,float);
Void f(int,int);
Void f(int,float);
运算符重载:
为运算符+ - * / 等赋以新的含义,以
实现类对象的运算。
编译错
连 接
编 辑
编 译
运 行
连接错
运行错
Y
Y
Y
N
N
N
完 成
#include文件
C++库文件
×××.CPP 源程序
×××.obj目标程序
×××.exe 可执行程序
#include文件
§ 程序开发过程
例1:
//************************
//****************
//************************
# include <>
void main( )
{
cout << “I am a student.\n”;
}
§ 最简单的程序
运行结果为:
I am a student.
例例 2 2::
//** **
#include <>
void main( )
{
int a,b,result;
cout << “Please input two numbers:\n”;
cin >> a >> b;
result=3*a-2*b+1;
cout << “Result is ” <<result<<endl;
}
运行结果为:C :>
Please input two numbers:
100 50
Result is 201
C++程序是由函数构成的,由一个主函数和若干
个函数构成。 C++程序是函数驱动的。例3:
//****************
#include <>
#include <>
double max(doubl x, doubl y);
void main( )
{
double a, b, c;
cout << “Input two numbers:\n”;
cin>>a>>b;
c=max(a,b);
cout << “The squart of maximum=”<<sqrt(
c);
}
§ 函 数
double max(double x, double y)
{
if (x>y)
return x;
else
return y;
}
运行结果:
Input two numbers:
,
The squart of maximum=
学习本课程目的
1、作为面向对象程序设计入门,领
会面向对象程序设计的基本概念。
2、把握C++程序设计的基本要点,
掌握面向对象程序设计的方法和要求。