西安石油大学C++上机实验 上机一:类与对象程序设计(2学时)

简介: 上机目的掌握声明类的方法。掌握类和类的成员的概念以及定义对象的方法。掌握构造函数和析构函数的使用方法

上机一:类与对象程序设计(2学时)


上机目的


掌握声明类的方法。

掌握类和类的成员的概念以及定义对象的方法。

掌握构造函数和析构函数的使用方法


实验目的


掌握声明类的方法,类和类的成员的概念以及定义对象的方法。


掌握用类和对象编制基本对象的程序的方法。


掌握构造函数和析构函数的使用方法。


上机内容


1.进行类的设计和使用,练习构造函数的重载和析构函数的使用方法;练

习具有不同访问权限的成员的访问方式;


2.测试章节例题,完成教材 P101:3.34,3.35。


题目 1:编写一个基本账户类,成员变量包括:账号,储户姓名,和存款余

额,成员函数包括:存款和取款。编写一个测试程序进行测试。


题目 2:设计一个长方形类,成员变量包括长度和宽度,成员函数除包括计

算周长和计算面积外,还包括用 Set 方法设置长和宽,以及用 get 方法来获取长

方形的长和宽。


实验内容


P101:3.34, 3.35


题目 1:编写一个基本账户类,成员变量包括:账号,储户姓名,和存款余额,成员函数包括:存款和取款。编写一个测试程序进行测试。


思路:


编辑头文件。在弹出的 Account.h 头文件中添加 Account 类的代码。如图

1-5 所示。详细代码如下:


步骤 a:声明程序设计所需要包含的头文件:

#include <iostream.h>

#include <string.h>

步骤 b:根据题目要求:定义账户类:Account 类:

class Account

{

……

7

8

};


步骤 c:在 Account 类中定义成员变量:

private:

long accountNo; //账户

char name[30]; //储户姓名

float money; //账户余额


步骤 d:定义成员函数:

构造函数:

(这些都是在account中的东西(变量))

Account(long a,char *n,float b): accountNo(a),money(b){

strcpy(name,n);

}


析构函数:

~Account(){}


存款成员函数:

void Add(const float x){

money=money+x;

}


取款成员函数:

void Sub(const float x){

money=money-x;

}


输出成员函数:

void Print(void)const{

cout<<"姓名:"<<name<<endl;

cout<<"账户:"<<accountNo<<endl;

cout<<"余额:"<<money<<endl;

}


4)添加源文件代码。在 Account.cpp 文件中添加主程序代码,详细代码如下:


a:测试主程序详解:

#include "Account.h" //包含 Account.h 头文件(此时应该注意“”这个符号应该出现在知道头文件位置的地方当不确定Account在何处时会报错)

void main()

{

//一个萝卜一个坑,对定义的对象类进行赋值初始化定义

Account a1(1000000,"阿斌",100); //定义对象,对象名为 a1,其账号为 1000000,储户姓名为阿斌,账户余额为 100 元

Account a2(1000001,"阿豪",100); //定义对象,对象名为 a2,其账号为 1000001,储户姓名为阿豪,账户余额为 100 元

cout<<"名为阿斌的用户向账户存款 50 元"<<endl;

//此时程序的意思就是对构造的a1对象进行Add函数操作

a1.Add(50); //对象 a1 调用 Add 存款成员函数向账户存款 50 元

//此时程序的意思就是对构造的a1对象进行Print函数操作

a1.Print(); //对象 a1 调用 Print 成员函数输出显式账号、姓名、余额

cout<<endl; //换行

cout<<"名为阿豪的用户从账户取款款 50 元"<<endl;

a2.Sub(50); //对象 a2 调用 Sub 取款成员函数从账户取款 50 元

a2.Print(); //对象 a2 调用 Print 成员函数输出显式账号、姓名、余额

}




完整源码:



#include<iostream>

#include<string>

using namespace std;

class zhanghu {

public:

std::string name;

long int ZH;

int CKYE;

zhanghu(){}

zhanghu(string _name, long int y = 12345678, int z = 100) {

 name = _name;

 ZH = y;

 CKYE = z;

}

int CK(int a) {

 CKYE += a;

 return CKYE;

}

int QK(int b) {

 CKYE -= b;

 return CKYE;

}

~zhanghu()

{}

};

int main() {

int n, o, p;

zhanghu m("chenbochao", 12345678, 100);

cout << "您的姓名是" << m.name << endl << "账号是" << m.ZH << endl << "余额是" << m.CKYE << endl;

cout << "--------------------------" << endl;

cout << "请输入操作" << endl <<"1存款" << endl << "2取款" << endl;

cout << "--------------------------" << endl;

while (scanf("%d", &n) != EOF) {

 if (n == 1) {

  cout << "请输入存款金额:" << endl;

  cin >> o;

  cout << "--------------------------" << endl;

  m.CK(o);

  cout << "您的姓名是" << m.name << endl << "账号是" << m.ZH << endl << "余额是" << m.CKYE << endl;

  cout << "--------------------------" << endl;

 }

 if (n == 2) {

  cout << "请输入取款金额:" << endl;

  cin >> p;

  cout << "--------------------------" << endl;

  m.QK(p);

  cout << "您的姓名是" << m.name << endl << "账号是" << m.ZH << endl << "余额是" << m.CKYE << endl;

  cout << "--------------------------" << endl;

 }

}

return 0;

}



