主讲教师: 黄襄念
西华大学数学与计算机学院
图像处理与模式识别实验室
C / C++
基础编程实训
面向过程的程序设计方法
模块化设计(搭积木)
程序由函数(模块)构成:main( ) + 其他函数
开发过程:编写函数,函数组装成程序
功能分解:由粗到细,层层分解,逐步求精
缺点
函数功能单一,数量众多。让它们直接构成整个程序
就像把计算机拆解为零件,再组装起来一样困难。
——零件太多、太杂,难以组装
产生软件危机:代码重用性差,难开发、难维护。
实训九类的封装与构造
2/29
面向对象程序设计
Object Oriented Programming,OOP
模块化设计(搭积木)
程序由对象(模块)构成:main() + 对象
自然界也是由一个个实体(对象)组成的
对象= 成员变量+ 成员函数(封装为一个整体)
开发过程:编写对象,对象组装成程序。
功能分解:由粗到细,层层分解,逐步求精
优点
一个程序比喻为一台计算机,把计算机拆解为一个个
部件即对象:主板、CPU、显卡、硬盘、内存条等,
这样组装计算机就轻松容易多了。
对象允许嵌套,还可以被继承(后述)
实训九类的封装与构造
3/29
类——对象的抽象(Abstraction)
一种自定义的数据类型:类类型(变量+函数)
int x ; // int 是类型,x 是变量
归纳了同类对象的共性,不是一个个的实体
不同的类:人,中国人,四川人,成都人,西华人
对象——类的实例(Instance)
对象是类(类型)的变量,是一个个的实体
不同的对象:中国人张艺谋,西华人张三,…
类与对象的使用
先定义类(类型),再创建该类的对象(变量)。
实训九类的封装与构造
4/29
类的定义
class 类名
{
private : // 缺省
私有成员变量、函数;
protected :
保护成员变量、函数;
public :
公有成员变量、函数;
} ;
访问权限:
顺序可变,也可省略。例:
实训九类的封装与构造
class Stud // 学生类
{
char name[10];
int age;
char sex;
public :
long int ID;
void display(void);
} ;
访问权限
5/29
访问属性(权限)——非常容易混淆!
public // 公有成员,内外均可访问
本类成员函数体内、外,均可访问它。外部接口
上例 Stud 类:成员变量 ID, 成员函数 display()
private // 私有成员,外部不能访问
只有本类成员函数体内,才能访问它
上例 Stud 类:
成员变量 name, sex, age,只有在 display函数中
才能使用它;其他都不能访问。
protected // 保护成员,外部不能访问
与 private 相同,只对派生类影响不同(以后讲)
实训九类的封装与构造
6/29
class Rectangle // 定义矩形类
{
private :
float width ;
float length ;
float area ;
public :
float getLength( void) { return length ; }
inline float getWidth( void ) ;
void setData( float, float ) ;
float getArea( void ) ;
void calcArea( void ) ;
} ;
实训九类的封装与构造
函数的声明
在类外实现
函数的实现
内联函数
内联函数要求:函数体很简单
no loop, no switch, …
7/29
成员函数在类外实现
inline float Rectangle:: getWidth(void)
{
return width ; // 内部访问私有成员width
}
void Rectangle:: setData(float w, float len )
{
width = w ; // 内部访问私有成员 width
length = len ; // 内部访问私有成员 length
}
实训九类的封装与构造
指明函数所属的类
缺省:非成员函数
8/29
定义对象(创建对象,类实例化)
理解为:定义类的变量(对象)
上例类 Rectangle,设其他成员函数已实现
void main()
{
Rectangle box ; // 定义对象 box
(, ) ; // 外部访问公有成员函数
cout <<
9类的封装与构造 来自淘豆网m.daumloan.com转载请标明出处.