nullnullnull教学目标教学目标(1) 理解以类与对象为核心的面向对象程序设计的基本思想,包括封装、继承和多态性的概念及其在面向对象程序中的体现;
(2) 掌握类的定义方法;
(3) 掌握类成员的访问权限控制;
(4) 掌握对象的创建与使用方法;
(5) 了解构造函数与析构函数的定义与使用。
(6) 了解类的继承与派生、运算符重载、以及
模板
个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载
等概念。基本
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
基本内容 7.1 面向对象程序设计概述
7.2 类与对象
7.3 继承7.1 面向对象程序设计概述7.1 面向对象程序设计概述两种程序设计思想:
面向过程的程序设计(Structure Programming)
以功能为中心,采用函数来描述操作(动词)
面向对象程序设计(Object Oriented Programming)
以数据为中心,采用对象来描述内部属性和操作方法(名词)对象和面向对象对象和面向对象客观世界实体
例:人类
静态特征(属性attribute)
姓名、性别、年龄、班级(/单位)、身高等
动态特征(行为behavior)
吃饭、睡觉、说话、走路、上课(/上班)等
例:汽车
静态特征(属性attribute)
品牌、生产厂、型号、颜色等
动态特征(行为behavior)
行驶、转弯、鸣笛、刹车等面向对象的基本特征面向对象的基本特征抽象:数据抽象+代码抽象
封装:过程和数据封藏起来
继承:基类和派生类
多态性:虚函数、函数重载OOP的优点OOP的优点开发时间短,效率高,可靠性高,所开发的程序更强壮
重用,共享,可维护性,精简
适合于大程序长时间的开发工作
7.2 类与对象7.2 类与对象7.2.1 类的定义
7.2.2 成员函数
7.2.3 对象的使用
7.2.4 构造函数与析构函数
类(Class) ----数据类型类(Class) ----数据类型类是具有相同属性和相同的方法的对象的集合,它是一种既包含数据又包含函数的抽象数据类型。
类的构成
数据成员(Data Member),即类的属性;
成员函数(Member Function),即类的方法;7.2.1 类的定义7.2.1 类的定义 class 类名
{
private: //私有成员
私有的数据成员和成员函数;
protected: //保护成员
保护的数据成员和成员函数;
public: //公有成员
公有的数据成员和成员函数;
};访问控制权限 访问控制权限 私有部分(private):数据成员和成员函数只能在该类的范围内被本类的成员函数访问——体现类的封装性
保护部分(protected):与私有成员的性质相似
公有部分(public):成员既可以被本类的成员函数访问,也在类外被该类的对象访问——对外界的接口 例:定义一个狗类(Dog)例:定义一个狗类(Dog)class Dog
{
private:
char name[20]; // 狗的名字
int age; // 狗的年龄
public:
void set(char *n, int a); // 设置数据成员值的函数
void display(); // 输出数据成员值的函数
void speak(); // 发出狗叫声的函数
};7.2.2 成员函数7.2.2 成员函数成员函数的一般形式:
函数类型 类名 :: 函数名 ( 参数
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
)
{
函数体
}类的作用域 类的作用域 一个类的所有数据成员和成员函数都在该类的作用域内(包括在类声明外部定义的成员函数)
类中的每个成员都可以直接访问本类中的其他任何成员。
如果在类作用域之外对该类的数据成员和成员函数进行访问,则要受到一定的限制,有时甚至是不允许的。例:Dog类成员函数的定义例:Dog类成员函数的定义void Dog::set(char *n, int a)
{
strcpy(name,n);
age = a;
}
void Dog::display()
{
cout<
运算符例7-1: Dog类和对象例7-1: Dog类和对象int main()
{ char name0[20];
int age0;
Dog dog1, dog2;
cout << "请输入一条狗的名字和年龄:";
cin >> name0 >> age0;
dog1.set (name0, age0);
cout << "第一条狗:" <
#include
using namespace std;
class Person //人员类定义
{
char Name[10]; //姓名
int Age; //年龄
public:
void Set(char *name, int age) //设置数据成员
{ strcpy(Name, name);
Age = age;
}
void Display() {cout<
#include
using namespace std;
class Person //人员类定义
{ char Name[10];
int Age;
public:
Person(char* name,int age) //构造函数
{ strcpy(Name, name);
Age = age;
cout<<"Person类的构造函数被调用"<>”和“<<”用作输入输出运算符 运算符重载的定义运算符重载的定义形式:
函数返回值类型 类名:: operator 运算符 (参数表)
{
…
}
运算符重载实际也是一种函数重载
函数 operator 运算符重载了运算符null//例7-5: 重载复数类的运算符
class Complex
{ double real, imag;
public:
Complex(double r = 0, double i = 0) // 带默认参数值的构造函数
{ real=r; imag=i; }
double Real() {return real;} // 取复数的实部
double Imag() {return imag;} // 取复数的虚部
Complex operator +(Complex &); // 重载运算符 +
Complex operator -(Complex &); // 重载运算符 -
};
Complex Complex::operator + (Complex &c)
{ Complex temp;
temp.real = real+c.real;
temp.imag = imag+c.imag;
return temp;
}
Complex Complex::operator - (Complex &c)
{ Complex temp;
temp.real = real-c.real;
temp.imag = imag-c.imag;
return temp;
}7.4.2 虚函数 7.4.2 虚函数 定义:
在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数
语法:
virtual 函数返回类型 函数名(参数表)
{
函数体
}
用途:
实现多态性,通过指向派生类的基类指针,访问派生类中同名覆盖成员函数例 7-6: 使用虚函数实现多态性例 7-6: 使用虚函数实现多态性#include
using namespace std;
class Animal //基类:动物类
{
public:
virtual void Speak() { cout<<"How does a Animal speak?"<
class 类名
{
……
};null// 例7-7 类模板的使用
#include
using namespace std;
template
class AnyType
{
T x;
public:
AnyType(T a){x=a;}
T GetX(){return x;}
};
int main()
{
AnyType i (5);
AnyType d (3.14);
AnyType c ('a');
cout << "整型类:" << i.GetX() << endl;
cout << "双精度类:" << d.GetX() << endl;
cout << "字符类:" << c.GetX() << endl;
return 0;
} 上机指导上机指导7.6 使用ClassView标签应用举例应用举例例7-8 设计一个时间类,要求能够设置时间、进行时间的加减运算,并以一定格式显示时间。
例7-9 编写教师信息管理程序,实现显示教师信息、增加教师信息、删除教师信息等功能。结 束 语结 束 语学好程序设计语言的唯一途径是
你的编程能力与你在计算机上投入的时间成