实验四 类和对象定义
实验四类和对象定义
一、实验类型
设计型
二、实验目的
1、实验目的
(1) 掌握类的声明、定义和使用方法。
(2) 掌握对象的定义和使用方法。
(3) 掌握具有不同访问属性的类中成员的使用方法。
三、上机准备
1、实验室安装VC++6.0软件。
2、类的基本概念、对象的基本概念。
四、实验内容与步骤
1、在Rect.cpp中,定义一个矩形(Rect)类,包括矩形的左上角坐标(X1,Y1),矩形右下角坐标(X2,Y2)四个数据成员;包括计算矩形面积(getArea),计算矩形周长(getPerimeter),设置矩形数据成员(setRect)和输出矩形数据成员(print)四个成员函数。数据成员为私有成员,成员函数为公有成员且在类说明内定义实现。在main()函数中建立Rect类对象并进行测试。
提示与分析:
(1) 分析类中数据成员的类型并定义对应的变量,如double X1,X2,Y1,Y2;
(2) 分析成员函数的函数原型,即返回值及其类型以及相关参数,如:
double getArea();
double getPerimeter();
void setRect(double,double ,double,double);
void print();
(3) 思考成员函数的函数体实现代码。
计算矩形面积和周长的方法:
Area=fabs(X2-X1)*fabs(Y2-Y1);
Perimeter=(fabs(X2-X1)+fabs(Y2-Y1))*2;
(4) 根据要求设定类成员的访问权限,如成员函数为公有成员(public),数据成员为私有成员(private)。
(5) 将成员函数的函数体代码放到类说明中。
(6) 在main()函数中建立Rect类的实例并调用对象的方法进行测试,如
Rect r;
r.setRect(1.0,4.3,5.1,7.8);
r.getArea();
(7) 参考程序
#include
#include
using namespace std;
class Rect
{
private:
double X1,Y1,X2,Y2;
public:
double getArea()
{
double Width=fabs(X2-X1);
double Height=fabs(Y2-Y1);
double Area=Width*Height;
return Area;
}
double getPerimeter()
{
double Width=fabs(X2-X1);
double Height=fabs(Y2-Y1);
double Perimeter=(Width+Height)*2;
return Perimeter;
}
void setRect(double x1,double y1,double x2,double y2)
{
X1=x1;
Y1=y1;
X2=x2;
Y2=y2;
}
void print()
{
cout<<"the coordinator of rectangle is (";
cout< cout< } }; void main() { Rect r; r.setRect(1.2,4.3,7.8,9.2); r.print(); cout<<"the area of rectangle is "< cout<<"the perimeter of rectangle is "< } (8)思考 ①去掉#include ②) #include 2、在Point.h中,定义一个点(Point)类,包括横纵坐标X和Y两个数据成员;包括设置点位置(setPoint),获得X坐标值(getX),获得Y坐标值(getY),移动点位置(Move)四个成员函数。数据成员为私有成员,成员函数为公有成员且在类说明外定义实现。在test.cpp文件中建立main()函数,在函数体中建立Point类对象并进行测试。 提示与分析: (1) 在C++工程中添加Point.h文件,并录入Point类的说明和定义部分。 (2) 在C++工程中添加test.cpp文件,建立main()函数并录入测试代码。 (3)参考程序 ①在Point.h文件中的程序源代码: class Point { public: void SetPoint(int x,int y); int getX(); int getY(); void Move(int x,int y); private: int X,Y; }; int Point::getX() { return X; } int Point::getY() { return Y; } void Point::SetPoint(int x,int y) { X=x; Y=y; } void Point::Move(int x,int y) { X+=x; Y+=y; } ②在test.cpp文件中的程序源代码: #include #include"point.h" void main() { Point p1,p2; p1.SetPoint(4,5); p2.SetPoint(8,7); p1.Move(2,1); p2.Move(1,3); cout<<"x1="< cout<<"x2="< } (4)思考 “.h”文件和“.cpp”文件的区别与联系? 3、建立一个日期(Tdate)类,包括年(Year)、月(Month)和日(Day)等数据成员和判断是否闰年(isLeapYear)、设置日期(setDate)和显示日期(print)等成员 .函数,并利用main函数进行测试。要求将类的说明部分存储在Tdate.h 文件中,将类的定义部分存储在Tdate.cpp文件中,将main函数存储在test.cpp 文件中。 提示与分析: (1) 建立Tdate.h头文件,在此文件中录入类的说明代码。 (2) 建立Tdate.cpp程序源文件,在此文件中录入类的定义实现代码。 (3) 建立test.cpp程序源文件,在此文件中建立main函数,录入测试代码。 (4)参考程序 ①Tdate.h头文件中的程序代码: class Tdate { private: int Year; int Month; int Day; public: void setDate(int y,int m,int d); bool isLeapYear(); void print(); }; ②Tdate.cpp程序源文件中的程序代码: #include #include "Tdate.h" void Tdate::setDate(int y,int m,int d) { Year=y; Month=m; Day=d; } bool Tdate::isLeapYear() { return ((Year%4==0&&(Year%100!=0))||Year%400==0); } void Tdate::print() { cout< } ③test.cpp程序源文件中的测试代码: #include #include "Tdate.h" void main() { Tdate d; d.set(2000,1,1); d.print(); if (d.isLeapYear) cout<<"is Leap Year."< else cout<<"isn't Leap Year."< } (4)思考 如果去掉test.cpp程序源文件中的#include "Tdate.h",程序是否能正常运行? 4、设计一个用于人事管理的人员(People)类。包括数据成员:编号(Num)、姓名(Name)、性别(Sex)、出生日期(Birthday)、身份证号(ID)等等。用成员函数实现对人员信息的录入(set)和显示(print)。 提示与分析: (1) 定义一个人员(People)类。 (2) 声明和定义编号(Num)、姓名(Name)、性别(Sex)、出生日期(Birthday)、身份证号(ID)等数据成员。 (3) 声明和定义录入(set)和显示(print)成员函数。 (4)按上面要求编写相应代码。 五、实验报告要求 在实验报告中记录实验过程(编译错误、运行错误及改正),对实验结果进行分析,写实验的收获与体会。 实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.360docs.net/doc/7312159884.html,); error!! } } class Account { private String account; private String name; private String address; private double balance; 宁夏师范学院数学与计算机科学学院《面向对象程序设计(C++)》实验报告 }*/ // ~CPU() {cout<<"析构了一个CPU!"< 实验一:类和对象 【实验目的】 1.理解对象和类,掌握类的定义及如何创建一个对象; 2.掌握构造方法的运用; 3.掌握方法的定义和参数传递; 4. 掌握类的继承机制。 【实验准备】 一、复习配套教材相关章节的内容; 二、预习本次实验; 【实验内容】 1.编写一个程序,显示水果的定购行情。定义一个带有参数的构造方法,这些参数用于存放产品名,数量和价格。在主程序中输出三种不同的水果。package avage; public class text { String name; int agr; double page; public text(){ } public text(String name,int agr,double page){ https://www.360docs.net/doc/7312159884.html,=name; this.agr=agr; this.page=page; } public void evagre(){ System.out.println("水果名为:"+https://www.360docs.net/doc/7312159884.html,); System.out.println("水果数量:"+this.agr); System.out.println("水果单价:"+this.page); } } public class text1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub text s=new text(); https://www.360docs.net/doc/7312159884.html,="苹果"; s.agr =10; s.page=1.0; s.evagre(); text c=new text(); https://www.360docs.net/doc/7312159884.html,="香蕉"; s.agr =10; s.page=1.0; s.evagre(); text d=new text(); https://www.360docs.net/doc/7312159884.html,="橘子"; s.agr =10; s.page=1.0; s.evagre(); 2. 编写一个学生类,封装学生的学号、姓名、成绩等信息。再编写一个主类, 实验报告_实验3 类与对象(学生学号_姓 名) 一、实验目的 1.熟悉类的组成,掌握类的声明方法; 2.理解构造方法的作用,并掌握构造方法的定义; 3.熟练使用访问器和设置器实现信息隐藏和封装; 4.熟悉一般方法、构造方法的重载; 5.能够正确地区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用;6.掌握对象的创建、引用和使用及向方法传递参数的方式; 7.掌握this关键字的使用以及对象数组的创建和访问; 8.掌握Java包的创建、包成员的各种访问方式; 9.掌握一维数组:声明,创建,初始化,数组元素的访问; 10.掌握多维数组的概念:二维数组的声明,初始化,元素的访问。 二、实验内容与步骤 1.请回答下列问题: (1)Cirecle类定义了几个属性?它们的类型、访问权限各为什么? 答:两个PI,floatl类型,静态私有权限 Radius,float;类型,私有权限 (2)类中的“PI”的值可以在程序的方法中更改吗? 答:不可以,因为PI为静态变量 (3)Cirecle类定义了几个方法?它们的访问权限怎样? 答:四个,getRadius(),setRadius(float radius),getPerimeter(),getArea()都是公有权限 2.写出Rectangle类的程序代码: class Rectangle { private float width; private float length; public float getWidth( ) //获取矩形宽度 {return width;} public float getLength( ) //获取矩形长度 {return length;} public float getPerimeter( ) //获取矩形周长 {return 2*(width+length);} public float getArea( ) //获取矩形面积 {return (width*length);} public void setWidth(float w) //设置矩形宽度 {width=w;} public void setLength(float l) //设置矩形长度 {length=l;} } 3.回答下列问题: (1)该程序中有几个类?主类是什么?如果将这两个类放在一个文件中,源程序文件名应是什么?答:两个类:Circle、CircleTest;主类是CircleTest;源程序文件名是CircleTest。 实验04 类与对象(6学时) (第4章类与对象) 一、实验目的 二、实验任务 4_1 声明一个CPU类。 包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 4_2 声明一个简单的Computer类。 有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 4_3 声明一个表示时间的结构体。 可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。 4_4(习题4-10)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、内联成员函数、组合。 三、实验步骤 1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。 首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:。(程序见步骤2) ★程序的运行结果: 2.(示例)调试程序文件。 使用调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下: 操作)调试操作步骤如下: (1)单击“调试 | 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS 窗口出现,此时Visual Studio中光标停在main()函数的入口处。 实验一类和对象 Visual C++ 6.0集成开发环境的使用: Visual C++系列产品是微软公司推出的一款优秀的C++集成开发环境,其产品定位为Windows 95/98、NT、2000 系列Win32 系统程序开发,由于其良好的界面和可操作性,被广泛应用。由于2000 年以后,微软全面转向.NET 平台,Visual C++6.0 成为支持标准C/C++规范的最后版本。 1.启动 安装完系统后,可以选择如下两种方式启动 1) 点击Windows “开始”菜单,选择“程序”菜单下“Microsoft Visual Studio 6.0”子菜单下的快捷方式Microsoft Visual C++ 6.0 启动Visual C++ 6.0。 2) 点击Windows “开始”菜单,选择“运行”,输入msdev,即可启动。启动后的界面如下: 图 1 启动界面 2.建立工程 选择“File”菜单下的“New”菜单项或直接按Ctrl+N,启动新建向导,如图2 所示: 图 2 新建向导 选择在“Projects”属性页选择Win32 Console Application,在Project Name 中输入项目名称demo,在Location 中选择项目文件,如图2 中c:\test\demo,项目所有文件将保存在此文件。输入完毕,单击确定按钮,进入下一界面如图3: 图 3 项目类型向导 在图 3 所示界面中选择a simple application,然后点击Finish 按钮,系统显示图4 所示界面。如果想退回上一步可以选择“Back”按钮。 图 4 项目信息 在图 4 中选择OK 按钮,系统完成项目的创建,并保存项目相关的信息。项目的目录结构如图5 所示。 1) Demo.dsw 是项目工作区文件,双击此文件,即可打开此项目; 2) Demo.dsp 为项目文件; 3) demo.cpp 是项目中的一个源程序;stdafx.h 和stdafx.cpp 为自动创建的源程序,一般不用修改。 图 5 目录结构实验3 类和对象
实验四 类与对象
实验:类和对象1
实验报告_实验3 类与对象
C++语言程序设计实验答案_类与对象
实验一 类和对象
C++实验二类与对象(附答案)