题目 2:设计一个长方形类,成员变量包括长度和宽度,成员函数除包括计算周长和计算面积外,还包括用 Set 方法设置长和宽,以及用 get 方法来获取长


方形的长和宽


1)创建头文件。在工程主界面左上角点击 File 菜单,在弹出的 New 对话框

中选择 C/C++ Header File 选项,新建头文件命名为 Rectangle.h。用来设计长方形类。


2)编辑头文件。在弹出的 Rectangle.h 头文件中添加 Rectangle 类的代码。



步骤 a:声明程序设计所需要包含的头文件:


#include <iostream.h>


步骤 b:根据题目要求:定义长方形类:Rectangle 类:


class Rectangle

{

……

};


步骤 c:在 Rectangle 类中定义成员变量:


private:

float length; //长

float width; //宽


步骤 d:定义成员函数:

构造函数:

Rectangle(float len = 1, float wid = 1):length(len), width(wid){}


析构函数:


~ Rectangle (){}


//定义函数功能

计算长方形周长的成员函数:


float Perimeter(){

return 2*(length + width);

}


计算长方形面积的成员函数:

double Area() {

return length*width;

}


设置长方形长的成员函数:

void SetLength(float len)

{

length = len;

}


设置长方形宽的成员函数

void SetWidth(float wid)

{

width = wid;

}


获取长方形长的成员函数


float GetLength()

{

return length;

}

获取长方形宽的成员函数


float GetWidth()

{

return width;

}


步骤 e:程序编写示例

3)创建源文件。在工程主界面左上角点击 File 菜单,在弹出的 New 对话框

中选择 C++Source File 选项,新建头文件命名为 Rectangletest.cpp。用来测试长

方形类。



4)编辑源文件。在弹出的 Rectangletest.cpp 头文件中添加测试主程序代码。

a.详细代码:

#include "Rectangle.h" //包含 Rectangle.h 头文件

void main()

{

Rectangle Rec1, Rec2(10, 10);

cout<<"长:"<<Rec1.GetLength()<<" 宽:"<<Rec1.GetWidth()<<endl;

cout<<"周长:"<<Rec1.Perimeter()<<" 面积:"<<Rec1.Area()<<endl<<endl;

Rec1.SetLength(5);

Rec1.SetWidth(8);

cout<<"长:"<<Rec1.GetLength()<<" 宽:"<<Rec1.GetWidth()<<endl;

cout<<"周长:"<<Rec1.Perimeter()<<" 面积:"<<Rec1.Area()<<endl<<endl;

cout<<"长:"<<Rec2.GetLength()<<" 宽:"<<Rec2.GetWidth()<<endl;

cout<<"周长:"<<Rec2.Perimeter()<<" 面积:"<<Rec2.Area()<<endl<<endl;

}


#include<iostream>

using namespace std;

class CF {//定义CF类

public:

int C;

int K;

CF()

{}

//定义函数功能

void set(){

 cout << "请输入长度" << endl;

 cin >> C;

 getchar();

 cout << "请输入宽度" << endl;

 cin >> K;

}

void get() {

 cout << "长度为:" << C << endl;

 cout << "宽度为:" << K << endl;

}

int ZC() {

 int c;

 c = 2 * (C + K);

 return c;

}

int MJ() {

 int c;

 c = C * K;

 return c;

}

~CF()

{}

};

int main() {

int a;

int c, d;

CF m;

m.set();

cout << "--------------------------" << endl;

m.get();

cout << "--------------------------" << endl;

cout << "请选择操作:" << endl << "1:求周长" << endl << "2:求面积" << endl;

cout << "--------------------------" << endl;

while (scanf("%d", &a) != EOF) {

 if (a == 1) {

  cout << "周长是" << m.ZC() << endl;

 }

 else if (a == 2) {

  cout << "面积是" << m.MJ() << endl;

 }

}

return 0;

}


思考题


分析总结上述程序设计实现的不足之处,如账户类中当取款金额大于账户原

有余额时,应如何操作?如长方形类结果输出采用函数调用方式是否更为方便?

如若要实现两个长方形对象的面积加和时又该如何进行程序设计?请针对程序

中的不足之处进行完善修改,并思考如何进行功能拓展。

目录
相关文章
|
1月前
|
编译器 C++
C++之类与对象(完结撒花篇)(上)
C++之类与对象(完结撒花篇)(上)
35 0
|
4天前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
24 5
|
11天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
40 4
|
12天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
35 4
|
1月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4
|
1月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
24 4
|
1月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
21 1
|
1月前
|
存储 编译器 C语言
【C++打怪之路Lv3】-- 类和对象(上)
【C++打怪之路Lv3】-- 类和对象(上)
17 0
|
1月前
|
编译器 C++ 数据库管理
C++之类与对象(完结撒花篇)(下)
C++之类与对象(完结撒花篇)(下)
31 0
|
1月前
|
编译器 C++
C++之类与对象(3)(下)
C++之类与对象(3)(下)
34 0