C语言程序设计清华大学郑莉PPT课件
合集下载
chap5-C++课件-清华大学郑莉
![chap5-C++课件-清华大学郑莉](https://img.taocdn.com/s3/m/054f571d59eef8c75fbfb32b.png)
16
void other(void) { static int a=2; static int b; // a,b为静态局部变量,具有全局寿命,局部可见。 为静态局部变量, 为静态局部变量 具有全局寿命,局部可见。 //只第一次进入函数时被初始化。 只第一次进入函数时被初始化。 只第一次进入函数时被初始化 int c=10; // C为局部变量,具有动态生存期, 为局部变量, 为局部变量 具有动态生存期, //每次进入函数时都初始化。 每次进入函数时都初始化。 每次进入函数时都初始化 a=a+2; i=i+32; c=c+5; cout<<"---OTHER---\n"; cout<<" i: "<<i<<" a: "<<a<<" b: "<<b<<" c: "<<c<<endl; b=a; }
可见性
标识符应声明在先,引用在后。 标识符应声明在先,引用在后。 如果某个标识符在外层中声明, 如果某个标识符在外层中声明,且在内层中 没有同一标识符的声明, 没有同一标识符的声明,则该标识符在内层 可见。 可见。 对于两个嵌套的作用域, 对于两个嵌套的作用域,如果在内层作用域 内声明了与外层作用域中同名的标识符, 内声明了与外层作用域中同名的标识符,则 外层作用域的标识符在内层不可见。 外层作用域的标识符在内层不可见。
清华大学 郑莉
作 用 域 与 可 见 性
块作用域
在块中声明的标识符, 在块中声明的标识符,其作用域自声明处 限于块中,例如: 起,限于块中,例如: void fun(int a) { int b(a); cin>>b; b的作用域 if (b>0) { int c; c的作用域 ...... } }
C语言程序设计清华大学郑莉PPT课件
![C语言程序设计清华大学郑莉PPT课件](https://img.taocdn.com/s3/m/f2c56f5a71fe910ef02df883.png)
向 • 是现实世界中一个实际存在的事物。
• 可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。
对 • 是构成世界的一个独立单位,具有:
象 • 静态特征:可以用某种数据来描述
的 • 动态特征:对象所表现的行为或具有的功能
方
法
第13页/共702页
面向对象的基本概念
面
——对象
向
对 象
• 面向对象方法中的对象:
信
息
的 表
┌控制信息 │
示 信息┤
与
│
存
┤
│
储
└ 浮点数 └数据信息
┌ 字符数据
息┤
第27页/共702页
┌ 指令 ┤ └ 控制字
┌ 定点数 ┌ 数值信息 ┤ │ └ 非数值信
└逻
计算机的数字系统
信 息 的
表 示
• 计算机采用的是二进制数字系统。 • 基本符号:0、1 • 进位原则:逢二进一 • 优点:
维护
面 将 软 件 交 付 使 用 后 , 工 作 并 没 有 完 结 , 还 要 根 据 软 件 的 运 行 情 况 和 用 户 的 需 求 , 不 断 改 进 系 统 。 向 使 用 面 向 对 象 的 方 法 开 发 的 软 件 , 其 程 序 与 问 题 域 是 一 致 的 , 因 此 , 在 维 护 阶 段 运 用 面 向 对 象 的 方 法
发生联系。
对 象 的 方 法
第17页/共702页
面向对象的基本概念
面 — — 继 承 • 继承对于软件复用有着重要意义,是面向对象技术能够提高软件开发效率的重要原因之一。 向 • 定义:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。 对 • 例如:将轮船作为一个一般类,客轮便是一个特殊类。
C 程序设计 教学课件 ppt 第1章_程序与数据
![C 程序设计 教学课件 ppt 第1章_程序与数据](https://img.taocdn.com/s3/m/b825e9f50c22590102029d5e.png)
X=+1100110 [X]原 =01100110 [X]反 =01100110 X=-1100110 [X]原 =11100110[X]反 =10011001 X=0.1011 [X]原 =0.1011 [X]反 =0.1011 X=-0.1011 [X]原 =1.1011 [X]反 =1.0100
士开始对C语言进行改进和扩充,创建了一个新的语 言,最初这个语言被称为“带类的C”,1983年正 式取名为C++
C++程序设计,郑莉,清华大学 12
1.1 程序设计概述
1.1.2 C++语言
• C++的两个“+”号各有含义。第一个“+”号表示 C++语言首先是一个更好的C语言,它根除了C语言 中存在的一些问题;第二个“+”号表示C++在C语 言的基础加入了对面向对象程序设计的支持
C++程序设计,郑莉,清华大学 20
1.2 数据的存储与表示
1.2.1数据的存储
• 二进制数的编码表示
▫ 反码
反码很少使用,但作为一种编码方式和求补码的中 间码。正数的反码与原码表示相同。负数的反码与 原码有如下关系:
负数反码的符号位与原码相同(仍用1表示),其余各 位取反(0变1,1变0)
1.1.2 C++语言
• C++语言完全兼容C语言
▫ 许多C语言程序可以不加修改就可以被C++语言使 用
▫ C++语言不是一个完全纯正的面向对象的语言, 它同时支持面向过程的程序设计和面向对象的程
序设计
• 我们要更好的使用C++,就必须更注重学习其面
士开始对C语言进行改进和扩充,创建了一个新的语 言,最初这个语言被称为“带类的C”,1983年正 式取名为C++
C++程序设计,郑莉,清华大学 12
1.1 程序设计概述
1.1.2 C++语言
• C++的两个“+”号各有含义。第一个“+”号表示 C++语言首先是一个更好的C语言,它根除了C语言 中存在的一些问题;第二个“+”号表示C++在C语 言的基础加入了对面向对象程序设计的支持
C++程序设计,郑莉,清华大学 20
1.2 数据的存储与表示
1.2.1数据的存储
• 二进制数的编码表示
▫ 反码
反码很少使用,但作为一种编码方式和求补码的中 间码。正数的反码与原码表示相同。负数的反码与 原码有如下关系:
负数反码的符号位与原码相同(仍用1表示),其余各 位取反(0变1,1变0)
1.1.2 C++语言
• C++语言完全兼容C语言
▫ 许多C语言程序可以不加修改就可以被C++语言使 用
▫ C++语言不是一个完全纯正的面向对象的语言, 它同时支持面向过程的程序设计和面向对象的程
序设计
• 我们要更好的使用C++,就必须更注重学习其面
c++语言程序设计郑莉第四版课件8
![c++语言程序设计郑莉第四版课件8](https://img.taocdn.com/s3/m/3fa46de433d4b14e85246866.png)
表达式 B oprd
等同于operator B(oprd )
后置单目运算符 ++和--重载后, 表达式 oprd B 等同于operator B(oprd,0 )
28
C++语言程序设计
清华大学 郑莉
例8-3
运
算 将+、-(双目)重载为非成员函数,并将其声明
符
为复数类的友元,两个操作数都是复数类的常引
重 实现机制
载
– 运算符重载的实质是函数重载。
– 将指定的运算表达式转化为对运算符函数的调
用,运算对象转化为运算符函数的实参,根据
实参的类型来确定需要调用的函数。
– 编译系统对重载运算符的选择,遵循函数重载 的选择原则。
主要优点
– 可以改变现有运算符的操作方式,用于自定义 的类类型使得程序看起来更加直观。
21
//构造函数 Clock::Clock(int hour, int minute, int second) { if(0 <= hour && hour < 24 && 0 <= minute && minute < 60 && 0 <= second && second < 60) { this->hour=hour; this->minute=minute; this->second=second; } else cout<<"Time error!"<<endl; }
清华大学 郑莉
问题举例——复数的运算
运
清华大学c++课件第2章
![清华大学c++课件第2章](https://img.taocdn.com/s3/m/a58aac37f12d2af90242e6ab.png)
语 引入了类的机制,最初的C++被称为“带类
言 的C”
概 1983年正式取名为C++
述
从1989年开始C++语言的标准化工作 于1994年制定了ANSI C++标准草案
于1998年11月被国际标准化组织(ISO)批 准为国际标准,成为目前的C++
3
C++语言程序设计
C++的特点
式 c = float(a) / float(b);
或 c = (float)a / (float)b;
17
C++语言程序设计
清华大学 郑莉
基 变量的存储类型
本
数 auto
据 类 型
–属于一时性存储,其存储空间可以被若 干变量多次覆盖使用。
register
–存放在通用寄存器中。
和 extern
语 始。 言 可以由以大写字母、小写字母、下划 概 线(_)或数字0~9组成。 述 大写字母和小写字母代表不同的标识
符。
8
C++语言程序设计
清华大学 郑莉
基
数据类型
——常量与变量
本
#include <iostream>
数
using namespace std;
据 类 变量先声
明后使用
型
int main() { const int PRICE = 30; int num, total; float v, r, h; num = 10;
本
数 关系运算是比较简单的一种逻辑运算,优先
据 次序为:
最新C程序设计清华大学课件-c第11章
![最新C程序设计清华大学课件-c第11章](https://img.taocdn.com/s3/m/9d7910053186bceb18e8bb95.png)
使用ofstream构造函数中的模式参量 指定二进制输出模式
使用二进制操作符代替setmode成员 函数:ofs << binary;
17
C++语言程序设计
输入流
清华大学 郑莉
重要的输入流类:
– istream类最适合用于顺序文本模式输入。 cin是其派生类istream_withassign的对象。
void main()
{ double values[]={1.23,35.36,653.7,4358.24};
char *names[]={"Zoot","Jimmy","Al","Stan"};
for(int i=0;i<4;i++)
cout<<setw(6)<<names[i]
输出结果:
<<setw(10)<<values[i] <<endl; }
Stan
4e+003
}
12
C++语言程序设计
进制
清华大学 郑莉
输 出 流
dec、oct和hex操纵符设置输入和输出 的缺省进制。
13
C++语言程序设计
输出文件流成员函数
清华大学 郑莉
输 出 流
输出流成员函数有三种类型:
– 与操纵符等价的成员函数。 – 执行非格式化写操作的成员函数。
– 其它修改流状态且不同于操纵符或插入 运算符的成员函数。
C+++语言程序设计
例:使用*填充
清华大学 郑莉
c++语言程序设计(郑莉第四版)课件4
![c++语言程序设计(郑莉第四版)课件4](https://img.taocdn.com/s3/m/91d638335901020207409c23.png)
34
C++语言程序设计
清华大学 郑莉
构 造 函 数 和 析 构 函 数
拷贝构造函数(例4-2)
class Point { public: Point(int xx=0, int yy=0) { x = xx; y = yy; } Point(Point& p); int getX() { return x; } int getY() { return y; } private: int x, y; };
清华大学 郑莉
内联成员函数举例(一)
类 和 对 象
class Point { public: void init(int initX, int initY) { x = initX; y = initY; } int getX() { return x; } int getY() { return y; } private: int x, y; };
目的:达到行为标识统一,减少程序中标 识符的个数。
实现:重载函数和虚函数——见第8章
12
C++语言程序设计
清华大学 郑莉
c++中的类
类 和 对 象
类是具有相同属性和行为的一组对象 的集合,它为属于该类的全部对象提 供了统一的抽象描述,其内部包括属 性和行为两个主要部分。 利用类可以实现数据的封装、隐藏、 继承与派生。 利用类易于编写大型复杂程序,其模 块化程度比C中采用函数更高。
C++语言程序设计
清华大学 郑莉
构造函数
构 造 函 数 和 析 构 函 数
构造函数的作用是在对象被创建时使 用特定的值构造对象,或者说将对象 初始化为一个特定的状态。 在对象创建时由系统自动调用。 如果程序中未声明,则系统自动产生 出一个隐含的参数列表为空的构造函 数 允许为内联函数、重载函数、带默认 形参值的函数
C++语言程序设计
清华大学 郑莉
构 造 函 数 和 析 构 函 数
拷贝构造函数(例4-2)
class Point { public: Point(int xx=0, int yy=0) { x = xx; y = yy; } Point(Point& p); int getX() { return x; } int getY() { return y; } private: int x, y; };
清华大学 郑莉
内联成员函数举例(一)
类 和 对 象
class Point { public: void init(int initX, int initY) { x = initX; y = initY; } int getX() { return x; } int getY() { return y; } private: int x, y; };
目的:达到行为标识统一,减少程序中标 识符的个数。
实现:重载函数和虚函数——见第8章
12
C++语言程序设计
清华大学 郑莉
c++中的类
类 和 对 象
类是具有相同属性和行为的一组对象 的集合,它为属于该类的全部对象提 供了统一的抽象描述,其内部包括属 性和行为两个主要部分。 利用类可以实现数据的封装、隐藏、 继承与派生。 利用类易于编写大型复杂程序,其模 块化程度比C中采用函数更高。
C++语言程序设计
清华大学 郑莉
构造函数
构 造 函 数 和 析 构 函 数
构造函数的作用是在对象被创建时使 用特定的值构造对象,或者说将对象 初始化为一个特定的状态。 在对象创建时由系统自动调用。 如果程序中未声明,则系统自动产生 出一个隐含的参数列表为空的构造函 数 允许为内联函数、重载函数、带默认 形参值的函数
C语言程序设计(清华郑莉安颍莲)chap10精品PPT课件
![C语言程序设计(清华郑莉安颍莲)chap10精品PPT课件](https://img.taocdn.com/s3/m/f1c5339a89eb172dec63b748.png)
binint: 要写入文件中的整数 stream: 文件指针 功能:以二进制形式,向文件中写一个 int 型的整数。 返回:成功:所写的整数值;失败:EOF。
Page 24
C语言程序设计
清华大学 郑莉 安颖莲
getw
include: <stdio.h> 语法:
int getw(FILE *stream); 参数:
其中集合了处理文件所需的各种有关信息:文件当前的读写位置、 文件当前位置到文件尾之间的数据个数、该文件读写缓冲区位置、 出错标志、该文件是已打开的第几个文件。
- 文件(结构体)指针: FILE *文件指针名 Page 3
C语言程序设计
清华大学 郑莉 安颖莲
文件位置指针的定位
• 由文件打开方式确定:
Page 18
C语言程序设计
清华大学 郑莉 安颖莲
fprintf,fscanf
与 printf, scanf 类似, 但读/写对象是文件
看书:P280
例4
Page 19
C语言程序设计
putw
清华大学 郑莉 安颖莲
include: <stdio.h> 语法:
int putw(int binint,FILE *stream); 参数:
C语言程序设计
清华大学 郑莉 安颖莲
第十讲 文件
参考书《C程序设计》第十二章
Page 1
C语言程序设计
清华大学 郑莉 安颖莲
本讲主要内容
• 文件的概念 • 文件结构体及文件指针 • 与文件操作有关的函数 • 综合举例
Page 2
C语言程序设计
文件的概念
清华大学 郑莉 安颖莲
• 文件:
Page 24
C语言程序设计
清华大学 郑莉 安颖莲
getw
include: <stdio.h> 语法:
int getw(FILE *stream); 参数:
其中集合了处理文件所需的各种有关信息:文件当前的读写位置、 文件当前位置到文件尾之间的数据个数、该文件读写缓冲区位置、 出错标志、该文件是已打开的第几个文件。
- 文件(结构体)指针: FILE *文件指针名 Page 3
C语言程序设计
清华大学 郑莉 安颖莲
文件位置指针的定位
• 由文件打开方式确定:
Page 18
C语言程序设计
清华大学 郑莉 安颖莲
fprintf,fscanf
与 printf, scanf 类似, 但读/写对象是文件
看书:P280
例4
Page 19
C语言程序设计
putw
清华大学 郑莉 安颖莲
include: <stdio.h> 语法:
int putw(int binint,FILE *stream); 参数:
C语言程序设计
清华大学 郑莉 安颖莲
第十讲 文件
参考书《C程序设计》第十二章
Page 1
C语言程序设计
清华大学 郑莉 安颖莲
本讲主要内容
• 文件的概念 • 文件结构体及文件指针 • 与文件操作有关的函数 • 综合举例
Page 2
C语言程序设计
文件的概念
清华大学 郑莉 安颖莲
• 文件:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机发展的初期,软件工程师们只能用机器 语言来编写程序。这一阶段,在人类的自然语言和
的 计算机编程语言之间存在着巨大的鸿沟。
发 汇编语言将机器指令映射为一些可以被
展 人读懂的助记符,如ADD、SUB等。
此时编程语言与人类自然语言间的鸿沟略有缩
小,但仍与人类的思维相差甚远。因为它的抽象层 次太低,程序员需要考虑大量的机器细节。
法 类通过一个简单的外部接口,与外界
发生关系。
对象与对象之间通过消息进行通讯。
程序设计方法的发展历程
面
——面向对象的方法
向
对 优点:
象
– 程序模块间的关系更为简单,程序模块
的
的独立性、数据的安全性就有了良好的
方
保障。
法
– 通过继承与多态性,可以大大提高程序
的可重用性,使得软件的开发和维护都
更为方便。
向
对 面向对象方法中的对象:
象
– 是系统中用来描述客观事物的一个实体,
的
它是用来构成系统的一个基本单位。对象
方
由一组属性和一组行为构成。
法
– 属性:用来描述对象静态特征的数据项。
– 行为:用来描述对象动态特征的操作序列。
面向对象的基本概念
面
——类
向
对 分类——人类通常的思维方法
象 分类所依据的原则——抽象
方
任务分解成许多易于控制和处理的子任务,
法
便于开发和维护。
程序设计方法的发展历程
面 ——面向过程的结构化程序设计方法
向
对 缺点:可重用性差、数据安全性差、难以
象 开发大型软件和图形界面的应用软件
的 方
– 把数据和处理数据的过程分离为相互独立的实 体。
– 当数据结构改变时,所有相关的处理过程都要
法
特点:
– 是高级语言。 – 将客观事物看作具有属性和行为的对象。
展 –通过抽象找出同一类对象的共同属性和
行为,形成类。
– 通过类的继承与多态实现代码重用
计 面向对象的语言
算
机 语
优点:
言
使程序能够比较直接地反问题域的本
的
来面目,软件开发人员能够利用人类认识
发
事物所采用的一般思维方法来进行软件开
展
的 – 忽略事物的非本质特征,只注意那些与
方
当前目标有关的本质特征,从而找出事
法
物的共性,把具有共同性质的事物划分
为一类,得出一个抽象的概念。
– 例如,石头、树木、汽车、房屋等都是 人们在长期的生产和生活实践中抽象出 的概念。
面向对象的基本概念
面
——类
向
对 面向对象方法中的"类"
象
– 具有相同属性和服务的一组对象的集合
的 方 法
– 为属于该类的全部对象提供了抽象的描述, 包括属性和行为两个主要部分。
– 类与对象的关系:
犹如模具与铸件之间的关系,一个属于某
类的对象称为该类的一个实例。
面向对象的基本概念
面
——封装
向
对 把对象的属性和服务结合成一个独立
象 的系统单元。
的 方
尽可能隐蔽对象的内部细节。对外形
法 成一个边界(或者说一道屏障),只
C++语言程序设计
本章主要内容
计算机程序设计语言的发展 面向对象的方法 面向对象的软件开发 信息的表示与存储 程序的开发过程
计
计算机程序
算
机
语
计算机的工作是用程序来控制的
言
的
程序是指令的集合。
发 展
指令是计算机可以识别的命令。
机器语言与汇编语言
计
算 机
语 言
由计算机硬件系统可以识别的二进制指 令组成的语言称为机器语言。
进行相应的修改。
– 每一种相对于老问题的新方法都要带来额外的 开销。
– 图形用户界面的应用程序,很难用过程来描述 和实现,开发和维护也都很困难。
程序设计方法的发展历程
面
——面向对象的方法
向
对 将数据及对数据的操作方法封装在一
象 起,作为一个相互依存、不可分离的
的 整体——对象。
方 对同类型对象抽象出其共性,形成类。
保留有限的对外接口使之与外部发生
联系。
面向对象的基本概念
面
——继承
向
对 继承对于软件复用有着重要意义,是
象 面向对象技术能够提高软件开发效率
的 的重要原因之一。
方 定义:特殊类的对象拥有其一般类的 法 全部属性与服务,称作特殊类对一般
类的继承。
例如:将轮船作为一个一般类,客轮 便是一个特殊类。
计 高级语言
算
机 语
高级语言屏蔽了机器的细节,提高了
言 语言的抽象层次,程序中可以采用具有
的 一定涵义的数据命名和容易理解的执行
发 展
语句。这使得在书写程序时可以联系到
程序所描述的具体事物。
计 面向对象的语言
算
机 出发点:
语 言 的 发
– 更直接地描述客观世界中存在的事物 (对象)以及它们之间的关系。
的 程序结构:
方
– 按功能划分为若干个基本模块,形成一
法
个树状结构。
– 各模块间的关系尽可能简单,功能上相
对独立;每一模块内部均是由顺序、选
择和循环三种基本结构组成。
– 其模块化实现的具体方法是使用子程序。
程序设计方法的发展历程
面 ——面向过程的结构化程序设计方法
向
对 优点:
象
的
有效地将一个较复杂的程序系统设计
面向对象的基本概念
面
——对象
向
对 一般意义上的对象:
象
– 是现实世界中一个实际存在的事物。
的
– 可以是有形的(比如一辆汽车),也可
方
以是无形的(比如一项计划)。
法
– 是构成世界的一个独立单位,具有:
静态特征:可以用某种数据来描述
动态特征:对象所表现的行为或具有的功能
面向对象的基本概念
面
——对象
象 在软件工程领域的全面应用。它包括:
的 软
– 面向对象的分析(OOA)
件
– 面向对象的设计(OOD)
开
– 面向对象的编程(OOP)
发
– 面向对象的测试(OOT)
– 面向对象的软件维护(OOSM)
面 系统分析
向 对
象 的
系统分析阶段应该扼要精确地抽象出 系统必须做什么,但是不关心如何去 实现。
面向对象的基本概念
面
——或行 象 为,被特殊类继承之后,可以具有不
的 同的数据类型或表现出不同的行为。 方 这使得同一个属性或行为在一般类及 法 其各个特殊类中具有不同的语义。
例如:
数的加法->实数的加法 ->复数的加法
面 面向对象的软件工程
向
对 面向对象的软件工程是面向对象方法
发。
程序设计方法的发展历程
面
——面向过程的程序设计方法
向
对 象 程序的目的:用于数学计算
的 方
主要工作:设计求解问题的过程
法 缺点:对于庞大、复杂的程序难以开发
和维护
程序设计方法的发展历程
面 ——面向过程的结构化程序设计方法
向 对
象
设计思路
– 自顶向下、逐步求精。采用模块分解与 功能抽象,自顶向下、分而治之。
的 计算机编程语言之间存在着巨大的鸿沟。
发 汇编语言将机器指令映射为一些可以被
展 人读懂的助记符,如ADD、SUB等。
此时编程语言与人类自然语言间的鸿沟略有缩
小,但仍与人类的思维相差甚远。因为它的抽象层 次太低,程序员需要考虑大量的机器细节。
法 类通过一个简单的外部接口,与外界
发生关系。
对象与对象之间通过消息进行通讯。
程序设计方法的发展历程
面
——面向对象的方法
向
对 优点:
象
– 程序模块间的关系更为简单,程序模块
的
的独立性、数据的安全性就有了良好的
方
保障。
法
– 通过继承与多态性,可以大大提高程序
的可重用性,使得软件的开发和维护都
更为方便。
向
对 面向对象方法中的对象:
象
– 是系统中用来描述客观事物的一个实体,
的
它是用来构成系统的一个基本单位。对象
方
由一组属性和一组行为构成。
法
– 属性:用来描述对象静态特征的数据项。
– 行为:用来描述对象动态特征的操作序列。
面向对象的基本概念
面
——类
向
对 分类——人类通常的思维方法
象 分类所依据的原则——抽象
方
任务分解成许多易于控制和处理的子任务,
法
便于开发和维护。
程序设计方法的发展历程
面 ——面向过程的结构化程序设计方法
向
对 缺点:可重用性差、数据安全性差、难以
象 开发大型软件和图形界面的应用软件
的 方
– 把数据和处理数据的过程分离为相互独立的实 体。
– 当数据结构改变时,所有相关的处理过程都要
法
特点:
– 是高级语言。 – 将客观事物看作具有属性和行为的对象。
展 –通过抽象找出同一类对象的共同属性和
行为,形成类。
– 通过类的继承与多态实现代码重用
计 面向对象的语言
算
机 语
优点:
言
使程序能够比较直接地反问题域的本
的
来面目,软件开发人员能够利用人类认识
发
事物所采用的一般思维方法来进行软件开
展
的 – 忽略事物的非本质特征,只注意那些与
方
当前目标有关的本质特征,从而找出事
法
物的共性,把具有共同性质的事物划分
为一类,得出一个抽象的概念。
– 例如,石头、树木、汽车、房屋等都是 人们在长期的生产和生活实践中抽象出 的概念。
面向对象的基本概念
面
——类
向
对 面向对象方法中的"类"
象
– 具有相同属性和服务的一组对象的集合
的 方 法
– 为属于该类的全部对象提供了抽象的描述, 包括属性和行为两个主要部分。
– 类与对象的关系:
犹如模具与铸件之间的关系,一个属于某
类的对象称为该类的一个实例。
面向对象的基本概念
面
——封装
向
对 把对象的属性和服务结合成一个独立
象 的系统单元。
的 方
尽可能隐蔽对象的内部细节。对外形
法 成一个边界(或者说一道屏障),只
C++语言程序设计
本章主要内容
计算机程序设计语言的发展 面向对象的方法 面向对象的软件开发 信息的表示与存储 程序的开发过程
计
计算机程序
算
机
语
计算机的工作是用程序来控制的
言
的
程序是指令的集合。
发 展
指令是计算机可以识别的命令。
机器语言与汇编语言
计
算 机
语 言
由计算机硬件系统可以识别的二进制指 令组成的语言称为机器语言。
进行相应的修改。
– 每一种相对于老问题的新方法都要带来额外的 开销。
– 图形用户界面的应用程序,很难用过程来描述 和实现,开发和维护也都很困难。
程序设计方法的发展历程
面
——面向对象的方法
向
对 将数据及对数据的操作方法封装在一
象 起,作为一个相互依存、不可分离的
的 整体——对象。
方 对同类型对象抽象出其共性,形成类。
保留有限的对外接口使之与外部发生
联系。
面向对象的基本概念
面
——继承
向
对 继承对于软件复用有着重要意义,是
象 面向对象技术能够提高软件开发效率
的 的重要原因之一。
方 定义:特殊类的对象拥有其一般类的 法 全部属性与服务,称作特殊类对一般
类的继承。
例如:将轮船作为一个一般类,客轮 便是一个特殊类。
计 高级语言
算
机 语
高级语言屏蔽了机器的细节,提高了
言 语言的抽象层次,程序中可以采用具有
的 一定涵义的数据命名和容易理解的执行
发 展
语句。这使得在书写程序时可以联系到
程序所描述的具体事物。
计 面向对象的语言
算
机 出发点:
语 言 的 发
– 更直接地描述客观世界中存在的事物 (对象)以及它们之间的关系。
的 程序结构:
方
– 按功能划分为若干个基本模块,形成一
法
个树状结构。
– 各模块间的关系尽可能简单,功能上相
对独立;每一模块内部均是由顺序、选
择和循环三种基本结构组成。
– 其模块化实现的具体方法是使用子程序。
程序设计方法的发展历程
面 ——面向过程的结构化程序设计方法
向
对 优点:
象
的
有效地将一个较复杂的程序系统设计
面向对象的基本概念
面
——对象
向
对 一般意义上的对象:
象
– 是现实世界中一个实际存在的事物。
的
– 可以是有形的(比如一辆汽车),也可
方
以是无形的(比如一项计划)。
法
– 是构成世界的一个独立单位,具有:
静态特征:可以用某种数据来描述
动态特征:对象所表现的行为或具有的功能
面向对象的基本概念
面
——对象
象 在软件工程领域的全面应用。它包括:
的 软
– 面向对象的分析(OOA)
件
– 面向对象的设计(OOD)
开
– 面向对象的编程(OOP)
发
– 面向对象的测试(OOT)
– 面向对象的软件维护(OOSM)
面 系统分析
向 对
象 的
系统分析阶段应该扼要精确地抽象出 系统必须做什么,但是不关心如何去 实现。
面向对象的基本概念
面
——或行 象 为,被特殊类继承之后,可以具有不
的 同的数据类型或表现出不同的行为。 方 这使得同一个属性或行为在一般类及 法 其各个特殊类中具有不同的语义。
例如:
数的加法->实数的加法 ->复数的加法
面 面向对象的软件工程
向
对 面向对象的软件工程是面向对象方法
发。
程序设计方法的发展历程
面
——面向过程的程序设计方法
向
对 象 程序的目的:用于数学计算
的 方
主要工作:设计求解问题的过程
法 缺点:对于庞大、复杂的程序难以开发
和维护
程序设计方法的发展历程
面 ——面向过程的结构化程序设计方法
向 对
象
设计思路
– 自顶向下、逐步求精。采用模块分解与 功能抽象,自顶向下、分而治之。