面向对象程序设计基础主讲人:高天真教材与参考书
,面向对象程序设计基础,,李师贤等,
高等教育出版社,2003年 4月版
,C++语言基础教程,,吕凤翥著,
清华大学出版社,2002年 3月版
,C++ PROGRAM DESIGN,
An Introduction to programming and
Object-Oriented Design,英文版,
COHOON&DAVIDSON,3rd Edition
清华大学出版社,2002年 1月版第一章 程序设计与 C++语言初步
§ 1.1 C++介绍
§ 1.2 C++语言结构
§ 1.3 C++程序的书写风格
§ 1.4 C++程序的实现
§ 1.1 C++介绍
OOP Language
C与 C++
C++的特点
OOP Language
程序设计方法的发展:
结构化 面向对象
OOPL可分为两类:
1,Pure OOP
典型代表,Smalltalk,Eiffel,Java等
2,对传统语言进行面向对象的扩展典型代表,C++
C与 C++的关系
1、二者本质区别:
C,面向过程,支持结构化程序设计
C++:面向对象,支持面向对象程序设计
2、二者关系:
C++:包含了 C的全部内容,是对 C的扩展
C,是 C++的一个子集注:
OOP!=C++
C++的特点
既支持结构化的程序设计,也支持面向对象的程序设计,这是 C++语言成功的重要原因
是一种有生产力的 OOP语言
§ 1.2 C++语言结构
一个简单程序 hello.cpp
C++语言符号
C++语法符号
C++程序构成成分
C++程序构成部件一个简单程序:
/* file:hello.cpp
A Simple Program,Output,Hello” */
#include<iostream.h>
int main( )
{
cout<<“Hello”; //输出,Hello”
return 0;
}
C++语言符号
26个英文字母
a,b,c,….,z,A,B,C,…Z
10个数字
0,1,2,3,4,5,6,7,8,9
其他符号
!,#,%,^,&,*,( ),< >,+,-,/,{ },[ ]…..
C++语法符号
1,数整数,0,123,-32
小数,3.14,0.71828
2,字符
‘ A?,?a?,?4?,?*?,?{?,…..
3,字符串
,Hello,world”
“Sorry,you entered wrong number!”
4,配对使用的符号如,{ },[ ]、( ),< >
5,表示注释的符号如,/*,*/,//
6,运算符如,+,-,*,/,&&,||、!,==等
7,标识符预定义,main,include,cout,cin
自定义,number,i1,_get_char
6,运算符
算术运算符,+,-,*,/,%
逻辑运算符,&&,||,!
比较运算符,==,!=,<,<=,>,>=
赋值运算符,=
自增自减运算符,++,--
条件运算符,?:
其他运算符,*,&,:,等
7,标识符
标识符的作用
标识符的构成规范
标识符分类
注意标识符的作用
标识符:
用来表示常量、变量、数组、
指针、函数、类及对象等。
标识符构成规范
标识符由字母、数字和下划线‘ _?组成
标识符必须以字母或下划线开头
标识符区分大小写标识符分类
预定义标识符,( 保留字)
main void int float char return
class if else do while
自定义标识符:
PI,ARRAY_NUMBER,NAME
al,number,get_char,sub1_total
People,Student,Date
使用标识符需注意:
自定义标识符不能用系统的保留字
尽量使用有意义的单词作标识符常用的标识符形式有以下几种:
1、单词之间用下划线连接,如,my_car
2、骆驼表示法,如,MyCar,SizeOfString
3、匈牙利标记法,如,iMyCar,ipMyCar
C++程序构成程序 = 注释 + 数据 + 操作例,用户输入圆的半径 Redius,程序输出圆的周长注释:程序的说明部分数据:整数、小数、字符、字符串等操作:定义、输入、运算、输出
/*用户输入圆的半径 Redius,输出圆的周长 */
#include <iostream.h>
const float PI=3.14159;
int main( )
{
int redius;
float perimeter; //数据定义
cout <<,Please input the redius:”; //数据输出
cin >> redius; //数据输入
perimeter = 2 * PI * redius; //数据运算
cout <<,Perimeter of the circle:” << perimeter;
return 0;
}
// ---常数,---常量标识符,---变量标识符,---字符串
C++程序构成 ---注释
注释形式一,由符号对 /*和 */括起来的文本形式二,由符号 //开始的一行文本如:
/***This is a comments example that
can occupy multiple lines***/
// This is a one-line comments example
C++程序构成 ---数据
数据常数,123,3.14,-32,‘ A?,” Hello”
常量标识符,PI,LINE_NUMBER
变量标识符,number,grade
C++程序构成 ---数据数据类型:
1、简单数据类型整数、字符、小数等
2、构造数据类型数组、指针、引用、结构、类等
C++程序构成 ---操作
1、数据定义
2、数据输入
3、数据运算
4、数据赋值
5、数据输出数据操作 ---数据定义数据要求 先说明,后使用说明程序中使用的数据:常量和变量说明它们的数据类型、初始值
int grade=100; //整型变量
float radius=12.45; //浮点型变量
const char CH=?E?; //字符常量
int ia[10]; //整型数组数据操作 ---数据输入
从键盘、文件或数据库中读入数据如:从键盘读入数据:
cin >> radius; //读入一个小数
cin >> grade; //读入一个整数
cin >> ex; //读入一个字符数据操作 ---数据运算
利用运算符对数据进行运算如:
12+34+78.69;
2*PI*radius;
grade_sum/STUD_NUM;
数据操作 ---数据赋值
将表达式运算的结果赋给变量如:
sum=12+34+78.69
circum=2*PI*radius
average=grade_sum/STUD_NUM
数据操作 ---数据输出
将数据或运算结果输出到屏幕、文件或数据库如:将数据输出到屏幕上
cout << radius*33.6;
cout << grade;
cout << CH;
数据操作与表达式
表达式是由 操作数 和 操作符 按照一定语法规则构成的符号序列操作数,常数、常量标识符、变量标识符操作符,输入、运算、赋值、输出
C++程序构成部件
语句
函数
类
文件
C++程序构成部件 ---语句
语句是程序中可以执行的基本单元
程序的执行过程就是语句的执行过程
表达式语句是程序的主要组成成分表达式 +分号 表达式语句语句的分类
1、说明和定义语句说明或定义常量、变量、函数或类
2、表达式语句由表达式加上分号构成的语句
3、流程控制语句控制语句的执行流程语句 ----说明和定义语句
说明或定义程序中用到的变量、常量、函数或对象
int grade; //变量
const float PI=3.14159; //常量
void swap(int &a,int &b); //函数
PEOPLE marry; //对象语句 ----表达式语句
输入语句,cin >> a;
赋值语句,a = b + c;
运算语句,a++;
输出语句,cout << a;
函数调用语句,swap(a,b);
返回语句,return a+b;
空语句,;
语句 ----流程控制语句
语句的执行一般是顺序执行的
可以通过流程控制语句改变程序的执行流程分支语句 (if,switch)
循环语句 (do…while,while,for)
跳转语句 (break,continue,goto)
语句 ---流程控制示意图顺序 循环 分支
C++程序构成部件 ---函数
语句与函数的关系
函数构成
函数分类
函数调用语句与函数的关系
函数是 C++程序的主要组成成分
语句在函数中体现,语句是函数的主体函数构成返回值 函数名(参数表) //函数头
{
函数体
}
函数构成 =函数头 +函数体例:
函数举例
void fatal_error(char msg[ ])
{
cout <<,Error.” << msg << endl;
cout <<,Please contact the Developer\n”;
exit(-1);
}
函数分类 (一)
预定义库函数
string.h,strlen(),strcpy( ),strcom( )
math.h,sin( ),cos( ),sqrt( )
stdio.h,printf( ),scanf( )
其它库函数
自定义函数
get_number( )
error( )
函数分类 (二)
通用函数
printf( )
get_char( )
类的成员函数
STUDENT s;
cout<<s.get_name( );
函数调用
main函数由执行环境的操作系统调用其它函数都由 main函数直接或间接调用
m a i n ( )
f u n c 1( )
f u n c 31( )f u n c 12( )f u n c 11( )
f u n c 3( )f u n c 2( )
C++程序构成部件 ---类
类与对象是面向对象的核心内容
引入类后,程序的主体从函数转化为类
类的特点:封装、继承、多态
C++程序构成部件 ---类
封装了数据和操作
成员具有 公有,保护 和 私有 三种访问限制
引入类后,程序的主体从函数转化为类类的定义
class PEOPLE
{
public:
PEOPLE(char *name,int age);
char *get_name( ); //取姓名
int get_age( ); //取年龄
void inc_age( ); //长一岁
private:
char name[20];
int age;
};
类的实例 ---对象
PEOPLE john(“John”,29);
PEOPLE marry(“Marry”,18);
cout<<“name:”<<john.get_name( )<<endl;
cout<<“age:”<<john.get_age( )<<endl;
john.inc_age( ); //增长一岁
john.name( ); //错误!!
类的特点 ---封装与隐藏
将算法和数据结构有机集成在一起传统方法:数据和操作分离
支持模块化程序设计类成为基本的模块,作为程序设计的基础
保护和私有成员,对外隐藏其内部实现使程序的可维护性、安全性得到保证类的特点 ---继承与派生
class STUDENT,public PEOPLE
{
public:
student(char *no,int age,char *s_no,int c_no);
char *get_stu_no( ); //取学号
int get_class_no( ); //取班号
void charge_class_no( ); //改班号
protected:
char student_no[8]; //学号
int class_no; //班号
};
继承的好处
减少了开发新的类的工作量
-提高了软件开发的效率
软件复用
-形成了大规模软件生产的基础
提高程序的正确性
-经过严格测试的类,能保证其正确性
C++程序构成部件 ---文件
文件是编译的基本单位
一个 C++程序由多个文件构成,文件包括:头文件和源文件
只有一个文件可以定义 main( )函数,它是程序的入口点
(C++语言结构)小结文法符号注释操作符标识符常数保留字数据类型常量、变量标识符常量、变量定义或说明表达式语句
+
+
+;
(C++语言结构)小结语句标识符函数定义数据定义注释类定义程序
§ 1.3 C++程序的书写风格
尽量提高可读性 ( C++语言书写格式灵活、无限制)
基本原则:
1、一般一行写一条语句
2、采用缩格书写方式:表示同一类内容的语句行要对齐,如:函数体、循环体等
3、每个大括号占一行,并与使用大括号的语句对齐,大括号内的语句缩格书写且各语句对齐。
§ 1.4 C++程序的实现
编辑
编译
运行
实现过程中可能出现的错误
C++程序的实现 ---编辑
编辑将写好的 C++源程序输入并存盘,生成磁盘文件,文件扩展名为,cpp
C++程序的实现 ---编译
编译 (分为三个子过程)
1、预处理过程:
执行源程序中的预处理命令,如,include<….> 将头文件加入到源程序中
2、编译过程:
进行词法和语法分析,生成目标代码文件 (.obj文件 )
3、连接过程:
将用户程序生成的多个目标文件和系统提供的库文件中的 代码连接起来,生成可执行文件(,exe文件)
C++程序的实现 ---运行
执行,exe文件编译、连接、运行中可能出现的错误
编译时的错误:词法和语法错
连接时的错误:一般是致命错
运行时的错误:算法错、逻辑错
,面向对象程序设计基础,,李师贤等,
高等教育出版社,2003年 4月版
,C++语言基础教程,,吕凤翥著,
清华大学出版社,2002年 3月版
,C++ PROGRAM DESIGN,
An Introduction to programming and
Object-Oriented Design,英文版,
COHOON&DAVIDSON,3rd Edition
清华大学出版社,2002年 1月版第一章 程序设计与 C++语言初步
§ 1.1 C++介绍
§ 1.2 C++语言结构
§ 1.3 C++程序的书写风格
§ 1.4 C++程序的实现
§ 1.1 C++介绍
OOP Language
C与 C++
C++的特点
OOP Language
程序设计方法的发展:
结构化 面向对象
OOPL可分为两类:
1,Pure OOP
典型代表,Smalltalk,Eiffel,Java等
2,对传统语言进行面向对象的扩展典型代表,C++
C与 C++的关系
1、二者本质区别:
C,面向过程,支持结构化程序设计
C++:面向对象,支持面向对象程序设计
2、二者关系:
C++:包含了 C的全部内容,是对 C的扩展
C,是 C++的一个子集注:
OOP!=C++
C++的特点
既支持结构化的程序设计,也支持面向对象的程序设计,这是 C++语言成功的重要原因
是一种有生产力的 OOP语言
§ 1.2 C++语言结构
一个简单程序 hello.cpp
C++语言符号
C++语法符号
C++程序构成成分
C++程序构成部件一个简单程序:
/* file:hello.cpp
A Simple Program,Output,Hello” */
#include<iostream.h>
int main( )
{
cout<<“Hello”; //输出,Hello”
return 0;
}
C++语言符号
26个英文字母
a,b,c,….,z,A,B,C,…Z
10个数字
0,1,2,3,4,5,6,7,8,9
其他符号
!,#,%,^,&,*,( ),< >,+,-,/,{ },[ ]…..
C++语法符号
1,数整数,0,123,-32
小数,3.14,0.71828
2,字符
‘ A?,?a?,?4?,?*?,?{?,…..
3,字符串
,Hello,world”
“Sorry,you entered wrong number!”
4,配对使用的符号如,{ },[ ]、( ),< >
5,表示注释的符号如,/*,*/,//
6,运算符如,+,-,*,/,&&,||、!,==等
7,标识符预定义,main,include,cout,cin
自定义,number,i1,_get_char
6,运算符
算术运算符,+,-,*,/,%
逻辑运算符,&&,||,!
比较运算符,==,!=,<,<=,>,>=
赋值运算符,=
自增自减运算符,++,--
条件运算符,?:
其他运算符,*,&,:,等
7,标识符
标识符的作用
标识符的构成规范
标识符分类
注意标识符的作用
标识符:
用来表示常量、变量、数组、
指针、函数、类及对象等。
标识符构成规范
标识符由字母、数字和下划线‘ _?组成
标识符必须以字母或下划线开头
标识符区分大小写标识符分类
预定义标识符,( 保留字)
main void int float char return
class if else do while
自定义标识符:
PI,ARRAY_NUMBER,NAME
al,number,get_char,sub1_total
People,Student,Date
使用标识符需注意:
自定义标识符不能用系统的保留字
尽量使用有意义的单词作标识符常用的标识符形式有以下几种:
1、单词之间用下划线连接,如,my_car
2、骆驼表示法,如,MyCar,SizeOfString
3、匈牙利标记法,如,iMyCar,ipMyCar
C++程序构成程序 = 注释 + 数据 + 操作例,用户输入圆的半径 Redius,程序输出圆的周长注释:程序的说明部分数据:整数、小数、字符、字符串等操作:定义、输入、运算、输出
/*用户输入圆的半径 Redius,输出圆的周长 */
#include <iostream.h>
const float PI=3.14159;
int main( )
{
int redius;
float perimeter; //数据定义
cout <<,Please input the redius:”; //数据输出
cin >> redius; //数据输入
perimeter = 2 * PI * redius; //数据运算
cout <<,Perimeter of the circle:” << perimeter;
return 0;
}
// ---常数,---常量标识符,---变量标识符,---字符串
C++程序构成 ---注释
注释形式一,由符号对 /*和 */括起来的文本形式二,由符号 //开始的一行文本如:
/***This is a comments example that
can occupy multiple lines***/
// This is a one-line comments example
C++程序构成 ---数据
数据常数,123,3.14,-32,‘ A?,” Hello”
常量标识符,PI,LINE_NUMBER
变量标识符,number,grade
C++程序构成 ---数据数据类型:
1、简单数据类型整数、字符、小数等
2、构造数据类型数组、指针、引用、结构、类等
C++程序构成 ---操作
1、数据定义
2、数据输入
3、数据运算
4、数据赋值
5、数据输出数据操作 ---数据定义数据要求 先说明,后使用说明程序中使用的数据:常量和变量说明它们的数据类型、初始值
int grade=100; //整型变量
float radius=12.45; //浮点型变量
const char CH=?E?; //字符常量
int ia[10]; //整型数组数据操作 ---数据输入
从键盘、文件或数据库中读入数据如:从键盘读入数据:
cin >> radius; //读入一个小数
cin >> grade; //读入一个整数
cin >> ex; //读入一个字符数据操作 ---数据运算
利用运算符对数据进行运算如:
12+34+78.69;
2*PI*radius;
grade_sum/STUD_NUM;
数据操作 ---数据赋值
将表达式运算的结果赋给变量如:
sum=12+34+78.69
circum=2*PI*radius
average=grade_sum/STUD_NUM
数据操作 ---数据输出
将数据或运算结果输出到屏幕、文件或数据库如:将数据输出到屏幕上
cout << radius*33.6;
cout << grade;
cout << CH;
数据操作与表达式
表达式是由 操作数 和 操作符 按照一定语法规则构成的符号序列操作数,常数、常量标识符、变量标识符操作符,输入、运算、赋值、输出
C++程序构成部件
语句
函数
类
文件
C++程序构成部件 ---语句
语句是程序中可以执行的基本单元
程序的执行过程就是语句的执行过程
表达式语句是程序的主要组成成分表达式 +分号 表达式语句语句的分类
1、说明和定义语句说明或定义常量、变量、函数或类
2、表达式语句由表达式加上分号构成的语句
3、流程控制语句控制语句的执行流程语句 ----说明和定义语句
说明或定义程序中用到的变量、常量、函数或对象
int grade; //变量
const float PI=3.14159; //常量
void swap(int &a,int &b); //函数
PEOPLE marry; //对象语句 ----表达式语句
输入语句,cin >> a;
赋值语句,a = b + c;
运算语句,a++;
输出语句,cout << a;
函数调用语句,swap(a,b);
返回语句,return a+b;
空语句,;
语句 ----流程控制语句
语句的执行一般是顺序执行的
可以通过流程控制语句改变程序的执行流程分支语句 (if,switch)
循环语句 (do…while,while,for)
跳转语句 (break,continue,goto)
语句 ---流程控制示意图顺序 循环 分支
C++程序构成部件 ---函数
语句与函数的关系
函数构成
函数分类
函数调用语句与函数的关系
函数是 C++程序的主要组成成分
语句在函数中体现,语句是函数的主体函数构成返回值 函数名(参数表) //函数头
{
函数体
}
函数构成 =函数头 +函数体例:
函数举例
void fatal_error(char msg[ ])
{
cout <<,Error.” << msg << endl;
cout <<,Please contact the Developer\n”;
exit(-1);
}
函数分类 (一)
预定义库函数
string.h,strlen(),strcpy( ),strcom( )
math.h,sin( ),cos( ),sqrt( )
stdio.h,printf( ),scanf( )
其它库函数
自定义函数
get_number( )
error( )
函数分类 (二)
通用函数
printf( )
get_char( )
类的成员函数
STUDENT s;
cout<<s.get_name( );
函数调用
main函数由执行环境的操作系统调用其它函数都由 main函数直接或间接调用
m a i n ( )
f u n c 1( )
f u n c 31( )f u n c 12( )f u n c 11( )
f u n c 3( )f u n c 2( )
C++程序构成部件 ---类
类与对象是面向对象的核心内容
引入类后,程序的主体从函数转化为类
类的特点:封装、继承、多态
C++程序构成部件 ---类
封装了数据和操作
成员具有 公有,保护 和 私有 三种访问限制
引入类后,程序的主体从函数转化为类类的定义
class PEOPLE
{
public:
PEOPLE(char *name,int age);
char *get_name( ); //取姓名
int get_age( ); //取年龄
void inc_age( ); //长一岁
private:
char name[20];
int age;
};
类的实例 ---对象
PEOPLE john(“John”,29);
PEOPLE marry(“Marry”,18);
cout<<“name:”<<john.get_name( )<<endl;
cout<<“age:”<<john.get_age( )<<endl;
john.inc_age( ); //增长一岁
john.name( ); //错误!!
类的特点 ---封装与隐藏
将算法和数据结构有机集成在一起传统方法:数据和操作分离
支持模块化程序设计类成为基本的模块,作为程序设计的基础
保护和私有成员,对外隐藏其内部实现使程序的可维护性、安全性得到保证类的特点 ---继承与派生
class STUDENT,public PEOPLE
{
public:
student(char *no,int age,char *s_no,int c_no);
char *get_stu_no( ); //取学号
int get_class_no( ); //取班号
void charge_class_no( ); //改班号
protected:
char student_no[8]; //学号
int class_no; //班号
};
继承的好处
减少了开发新的类的工作量
-提高了软件开发的效率
软件复用
-形成了大规模软件生产的基础
提高程序的正确性
-经过严格测试的类,能保证其正确性
C++程序构成部件 ---文件
文件是编译的基本单位
一个 C++程序由多个文件构成,文件包括:头文件和源文件
只有一个文件可以定义 main( )函数,它是程序的入口点
(C++语言结构)小结文法符号注释操作符标识符常数保留字数据类型常量、变量标识符常量、变量定义或说明表达式语句
+
+
+;
(C++语言结构)小结语句标识符函数定义数据定义注释类定义程序
§ 1.3 C++程序的书写风格
尽量提高可读性 ( C++语言书写格式灵活、无限制)
基本原则:
1、一般一行写一条语句
2、采用缩格书写方式:表示同一类内容的语句行要对齐,如:函数体、循环体等
3、每个大括号占一行,并与使用大括号的语句对齐,大括号内的语句缩格书写且各语句对齐。
§ 1.4 C++程序的实现
编辑
编译
运行
实现过程中可能出现的错误
C++程序的实现 ---编辑
编辑将写好的 C++源程序输入并存盘,生成磁盘文件,文件扩展名为,cpp
C++程序的实现 ---编译
编译 (分为三个子过程)
1、预处理过程:
执行源程序中的预处理命令,如,include<….> 将头文件加入到源程序中
2、编译过程:
进行词法和语法分析,生成目标代码文件 (.obj文件 )
3、连接过程:
将用户程序生成的多个目标文件和系统提供的库文件中的 代码连接起来,生成可执行文件(,exe文件)
C++程序的实现 ---运行
执行,exe文件编译、连接、运行中可能出现的错误
编译时的错误:词法和语法错
连接时的错误:一般是致命错
运行时的错误:算法错、逻辑错