清华大学经典C++教程-郑莉-1
清华大学郑利c++4类与对象
![清华大学郑利c++4类与对象](https://img.taocdn.com/s3/m/a391cf43a300a6c30d229f5c.png)
32
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;}
数 现拷贝赋值。
和 void main(void)
析 构 函
{ Point A(1,2); Point B(A); //拷贝构造函数被调用
数
cout<<B.GetX()<<endl;
}
35
C++语言程序设计
清华大学 郑莉
例4-2拷贝构造函数举例
构 造 函
若函数的形参为类对象,调用函数时,
实参赋值给形参,系统自动调用拷贝 构造函数。例如:
函 private:
数
int X,Y;
};
33
Point::Point (Point& p) {
X=p.X; Y=p.Y; cout<<"拷贝构造函数被调用"<<endl; }
34
C++语言程序设计
清华大学 郑莉
例4-2 拷贝构造函数举例
构
造 当用类的一个对象去初始化该类的另一
函 个对象时系统自动调用拷贝构造函数实
函
int Hour,Minute,Second;
数 };
30
构造函数的实现: Clock::Clock(int NewH, int NewM, int NewS) {
清华郑莉C
![清华郑莉C](https://img.taocdn.com/s3/m/63cd5440bceb19e8b8f6bae7.png)
式 例如:a>b,c<=a+b,x+y==3
基 逻辑运算与逻辑表达式
本 数 逻辑运算符
据
!(非) &&(与) ||(或)
类
优先次序: 高
→
低
型 逻辑表达式
和
例如:(a>b)&&(x>y)
表 其结果类型为 bool,值只能为 true
符。
基
数据类型
——常量与变量
本
#include <iostream>
数
using namespace std;
据 类 变量先声
明后使用
型
void main(void) {
const int PRICE=30; int num,total; float v ,r,h;
符号常量
和 表
变量
num=10; total=num*PRICE; cout<<total <<endl;
本
数 运算规则
据 –两个操作数进行异或:
类
若对应位相同,则结果该位为 0,
型
若对应位不同,则结果该位为 1,
和 举例:计算 071^052
表
071:
00111001
达
052: (^) 0 0 1 0 1 0 1 0
式
071^052 : 0 0 0 1 0 0 1 1
基 位运算——按位异或(^)
型 字符串常量
和 例:"CHINA" C H I N A \0
表
"a"
C语言程序设计(郑莉)课后习题答案
![C语言程序设计(郑莉)课后习题答案](https://img.taocdn.com/s3/m/c19bea1d0b4c2e3f572763aa.png)
C++语言程序设计(清华大学郑莉)课后习题答案第一章概述1-1 简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2 面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
C++_语言程序设计(清华大学郑莉)_(1)
![C++_语言程序设计(清华大学郑莉)_(1)](https://img.taocdn.com/s3/m/56821eb8f121dd36a32d82ab.png)
作为一个相互依存、不可分离的整体——对 象。 对同类型对象抽象出其共性,形成类。
类通过一个简单的外部接口,与外界发生
关系。 对象与对象之间通序设计
清华大学 郑莉
面 向 对 象 的 方 法
程序设计方法的发展历程
——面向对象的方法
优点:
程序模块间的关系更为简单,程序模块的独立
形的(比如一项计划)。
是构成世界的一个独立单位,具有
静态特征:可以用某种数据来描述
动态特征:对象所表现的行为或具有的功能
14
C++语言程序设计
清华大学 郑莉
面 向 对 象 的 方 法
面向对象的基本概念
——对象
面向对象方法中的对象:
是系统中用来描述客观事物的一个实体,它
是用来构成系统的一个基本单位。对象由一 组属性和一组行为构成。
32
C++语言程序设计
清华大学 郑莉
信 息 的 表 示 与 存 储
不同进位记数制间的转换
十进制小数转换成R进制小数
“乘 R 取整”法,例如:
——十进制→ R 进制
高位 0.3125 ×2 0.625 ×2 0.25 ×2 0.5 ×2 所以 0.312510 = = 0 .625 = 1 .25 = 0 .5 = 1 .0 0.01012
31
C++语言程序设计
清华大学 郑莉
信 息 的 表 示 与 存 储
不同进位记数制间的转换
“除R取余”法,例如:
2 2
——十进制→ R 进制
十进制整数转换成R进制的整数
68 余 数 34 ┄┄┄┄┄┄┄┄┄┄┄┄ 0 低位 2 17 ┄┄┄┄┄┄┄┄┄┄┄ 0 2 8 ┄┄┄┄┄┄┄┄┄┄┄ 1 2 4 ┄┄┄┄┄┄┄┄┄┄ 0 2 2 ┄┄┄┄┄┄┄┄┄┄ 0 2 1 ┄┄┄┄┄┄┄┄┄ 0 0 ┄┄┄┄┄┄┄┄┄ 1 高位 所以 6810=10001002
C 语言程序设计(清华大学郑莉)课后习题答案
![C 语言程序设计(清华大学郑莉)课后习题答案](https://img.taocdn.com/s3/m/48b56deda98271fe900ef940.png)
第一章概述1-1简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
1-4什么是对象?什么是面向对象方法?这种方法有哪些特点?解:从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。
C 程序设计 教学课件 ppt 第1章_程序与数据
![C 程序设计 教学课件 ppt 第1章_程序与数据](https://img.taocdn.com/s3/m/b825e9f50c22590102029d5e.png)
士开始对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++4类与对象
![清华大学郑利c++4类与对象](https://img.taocdn.com/s3/m/9b40ba6eb90d6c85ec3ac6b4.png)
};
7
C++语言程序设计
抽象实例——人
清华大学 郑莉
OOP
数据抽象:
的 char *name,char *gender,int age,int id
基 代码抽象:
本 生物属性角度:
特 点
GetCloth(), Eat(), Step(),… 社会属性角度:
Work(), Promote() ,…
和 using namespace std;
class Clock
对{
象
}
......//类的声明略
//......类的实现略
void main(void)
{ Clock myClock;
myClock.SetTime(8,30,30);
myClock.ShowTime();
}
28
C++语言程序设计
清华大学 郑莉
内联成员函数举例(一)
类 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;
15
C++语言程序设计
清华大学 郑莉
私有类型成员
类 和 在关键字private后面声明,只允许 对 本类中的函数访问,而类外部的任何函 象 数都不能访问。
如果紧跟在类名称的后面声明私有成员, 则关键字private可以省略。
16
C++语言程序设计(清华大学郑莉)
![C++语言程序设计(清华大学郑莉)](https://img.taocdn.com/s3/m/e4ffd1e3ba0d4a7302763a21.png)
第四章 类与对象
清华大学 郑 莉
C++语言程序设计
本章主要内容
清华大学 郑莉
面向对象的思想 OOP的基本特点 类概念和声明
对象 构造函数 析构函数
内联成员函数 拷贝构造函数 类的组合 结构体与联合体 深度探索
2
C++语言程序设计
清华大学 郑莉
回顾:面向过程的设计方法
second; }
19
C++语言程序设计
清华大学 郑莉
成员数据
类
和
与一般的变量声明相同,但需要将它 放在类的声明体中。
对
象
20
C++语言程序设计
清华大学 郑莉
成员函数
类
和
在类中说明原型,可以在类外给出函数 体实现,并在函数名前使用类名加以限
对 定。也可以直接在类中给出函数体,形
象 成内联成员函数。
};
成员数据
18
void Clock::setTime(int newH, int newM, int newS) {
hour = newH; minute = newM; second = newS; } void Clock::showTime() { cout << hour << ":" << minute << ":" <<
C++语言程序设计
清华大学 郑莉
类的声明形式
类
和
类是一种用户自定义类型,声明形式:
class 类名称
对{
C++语言程序设计 郑莉 第三版 课件 1
![C++语言程序设计 郑莉 第三版 课件 1](https://img.taocdn.com/s3/m/6038d65bbe23482fb4da4ce4.png)
吕凤翥
编著
C++语言基础教程 语言基础教程
C++语言概述 第1章 C++语言概述
1. 1 面向对象程序设计的基本思路
1. 面向对象的由来和发展 面向对象的语言更接近于自然语言。 面向对象的语言更接近于自然语言。 2. 面向对象语言实现更高级的抽象 面向对象的抽象原理: 数据抽象和行为共享。 面向对象的抽象原理: 数据抽象和行为共享。 3. 面向对象的基本特征 (1) 对象 ) (2) 类 ) (3) 继承 )现
1. C++语言程序实现的三步曲 语言程序实现的三步曲 (1) 编辑 ) (2) 编译(预处理、编译、连接) ) 编译(预处理、编译、连接) (3) 运行 ) 2. Visual C++ 6.0版本实现 版本实现C++程序的功能 版本实现 程序的功能 (1) 单文件程序的实现方法 ) 以[例1. 4]为例。 ]为例。 (2) 多文件程序的实现方法 ) 以[例1.5]为例。 ]为例。 此部分参阅与该教材配套的《 (此部分参阅与该教材配套的《 C++语言基础教程题解答与上 语言基础教程题解答与上 机指导》一书的有关部分) 机指导》一书的有关部分)
3. C++程序的书写格式 程序的书写格式 语言相同部分的书写与C语言相同 (1) 与C语言相同部分的书写与 语言相同 ) 语言相同部分的书写与 (2) 类及对象按定义的格式书写 ) 通过讲述[ 通过讲述[例1. 2]与[例1. 3]说明程序的书写格式影响可读性。 ] ]说明程序的书写格式影响可读性。
1. 4 C++语言程序结构的特点 语言程序结构的特点
第二章 C++简单程序设计 清华大学 郑 莉
![第二章 C++简单程序设计 清华大学 郑 莉](https://img.taocdn.com/s3/m/3735cacf453610661ed9f4fc.png)
据 类
+ - * /(若整数相除,结果取整)
型
%(取余,操作数为整数)
和 优先级与结合性
表 先乘除,后加减,同级自左至右
达 式
++, --(自增、自减)
例:i++; -- j;
Page 19 19
C++语言程序设计
清华大学 郑莉
赋值运算符和赋值表达式
基
简单的赋值运算符"="
本
数 举例
据 类
n=n+5
式 –取指定位。
例如:有char c; int a;
取出a的低字节,置于c中:c=a&0377;
29
C++语言程序设计
清华大学 郑莉
基 位运算——按位或(|)
本 数
运算规则
据 –将两个运算量的每一个位进行逻辑或操作
类 举例:计算 3 | 5
型
3: 0 0 0 0 0 0 1 1
和
5:(|) 0 0 0 0 0 1 0 1
C++语言程序设计
第二章 C++简单程序设计
清华大学 郑 莉
C++语言程序设计
本章主要内容
C++语言概述 基本数据类型和表达式 数据的输入与输出 算法的基本控制结构 自定义数据类型
清华大学 郑莉
2
C++语言程序设计
C++语言的产生
清华大学 郑莉
C++
C++是从C语言发展演变而来的,首先是一个 更好的C
式
表达式3的值为最终结果
C++复习
![C++复习](https://img.taocdn.com/s3/m/6d0337234b35eefdc8d333dd.png)
41
第5章 数据的共享与保护
5.1 5.2 5.3 5.4 5.5 5.6 标识符的作用域与可见性 对象的生存期 类的静态成员 类的友元 共享数据的保护 多文件结构和编译预处理命令
C++语言程序设计(第4版),郑莉,清华大学
5.1.1 作用域
• 作用域是一个标识符在程序正文中有效地区域。 • C++中标识符的作用域有:
它,然后再释放此对象所属的空间。
• 如果程序中未声明析构函数,编译器将自
动产生一个隐含的析构函数。
C++语言程序设计(第4版),郑莉,清华大学
4.4 类的组合
37
4.4.1组合
• 类中的成员数据是另一个类的对象。
C++语言程序设计(第4版),郑莉,清华大学
4.4 类的组合 —— 4.4.1 组合
C++语言程序设计(第4版),郑莉,清华大学
10
算术运算符与算术表达式
• 基本算术运算符
+ - * /(若整数相除,结果取整)
%(取余,操作数为整数)
• 优先级与结合性
先乘除,后加减,同级自左至右
• ++, --(自增、自减)
例:i++; --j;
前置和后置的区别:先使用初值还是先运算
C++语言程序设计(第4版),郑莉,清华大学
1 1 1 1 2 2 4 4 4 4 4 8 8
false,true -128~127 -128~127 0~255 -32768~32767 0~65535 -2147483648~2147483647 0~4294967295 -2147483648~2147483647 0~4294967295 +3.4E+38 +1.7E+308 +1.7E+308
C语言程序设计(清华郑莉 安颍莲)chap1
![C语言程序设计(清华郑莉 安颍莲)chap1](https://img.taocdn.com/s3/m/75acb51dfc4ffe473368abcc.png)
外存储器 输 入 设 备
数据、程序 输入数据、程序
内存储器
数 据 指 令
输 出 设 备
运 算 器 CPU 主机
控 制 器
Page 5
C语言程序设计
清华大学
郑莉 安颖莲
计算机组成与工作原理
启动地址→PC 取指 PC→地址寄存器 指令→IR 指令译码 停机指令 ? 转移指令 形成转移地址 →PC
—程序的执行过程 程序的执行过程
非转移指令 完成本条指令操作 PC+1→PC
Page 6
程序结束
C语言程序设计
清华大学
郑莉 安颖莲
高级语言上机过程
• 编辑源程序 • 编译:产生目标程序(.OBJ) 编译:产生目标程序(.OBJ) • 连接:产生可执行程序(.EXE) 连接:产生可执行程序(.EXE) • 运行调试
Page 7
C语言程序设计
C语言程序设计
清华大学
郑莉 安颖莲
第一讲
预备知识
参考书:《计算机程序设计基础》第1章
Page 1
C语言程序设计
清华大学
郑莉 安颖莲
本讲主要内容
• 计算机组成与工作原理 • 高级语言的上机过程
Page 2
C语言程序设计
清华大学
郑莉 安颖莲
计算机组成与工作原理
• 指令系统 • 计算机组成—硬件系统 计算机组成 硬件系统 • 程序的自动执行
清华大学
郑莉 安颖莲
作
业
• 复习:《计算机程序设计基础》第1章 复习: 计算机程序设计基础》 • 预习:《C程序设计》第一、二、三章 预习: 程序设计》第一、 • 上机:熟悉一种C语言编译环境 上机:熟悉一种C
C 语言程序设计-清华大学-郑莉
![C 语言程序设计-清华大学-郑莉](https://img.taocdn.com/s3/m/2e133b4191c69ec3d5bbfd0a79563c1ec5dad7a2.png)
C 语言程序设计-清华大学-郑莉简介C语言是一种通用的、面向过程式的计算机编程语言。
它是由贝尔实验室的Dennis M. Ritchie在20世纪70年代开发出来的。
C语言具有简洁的语法和强大的编程能力,被广泛应用于系统编程、嵌入式系统开发和高性能计算等领域。
清华大学郑莉教授的《C 语言程序设计》课程是一门专注于C语言基础知识和程序设计技巧的课程,本文将对该课程进行介绍和总结。
课程内容《C 语言程序设计》课程由清华大学郑莉教授主讲,涵盖了C语言的基本知识和程序设计的基本技巧。
课程内容主要包括以下几个方面:数据类型和运算符•C语言中的基本数据类型,包括整数类型、浮点数类型和字符类型等。
•C语言中的运算符,包括算术运算符、关系运算符和逻辑运算符等。
控制结构•C语言中的选择结构和循环结构,包括if语句、switch语句和while循环等。
•C语言中的跳转语句,如break语句和continue语句等。
函数和指针•C语言中的函数概念和函数调用。
•C语言中的指针概念和指针的运算及应用。
数组和字符串•C语言中的数组概念和数组的使用。
•C语言中的字符串概念和字符串的操作。
结构体和文件操作•C语言中的结构体概念和结构体的定义和使用。
•C语言中的文件操作,包括文件读写操作和文件指针的应用。
教学方法《C 语言程序设计》课程采用清华大学郑莉教授自编教材《C语言程序设计》作为参考书。
课程以理论讲解和实践操作相结合的方式进行教学。
在每个章节的理论讲解部分,郑莉教授会详细介绍相关的C语言知识点,并通过示例代码和代码分析来帮助学生理解和掌握。
在实践操作部分,学生会进行一系列的编程练习,通过实际的编写和调试C语言程序来巩固所学知识。
在这个过程中,学生将会学习到如何运用C语言的基本语法和程序设计技巧来解决实际问题。
此外,课程还设置了课后习题和实验,供学生进一步巩固和拓展所学内容。
学生可以通过完成习题和实验来提高自己的编程能力和代码调试能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不同进位计数制间的转换
清华大学 郑莉
32
C++语言程序设计
——十进制→ R 进制 信 息 的 十进制小数转换成R进制小数 “乘 R 取整”法,例如: 表 高位 示 0.3125×2 = 0 .625 与 0.625 ×2 = 1 .25 存 0.25 ×2 = 0 .5 储
面向对象的基本概念
——对象
清华大学 郑莉
面 向 对 象 的 方 法
一般意义上的对象:
– 是现实世界中一个实际存在的事物。
– 可以是有形的(比如一辆汽车),也可 以是无形的(比如一项计划)。
– 是构成世界的一个独立单位,具有:
静态特征:可以用某种数据来描述 动态特征:对象所表现的行为或具有的功能
11
C++语言程序设计
清华大学 郑莉
程序设计方法的发展历程
面 向 对 象 的 方 法
——面向对象的方法
将数据及对数据的操作方法封装在一 起,作为一个相互依存、不可分离的 整体——对象。 对同类型对象抽象出其共性,形成类。 类通过一个简单的外部接口,与外界 发生关系。 对象与对象之间通过消息进行通讯。
6
C++语言程序设计
清华大学 郑莉
计 算 机 语 言 的 发 展
面向对象的语言
优点:
使程序能够比较直接地反问题域的本 来面目,软件开发人员能够利用人类认识 事物所采用的一般思维方法来进行软件开 发。
7
C++语言程序设计
程序设计方法的发展历程
清华大学 郑莉
面 向 对 象 的 方 法
——面向过程的程序设计方法
C++语言程序设计
第一章 绪论
清华大学 郑 莉
C++语言程序设计
清华大学 郑莉
本章主要内容
计算机程序设计语言的发展 面向对象的方法 面向对象的软件开发 信息的表示与存储 程序的开发过程
2
C++语言程序设计
清华大学 郑莉
计 算 机 语 言 的 发 展
计算机程序
计算机的工作是用程序来控制的
16
C++语言程序设计
面向对象的基本概念
——类
清华大学 郑莉
面 向 对 象 的 方 法
面向对象方法中的"类"
– 具有相同属性和服务的一组对象的集合
– 为属于该类的全部对象提供了抽象的描述, 包括属性和行为两个主要部分。
– 类与对象的关系: 犹如模具与铸件之间的关系,一个属于某 类的对象称为该类的一个实例。
清华大学 郑莉
面 向 对 OOP工作就是用一种面向对象的编 象 的 程语言把OOD模型中的每个成分书写出 软 来,是面向对象的软件开发最终落实的 件 开 重要阶段。 发
24
编程
C++语言程序设计
清华大学 郑莉
面 向 对 象 的 软 件 开 发
测试
测试的任务是发现软件中的错误。 在面向对象的软件测试中继续运用面 向对象的概念与原则来组织测试,以 对象的类作为基本测试单位,可以更 准确的发现程序错误并提高测试效率。
程序所描述的具体事物。
高级语言
5
C++语言程序设计
清华大学 郑莉
计 算 机 语 言 的 发 展
面向对象的语言
出发点:
–更直接地描述客观世界中存在的事物 (对象)以及它们之间的关系。
特点:
–是高级语言。 –将客观事物看作具有属性和行为的对象。 –通过抽象找出同一类对象的共同属性和 行为,形成类。 –通过类的继承与多态实现代码重用
25
C++语言程序设计
清华大学 郑莉
面 向 对 象 的 软 件 开 发
维护
将软件交付使用后,工作并没有完 结,还要根据软件的运行情况和用户的 需求,不断改进系统。 使用面向对象的方法开发的软件, 其程序与问题域是一致的,因此,在维 护阶段运用面向对象的方法可以大大提 高软件维护的效率。
26
C++语言程序设计
30
C++语言程序设计
——R 进制→十进制 信 息 的 各位数字与它的权相乘,其积相加。 表 例如: (11111111.11)2=1*27 + 1*26 + 1* 25 +1* 24 示 + 1* 23 + 1* 22 +1* 21+ 1* 20+1*2-1+1*2-2 与 =(255.75)10 存 (3506.2)8=3*83 + 5*82 + 0*81 + 6*80 +2*8-1 储 =(1862.25)10
程序是指令的集合。
指令是计算机可以识别的命令。
3
C++语言程序设计
清华大学 郑莉
计 算 机 语 言 的 发 展
机器语言与汇编语言
由计算机硬件系统可以识别的二进制指 令组成的语言称为机器语言。
计算机发展的初期,软件工程师们只能用机器 语言来编写程序。这一阶段,在人类的自然语言和 计算机编程语言之间存在着巨大的鸿沟。
22
C++语言程序设计
清华大学 郑莉
面 向 对 象 的 软 件 开 发
设计
针对系统的一个具体实现运用面向对 象的方法。其中包括两方面的工作:
– 把OOA模型直接搬到OOD,作为OOD 的一部分
– 针对具体实现中的人机界面、数据存储、 任务管理等因素补充一些与实序设计
汇编语言将机器指令映射为一些可以被 人读懂的助记符,如ADD、SUB等。
此时编程语言与人类自然语言间的鸿沟略有缩 小,但仍与人类的思维相差甚远。因为它的抽象层 次太低,程序员需要考虑大量的机器细节。
4
C++语言程序设计
清华大学 郑莉
计 算 机 高级语言屏蔽了机器的细节,提高了 语 言 语言的抽象层次,程序中可以采用具有 的 一定涵义的数据命名和容易理解的执行 发 语句。这使得在书写程序时可以联系到 展
14
C++语言程序设计
面向对象的基本概念
——对象
清华大学 郑莉
面 向 对 象 的 方 法
面向对象方法中的对象:
– 是系统中用来描述客观事物的一个实体, 它是用来构成系统的一个基本单位。对象 由一组属性和一组行为构成。 – 属性:用来描述对象静态特征的数据项。 – 行为:用来描述对象动态特征的操作序列。
15
C++语言程序设计
面向对象的基本概念
——类
清华大学 郑莉
面 向 对 象 的 方 法
分类——人类通常的思维方法 分类所依据的原则——抽象
– 忽略事物的非本质特征,只注意那些与 当前目标有关的本质特征,从而找出事 物的共性,把具有共同性质的事物划分 为一类,得出一个抽象的概念。 – 例如,石头、树木、汽车、房屋等都是 人们在长期的生产和生活实践中抽象出 的概念。
程序的目的:用于数学计算
主要工作:设计求解问题的过程
缺点:对于庞大、复杂的程序难以开发 和维护
8
C++语言程序设计
面 ——面向过程的结构化程序设计方法 向 设计思路 对 – 自顶向下、逐步求精。采用模块分解与 象 功能抽象,自顶向下、分而治之。 的 程序结构: 方 – 按功能划分为若干个基本模块,形成一 个树状结构。 法
29
C++语言程序设计
清华大学 郑莉
程序设计中常用的数制 信
息 的 表 示 与 存 储
进制 二进制 八进制 十进制 十六进制 基数 2 8 10 16 进位原则 逢2进1 逢8进1 逢 10 进 1 逢 16 进 1 基本符号 0,1 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7,8,9, 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F
清华大学 郑莉
面 向 对 象 的 方 法
——多态性
多态是指在一般类中定义的属性或行 为,被特殊类继承之后,可以具有不 同的数据类型或表现出不同的行为。 这使得同一个属性或行为在一般类及 其各个特殊类中具有不同的语义。 例如:
数的加法->实数的加法 ->复数的加法
20
C++语言程序设计
清华大学 郑莉
0.5 ×2 = 1 .0 所以 0.312510 = 0.01012
不同进位计数制间的转换
清华大学 郑莉
33
C++语言程序设计
信 ——二、八、十六进制的相互转换 息 的 每位八进制数相当于三位二进制数 表 每位十六进制数相当于四位二进制数 示 (1011010.10)2=(001 011 010 .100)2 =(132.4)8 与 1010 .1000)2 存 (1011010.10)2=(0101 =(5A.8)16 储
面 向 对 象 的 软 件 开 发
系统分析
系统分析阶段应该扼要精确地抽象出 系统必须做什么,但是不关心如何去 实现。 面向对象的系统分析,直接用问题域 中客观存在的事物建立模型中的对象, 对单个事物及事物之间的关系,都保 留他们的原貌,不做转换,也不打破 原有界限而重新组合,因此能够很好 地映射客观事物。
(0.2A)16=2*16-1 +10*16-2=(0.1640625)10
不同进位计数制间的转换