当前位置:文档之家› C面向对象程序设计

C面向对象程序设计


19
P160例:6.3
6.2 对象的定义
注:外部函数不能直接引用对象的私有成员。
例6.2的main主程序改写成下面的形式:
#include <iostream.h>
void main()
{
date d1; d1.settime(2006,3,3); int a,b,c;
正确的引用,能直接引用对 象的公有成员。
private: int x,y; public: void setpoint(int a,int b);
void show() { cout<<x<<“ “<<y<<endl;} }; void point::setpoint(int a,int b)
void main() {
point p1,p2; p1.setpoint(3,4); p2=p1; p1.show(); p2.show(); }
– 例如:4.5kg的海尔全自动洗衣机是洗衣机类的一个 实例,它具备洗衣机的一般特性和功能,对应于OOP 中的对象。
7
6.1 类的定义
类是一种自定义的数据类型,类的定义一般分为说明部分和实现部 分:说明部分是用来说明该类中的成员,包含数据成员的说明和成 员函数的说明(成员函数是用来对数据成员进行操作的,又被称为 “方法”);实现部分是用来对成员函数的定义。换句话说,说明 部分告诉用户“可做什么”,而实现部分告诉用户“怎么做”。对 于用户来说,往往更加关心说明部分,而实现部分是一些不必关心
– 类是对一类具有相同属性和行为特征的对象的抽象。
– 类是一种模板,并不代例表:具从体各种的时事钟物到。时例钟类如的:抽洗象衣。机 是一个抽象的概念,是对所有规格、所有属品性:牌时的、洗分衣、秒
机的一种概括。
各种钟表 抽象 操作:显示时间
设置时间
数据抽象:int hour,minute,second;
6.1 类的定义
类的声明: 声明一个时钟类的例子:
class Clock
类{
的 public:

void SetTime( int h ,int m ,int s);

void ShowTime();
部 private:

int hour ,minute ,second;
};
类 的
void Clock::SetTime( int h ,int m ,int s)
的信息。
类的一般定义格式如下: class <类名>
如:电视机
{
private:
例:
<私有数据成员和成员函数的说明> protected:
说明部分
<保护数据成员和成员函数的说明>
public:
<公有数据成员和成员函数的说函数,实最现后部的分分号不能丢掉
8 <各个成员函数的实现>
实 { hour=h; minute=m; second=s;}
现 void Clock::ShowTime()

9分
{ cout<<hour<<“:”<<minute<<“:”<<second<<endl;}
6.1 类的定义
类成员的访问控制
– 访问权限关键字:private、public、protected private到下一个权限关键字之间的成员为私有成员,私有数据 成员只能在类中的成员函数中使用,私有成员函数只能被类中 的其他成员函数调用,私有成员不能被类的对象访问。 public到下一个权限关键字之间的成员称为公有成员,公有成 员可以在类体中使用,也可以被类的对象直接访问。 protected到下一个权限关键字之间的成员称为保护成员,保护 成员与私有成员的含义相同,区别在对派生类的影响不同。
6
代码抽象:ShowTime();SetTime();
对象
– 类是对象的抽象,对象是类的实例(instance),即 类的变量,正如在前几章称变量是数据类型的实例一 样。声明一种数据类型只是告诉编译系统该数据类型 的结构形式,并没有预定内存,或者讲并没有创建了 可用来存放数据的变量。类只是一个样板,以此样板 可以在内存中开辟出一个个同样结构的实例——对象。
17
6.2 对象的定义
对象的定义: 对象是类的实例,对象是属于某个已知的类。因此,在
定义对象之前,一定要先定义好该对象所属的类。 对象的定义与定义某类型的变量是一致的:
格式:<类名> <对象名表>; 例:clock clock1, clock2, * pclock,
&clock3=clock1,clock4[31]; 其中: clock为日期类的类名,clock1和clock2是一般的 对象名;*pclock是指向对象的指针;clock3是对象的引 用,给它赋以初值,使它是clock1的别名;clock4是对 象数组的数组名,它有31个元素,每个元素是一个对象。
6.1 类的定义
(5)默认参数
成员函数可以对其参数设置默认值
– 在成员函数的说明部分设置默认值。
– 例6.2: class date
默认参数在说 明部分设置。
{
public:
void setdate(int y=2008,int m=9,int d=1};
int isleapyear();
void print();
};
11
错误
6.1 类的定义
类的成员函数
– 类的成员函数是对类内中的数据的操作,同时作为类 和外部程序的接口,代表了类的对象的行为。
– 成员函数可以在类体中定义,也可在类体外定义,两 种定义方式有所区别。
(1)在类体外定义成员函数时,必须先在类体中作函 数的原型说明,再在类体外定义。
在类体外定义的格式如下:
4
引言
面向对象程序设计方法
– 程序的定律是: 对象=(算法+数据结构) 程序=(对象+对象+……)
也就是说,程序就是许多对象在计算机中相继表现自己。 – 面向对象程序设计的核心思想是数据的分解,着重点放在被
操作的数据上而不是实现操作的过程上。 将数据及其操作作 为一个整体对待。 – 可维护性和可复用性高。 – 面向对象程序设计的框架可以表示为:
<类1的定义> <类2的定义> …… <类n的定义> <主函数main> <类1的成员函数定义> <类2的成员函数定义> …… <类3的成员函数定义>
5
6.1 类的定义
一、类和对象概念
– 类:实际是一种新的数据类型。
类: 数据成员(属性) 成员函数(行为)
对象
– 类是一种复杂的数据类型,它是将不同类型的数据和 与这些数据相关的操作封装在一起的集合体。
C++面向对象程序设计 林桂明
1
第6章 类和对象
定义类和对象 构造函数 析构函数 对象的生存期 this指针 静态成员 常成员 友元 对象数组 成员对象
2
本章学习目标 掌握类与对象的基本概念 熟练掌握类的各种形式构造函数的使用 掌握类的析构函数的使用 理解并掌握this指针的使用 掌握常类型的使用
– 例:
13
练习: 1、定义圆类,包含半径数据成员,计算周长和
面积成员函数。 2、编写程序创建Number类,它有两个整型数
据成员x和y。它应包含成员函数以读取数据,对 两个数据进行加、减、乘、除运算,并显示结果。
14
6.1 类的定义
(4)成员函数重载 成员函数可以定义为内联函数外,也可以进行重载。
void dispRec( )
{ cout<<"Rectangle:x1="<<x1<<"y1="<<y1<<endl;
cout<<"x2="<<x2<<"y2="<<y2<<endl;
}
};
void main()
{
Rectangle Rect1;
或: <对象名> -> <公有成员函数>(<参数表>);
例: clock1.hour 表示 clock类的clock1对象的公有数据成 员hour , clock1.settime (int h, int m, int s) 表示clock类的 clock1对象的公有成员函数settime( )。
– 关键字public , private和protected在类体内出现的先后顺序无 关紧要。
– 当私有成员处于类声明中的第一部分时,关键字private可以省 略。
– 私有成员通常是一些数据成员,公有成员通常是一些成员函数。
10
6.1 类的定义
类的数据成员
– 描述类的属性。在类体内定义,定义方式与一般变量 相同。
15 };
void test::setval(int x) { X=x;
Y=x*x; } void test::setval(int x,int y) { X=x; Y=y; } int test::add(int x,int y) { X=x; Y=y;
return X+Y; } int test::add(int x) { X=Y=x; return X+Y;} int test::add() { return X+Y; }
相关主题