cpp04类和对象
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Shenyang Aerospace University
28
内联成资料仅供员参考 函数举例(显式)
class Point
{
public:
void Init(int initX,int initY); int GetX( ); int GetY( );
private:
int X,Y;
};
Shenyang Aerospace University
注意:同一问题可能有不同的抽象结果——根据解决问题的要求不 同,产生的抽象成员可能不同。
Shenyang Aerospace University
7
简资料仅供单参考 的图书馆管理系统
系统功能需求
借阅者可以通过网络查询书籍信息和预订书籍 借阅者能够借阅和还书 图书管理员能够处理借阅者的借阅和还书请求 系统管理员可以对系统的数据进行维护,如增加、删
23
资料仅供参考
class Clock {
public: void SetTime(int H, int M, int S); void ShowTime( );
private: int Hour, Minute, Second;
};
Shenyang Aerospace University
24
资料仅供参考
20
资料仅供参考
类的成员
class Clock {
成员函数
public: void SetTime(int NewH, int NewM, int NewS); void ShowTime( );
private:
int Hour, Minute, Second;
}; 成员数据
Shenyang Aerospace University
}
Shenyang Aerospace University
25
带资料仅供缺参考 省参数的成员函数
void Clock :: SetTime( int NewH =0 , int NewM =0 , int NewS =0 )
{ Hour=NewH; Minute=NewM; Second=NewS;
Shenyang Aerospace University
27
内联成资料仅员供参考 函数举例(隐式 )
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; };
数据抽象:描述某类对象的属性或状态(对象相互区别 的物理量)。
行为抽象:描述某类对象的共有的行为特征或具有的功 能。
▪ 抽象的实现:通过类的声明
Shenyang Aerospace University
3
资料仅供参考 抽象实例——钟表
▪ 数据抽象:
int Hour int Minute int Second
号
Shenyang Aerospace University
9
▪ 读者
资料仅供参考
▪ 属性:借阅者帐号、姓名、班级、系别、所 借书目等
▪ 操作:预订书籍、借书 和还书。
▪ 图书管理员、系统维护员
帐号 姓名 权限
Shenyang Aerospace University
10
▪ 其它的类
资料仅供参考
预订信息类(Reservation):每个预订信息的日期、 书籍的ISBN、预订用户ID等。
Shenyang Aerospace University
11
资料仅供参考
封装
将抽象出的数据成员、函数成员相结合,将它们视 为一个整体。
目的是曾强安全性和简化编程, 使用者不必了解具体的实现细 节,而只需要通过外部接口, 以特定的访问权限,来使用类 的成员。
实现封装:类声明中的{ }
几点 如何调整
Shenyang Aerospace University
12
资料仅供封参考 装实例——钟表类
▪ 实例:
class Clock {
外部接口
public:
void SetTime(int NewH,int NewM,int NewS ); void ShowTime( );
}
Shenyang Aerospace University
26
资料仅供参考
内联成员函数
▪ 为了提高运行时的效率,对于较简单的函 数可以声明为内联形式。
▪ 内联函数体中不要有复杂结构(回顾)。 ▪ 在类中声明内联成员函数的方式:
将函数体放在类的声明中——(隐式)。 使用inline关键字——(显式)。
▪ 利用类可以实现数据的封装、隐藏、继承与派生。
▪ 利用类易于编写大型复杂程序,其模块化程度比 C中采用函数更高。
Shenyang Aerospace University
16
资料仅供参考
类的声明形式
类是一种用户自定义类型,声明形式:
class 类名称 {
public: 公有成员(外部接口)
private: 私有成员
Shenyang Aerospace University
30
资料仅供参考
重载成员函数
▪ 一个类中的成员函数可以重载 ▪ 不同类的同名成员函数互不相关
例如:日期类设计
Shenyang Aerospace University
31
class Date{ int year,month,day;
public: void set(int y,int m,int d); void set(string &s); bool isLeapYear();
Shenyang Aerospace University
18
class 类名称
{ public:
公有成员
private:
私有成员
protected:
保护型成员
};
资料仅供参考
私有成员
在关键字private后面 声明,只允许本类中的 函数访问,而类外部的 任何函数都不能访问。
如果紧跟在类名称的后 面声明私有成员,则关键 字private可以省略。
▪ 程序设计方法:
使用面向对象的观点来描述模仿并处理现实问 题。
▪ 要求:
高度概括、分类、和抽象。
Shenyang Aerospace University
2
资料仅供参考
抽象
抽象是对具体对象(问题)进行概括,抽出这 一类对象的公共性质并加以描述的过程。
▪ 先注意问题的本质及描述,其次是实现过程或细节。
14
资料仅供参考
多态性
▪ 多态:同一名称,不同的功能实现方式。 ▪ 目的:达到行为标识统一,减少程序中标
识符的个数。 ▪ 实现:重载函数和虚函数——见第8章
Shenyang Aerospace University
15
资料仅供参考
c++中的类
▪ 类是具有相同属性和行为的一组对象的集合,它 为属于该类的全部对象提供了统一的抽象描述, 其内部包括属性和行为两个主要部分。
21
类资料仅供的参考 成员——数据成员
▪ 与一般的变量声明相同,但需要将它放在类的声 明体中。
class Clock {
public: void SetTime(int H, int M, int S); void ShowTime( );
private: int Hour, Minute, Second;
第四章 类与对象 资料仅供参考
4.1 面向对象程序设计的基本特点 4.2 类和对象(★ ★★ ) 4.3 构造函数和析构函数(★★★)
4.4 类的组合(★★)
Shenyang Aerospace University
0
回顾:资料仅供面参考 向过程的设计方法
▪ 重点:
如何实现细节过程,将数据与函数分开。
29
资料仅供参考
inline void Point::Init(int initX,int initY) {
X=initX; Y=initY; }
inline int Point::GetX( ) {
return X; }
inline int Point::GetY( ) {
return Y; }
protected: 保护型成员
};
Shenyang Aerospace University
17
资料仅供参考
类成员的访问控制——公有成员
class 类名称
{ public:
公有成员
private:
私有成员
protected:
保护型成员
};
在关键字public后面 声明,它们是类与外部 的接口,任何外部函数 都可以访问公有类型数 据和函数。
Shenyang Aerospace University
19
class 类名称
{ public:
公有成员
private:
私有成员
protected:
保护型成员
};
资料仅供参考
保护类型
与private类似,其差 别表现在继承与派生时 对派生类的影响不同, 第七章讲。
Shenyang Aerospace University
};
Shenyang Aerospace University
22
类资料仅供的参考 成员——成员函数
▪ 通常在类中说明原形,在类外给出函数体实现, 并在函数名前使用类名加以限定。
▪ 也可以直接在类中给出函数体,形成内联成员 函数。
▪ 允许声明重载函数和带缺省形参值的函数
Shenyang Aerospace University
▪ 数据结构中的“图”
属性:数据数组,有向图或无向图。
处理:遍历;求两点之间的最短路径;求关键 路径等
Shenyang Aerospace University
6
资料仅供参考
抽象实例——人
▪ 数据抽象:
char *name, char *sex, int age, int id
▪ 行为抽象:
生物属性角度: GetCloth( ), Eat( ), Step( ),… 社会属性角度: Work( ), Promote( ) ,…
▪ 形式:
主模块+若干个子模块(main( )+子函数)。
▪ 特点:
自顶向下,逐步求精——功能分解。
▪ 缺点:
效率低,程序的可重用性差。
Shenyang Aerospace University
1
资料仅供参考
面向对象的方法
▪ 目的:
实现软件设计的产业化。
▪ 观点:
自然界是由实体(对象)所组成。
▪ 行为抽象:
SetTime( ) ShowTime( )
Shenyang Aerospace University
4
资料仅供参考
自行车
抽象
Shenyang Aerospace University
5
资料仅供参考
▪ 人事档案
属性:姓名、身份证号、工作经历等。
处理:分类、检索、修改、插入记录、删除记 录等
记录书目信息的类(Title):包括书籍的名字 (BookName)、作者(author)、ISSBN号,此书籍的 总数量(totle_number)、借出数量,是否允许借出等 属性。
书籍类(Book):书号、操作包括预订(reserve)、 按数目查询等。
借阅信息类(loan):包括所借图书的ISBN编号、借阅 时间等。
类外声明函数
void Clock :: SetTime(int NewH, int NewM, int NewS)
{ Hour=NewH;
作用域区分符
Minute=NewM;
Second=NewS;
}
void Clock :: ShowTime( )
{
cout<<Hour<<":"<<Minute<<":"<<Second;
除、更改书目,增加、删除和更新借阅者帐户,增加 和删除书籍。
Shenyang Aerospace University
8
▪ 读者(借阅者)
资料仅供参考
登录系统
查询自己的借阅信息
查询书籍信息
预订书籍
借阅书籍
归还书籍
▪ 图书管理员
处理书籍借阅
处理书籍归还
删除预订信息
▪ 系统维护者
查询读者信息 查询书籍信息 增加数目 删除或更新数目 增加书籍 删除书籍 添加读者帐号 删除或更新读者帐
private:
int Hour,Minute,Second;
};Βιβλιοθήκη 特定的访问权限边界
Shenyang Aerospace University
13
资料仅供参考
继承与派生
是C++中支持层次分类的一种机制,允许程序 员在保持原有类特性的基础上,进行更具 体的说明。
实现:声明派生类——见第7章
Shenyang Aerospace University
}; void Date::set(int y,int m ,
int d) { year = y;
month = m; day = d; }
Shenyang Aerospace University