#include
usingnamespace std;
class Tx
{
public:
Tx(int i,int j);
~Tx();
void display();
private:
int num1,num2;
};
Tx::Tx(int i,int j=10)
{
num1=i;
num2=j;
cout<<"Constructing"< } void Tx::display() { cout<<"display"< } Tx::~Tx() { cout<<"Destructing"< } void main() { Tx t1(22,11); Tx t2(20); t1.display(); t2.display(); system("pause"); } 答:1.当建立一个对象时,对象的状态(数据成员的取值)是不确定的。但对象表达了现 实世界的实体,因此,一旦建立对象,必须有一个有意义的初始值。构造函数用来自动进行对象的初始化;析构函数在对象撤销时执行清理任务,进行善后处理。 2.私有成员是在类中被隐藏的部分,它往往是用来描述该类对象属性的一些数据成员,私有成员只能由本类的成员函数或某些特殊说明的函数(如友元函数)访问,而类的外部函数无法访问私有成员;共有成员对外是完全开放的;受保护成员只能由该类的成员函数、友元、共有派生成员函数访问。 3.拷贝构造函数是用一个已有的对象来初始化一个被创建的同类对象的特殊的构造函数,具有一般构造函数的所有特性。但创建一个新对象时系统会自动调用它。 4.两个成员函数:设置计数,获取计数;一个成员变量:保存计数。 8.运行结果: Constructing2211 Constructing2010 Display2211 Display2010 1. 设计一个大学的类系统,学校中有学生、教师和职员,每种人员都有自己的特性,他们之间又有相同的地方。利用继承机制定义这个系统中的各个类及类上必需的操作。 答:经调试后的代码: #include #include #include usingnamespace std; class person { public: void in_nm(); void in_id(); void ou_nm(); void ou_id(); private: string id; string name; }; class student:public person { public: void in_clsid(); void in_sc(); void ou_clsid(); void ou_sc(); private: string cls_id; float score; }; class teacher:public person { public: void in_zc(); void in_dp(); void ou_zc(); void ou_dp(); private: string zc; string depart; }; void person::in_nm() { cout<<"请输入姓名:"< } void person::in_id() { cout<<"请输入编括号:"< } void person::ou_nm() { cout<<"姓名为:"< void person::ou_id() { cout<<"编号为:"< } void student::in_clsid() { cout<<"请输入学生班级:"< } void student::in_sc() { cout<<"请输入学生分数:"< } void student::ou_clsid() { cout<<"学生班级为:"< void student::ou_sc() { cout<<"学生分数为:"< void teacher::in_zc() { cout<<"请输入教师职称:"< } void teacher::in_dp() { cout<<"请输入教师部门:"< } void teacher::ou_zc() { cout<<"教师职称为:"< } void teacher::ou_dp() { cout<<"教师部门为:"< int main() { student stu; cout<<"开始输入学生信息:"< stu.in_id(); stu.in_clsid(); stu.in_sc(); cout<<"显示学生信息:"< stu.ou_id(); stu.ou_clsid(); stu.ou_sc(); cout< teacher tch; cout<<"开始输入教师信息:"< tch.in_nm(); tch.in_id(); tch.in_zc(); tch.in_dp(); cout<<"显示教师信息:"< tch.ou_nm(); tch.ou_id(); tch.ou_zc(); tch.ou_dp(); cout< system("pause"); return 0; } 运行结果为: 2.构建一个类用于计算数据的统计信息,类名Cstatistics,类中包括, 成员变量: 数据个数(int N),数据(double* data),均值(double mean),方差(double variance),最大值(double max),最小值(double min)。 成员函数: 输入函数(void input()):输入数据个数N,给data变量申请N个空间,并输入N个数值。计算均值(void getMean()):计算data变量中数据的均值,并赋值给mean变量。 计算方差(void getVariance()):计算data变量中数据的方差,并赋值给variance变量。 计算最大值(void getMax()):计算data变量中数据的最大值,并赋值给max变量。 计算最小值(void getMin()):计算data变量中数据的最小值,并赋值给min变量。 输出函数(void print()):输出data变量中的数据及个数,并输出该数据的统计信息(均值(double mean),方差(double variance),最大值(double max),最小值(double min))。程序框架: #include"Cstatistics.h" #include usingnamespace std; int main() { cout<<"这是一个统计类!"< Cstatistics sta; sta.input(); sta.getMean(); sta.getVariance(); sta.getMax(); sta.getMin(); sta.print(); system("pause"); return 0; } 答:代码如下: #pragma once #include using namespace std; class Cstatistics { public: Cstatistics(void); ~Cstatistics(void); void input(); void getMean(); getVariance(); void getMax(); void getMin(); void print(); private: int N; double* data; double mean; double variance; double max; double min; }; Cstatistics::Cstatistics() { } Cstatistics::~Cstatistics(void) { } void Cstatistics::input() { cout<<"请输入数据个数:"; cin>>N; if(N > 0) { data = new double[N]; } cout<<"请输入"< for(int i = 0; i < N; i++) cin>>data[i]; }void Cstatistics::getMean() { if(data != NULL ) { double sum = 0; for(int i = 0; i < N; i++) sum += data[i]; mean = sum / N; } } void Cstatistics::getVariance() { if(data != NULL ) { if(mean == 0) { getMean(); } double sum = 0; for(int i = 0; i < N; i++) sum += (data[i] - mean) * (data[i] - mean); variance = sum / N; } } void Cstatistics::getMax() { if(data != NULL) { max = data[0]; for(int i = 1; i < N; i++) { if(data[i] > max) max = data[i]; } } } void Cstatistics::getMin() { if(data != NULL) { min = data[0]; for(int i = 1; i < N; i++) { if(data[i] < min) min = data[i]; } } } void Cstatistics::print() { cout< for(int i = 0; i < N; i++) { cout< } cout< cout<<"均值为:"< cout<<"方差为:"< cout<<"最大值为:"< cout<<"最小值为:"< int main() { cout<<"这是一个统计类!"< Cstatistics sta; sta.input(); sta.getMean(); sta.getVariance(); sta.getMax(); sta.getMin(); sta.print(); system("pause"); return 0; } 运行结果: 3.编写一个程序计算出球、圆柱和圆锥的表面积和体积。要求: (1)定义一个基类圆,至少含有一个数据成员半径; (2)定义基类的派生类球、圆柱、圆锥,都含有求表面积和体积的成员函数和输出函数。(3)定义主函数,求球、圆柱、圆锥的和体积。 答:代码如下 #include #include #include using namespace std; const double PI=3.14159; class circle { public: void in_rad() { cout<<"输入半径:"< cin>>rad; } protected: float rad; //半径 }; class ball:public circle { public: void in_rad() { cout<<"输入球半径:"< } void calc_sur() { sur=4*PI*rad*rad; } void calc_vol() { vol=4/3.0*PI*rad*rad*rad; } void out_sur() { cout<<"球的表面积为:"< void out_vol() { cout<<"球的体积为:"< private: double sur; //表面积 double vol; //体积 }; //圆柱 class column:public circle { public: void in_rad() { cout<<"输入圆柱半径:"< } void in_height() cout<<"输入圆柱高:"< cin>>height; } void calc_sur() { sur=PI*rad*rad+2*PI*rad*height; } void calc_vol() { vol=PI*rad*rad*height; } void out_sur() { cout<<"圆柱的表面积为:"< void out_vol() { cout<<"圆柱的体积为:"< private: double sur; //表面积 double vol; //体积 double height; //高 }; //圆锥 class cone:public circle { public: void in_rad() { cout<<"输入圆锥半径:"< } void in_height() { cout<<"输入圆锥高:"< cin>>height; } void calc_sur() { sur=0.5*PI*rad*rad*2*PI*rad*height; } void calc_vol() vol=1/3.0*PI*rad*rad*height; } void out_sur() { cout<<"圆锥的表面积为:"< void out_vol() { cout<<"圆锥的体积为:"< private: double sur; //表面积 double vol; //体积 double height; }; int main() { cout<<"球:"< ball oball; oball.in_rad(); oball.calc_sur(); oball.calc_vol(); oball.out_sur(); oball.out_vol(); cout< cout<<"圆柱:"< column ocol; ocol.in_rad(); ocol.in_height(); ocol.calc_sur(); ocol.calc_vol(); ocol.out_sur(); ocol.out_vol(); cout< cout<<"圆锥:"< cone ocone; ocone.in_rad(); ocone.in_height(); ocone.calc_sur(); ocone.calc_vol(); ocone.out_sur(); ocone.out_vol(); cout< system("pause"); return 0; } 运行结果: . . 实验三类、对象基础知识 一、实验目的 1、熟练掌握类、对象的的概念以及对事物的抽象。 2、熟练掌握成员、方法的概念以及构造方法的概念。 3、熟练掌握封装性,多态性的概念 4、理解面向对象的程序设计方法。 二、实验内容与要求 1运行下面的程序,理解面向对象的程序设计方法的基本概念。 class value { public int x,y; public value(int a,int b) { x=a; y=b; } } public class Ch31 { public static void main(String args[]) { int total; value num=new value(24,65); total=num.x+num.y; System.out.println("add="+total); } } 2、定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有"存款"、"取款"、"查询余额"和”显示帐号”,。定义主类,创建帐户类的对象,并完成相应操作。提示:关键代码如下: public int getleftmoney(){ return leftmoney; } public void savemoney(double money){ leftmoney+=money; } public void getmoney(double money){ if(money<=leftmoney) leftmoney-=money; else System.out.println("只能取:"+leftmoney); } … 实验5:Java类与对象 一、实验目的 (1)使用类来封装对象的属性和功能; (2)掌握Java类的定义。 (3)java对象的使用 二、实验任务 (1)按要求编写一个Java程序。 (2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。 三、实验内容 1.编写一个Java程序片断,以定义一个表示学生的类Student。这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。 2.为类Student增加一个方法public String toString( ),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。 class Student{ long studentID; int classID; String name; String sex; int age; public Student(long studentID,int classID,String name,String sex,int age){ this.studentID=studentID; this.classID=classID; https://www.wendangku.net/doc/a110803606.html,=name; this.sex=sex; this.age=age; } public long getStudentID(){ return studentID; } public int getClassID(){ 实验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.wendangku.net/doc/a110803606.html,); error!! } } class Account { private String account; private String name; private String address; private double balance; 实验报告_实验3 类的定义、对象的建立与使用(学 生学号_姓名) 实验目的: 1、理解C++中class与struct的区别; 2、掌握类的定义以及成员函数的定义方法; 3、掌握对象的定义和对象成员的访问方式; 4、熟悉this指针的基本用法。 实验内容 二、((基础题)请按照下列要求定义一个Clock时钟类,并创建对象,再调用相应方法: 程序代码: //日期类的应用 #include int second; }; // 类定义体的结束 //类实现部分 void Clock::setTime(int h, int m, int s) { hour = h; minute = m; second = s; } void Clock::showTime() { cout << "设置时间为" << hour <<":"<< minute <<":"<< second << endl; } int main() { Clock now; now.setTime(8,30, 0); now.showTime(); return 0; } 三、(基础题)请按要求,编写程序(请将类的定义、成员函数的实现、类的使用分开): rect.h代码: #include 宁夏师范学院数学与计算机科学学院《面向对象程序设计(C++)》实验报告 }*/ // ~CPU() {cout<<"析构了一个CPU!"< 实验报告_实验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。 实验四类与对象 1.实验目的 1、使用类来封装对象的属性和行为; 2、掌握对象的组合以及参数传递; 3、掌握类变量与实例变量,以及类方法与实例方法的区别 2.实验内容 1、参考教科书,完成下面实验: 1)实验1 Tank类 2)实验2 计算机与光盘 3)实验3 家族的姓氏 4)实验4 三角形、梯形和圆形的类封装 5)实验5 实例成员与类成员 2、完成习题: 1)根据要求修改实验1,改进speedUP方法,使得Tank类的对象加速时不能将speed值超过220;增加一个刹车方法:void brake(),Tank类的对象调用它能将speed的值变成0。 2)根据要求修改实验2,主类中再增加一个CD的对象,然后将计算机中的数据(data数组)复制到CD对象中。 3、提高题 编写储蓄账户类及测试类,模拟存款,参考以下运行方式: (1)新开5个储蓄账户,各储蓄账户的编号、户名在新开储蓄账户时初始化,假设每位用户新开储蓄账户时都存入了一笔钱。 (2)提示用户从键盘输入储蓄账户编号。 (3)若输入的储蓄账户编号与新开的5个储蓄账户编号之一匹配,则提示用户从键盘输入存款金额,存款金额必须大于0,否则显示错误提示,直到用户输入的存款金额大于0为止。 (4)相应储蓄账户的余额被更新。 (5)存款完成后,提示存款成功,显示该储蓄账户的编号、户名、余额。 (6)若输入的储蓄账户编号与新开的5个储蓄账户编号均无法匹配,显示错误提示,并询问是否还要继续存款。 (7)用户输入yes,继续执行步骤(2),否则显示退出信息。 最基本要求:绘制UML类图;储蓄账户的余额必须确保大于等于0。 3.实验步骤 参考教材中相关的实验。 4.评分标准 实验一:类和对象 【实验目的】 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.wendangku.net/doc/a110803606.html,=name; this.agr=agr; this.page=page; } public void evagre(){ System.out.println("水果名为:"+https://www.wendangku.net/doc/a110803606.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.wendangku.net/doc/a110803606.html,="苹果"; s.agr =10; s.page=1.0; s.evagre(); text c=new text(); https://www.wendangku.net/doc/a110803606.html,="香蕉"; s.agr =10; s.page=1.0; s.evagre(); text d=new text(); https://www.wendangku.net/doc/a110803606.html,="橘子"; s.agr =10; s.page=1.0; s.evagre(); 2. 编写一个学生类,封装学生的学号、姓名、成绩等信息。再编写一个主类, 实验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()函数的入口处。 实验一类与对象 一、实验目的 1.掌握类的定义和使用。 2.掌握类的对象的声明。 3.复习具有不同访问属性的成员的访问方式。 4.观察构造函数和析构函数的执行过程。 5.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 二、实验课时 4学时 三、实验任务 1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run(提示信息“CPU开始运行”)、stop(提示信息“CPU停止运行”)。其中,为枚举类型CPU_Rank,定义为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage 为浮点型的电压值。在main函数中定义该类的一个对象,并调用其公有成员函数,观察构造函数和析构函数的调用顺序。试试能不能在主函数中打印该对象的属性值,并分析原因。 2.在上述CPU类中添加成员函数,分别用于设置及获取各属性的值,并在main函数中调用这些函数。观察当这些函数被设置成private或public时会有什么不同。 3.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram 为RAM类的一个对象,cdrom为CDROM类的一个对象。CPU类的定义为实验任务1,RAM、CDROM类可以自由设置一些属性,并提供类似的run、stop这两个成员函数。在main函数中测试这个类,分析成员函数的运行顺序。 4.定义一个Point类,属性为坐标X、Y的值,包含有如下成员函数:构造函数、析构函数、设置与获取X和Y的值的函数,并测试程序的输出结果。 广东技术师范学院实验报告 学院:计算机科学学 院 专业: 计算机科学与 技术(师范) 班级:成绩: 姓名:孔哥哥学号:组别:组员: 实验地点:Win10电脑实验日期:指导教师签名: 实验名称: 一、实验目的: 1、熟练掌握类、对象的的概念以及对事物的抽象。 2、熟练掌握成员、方法的概念以及构造方法的概念。 3、熟练掌握封装性,多态性的概念 4、理解面向对象的程序设计方法。 二、实验内容和步骤:(说明代码及运行结果) 1.运行下面的程序,理解面向对象的程序设计方法的基本概念。 class value { public int x,y; public value(int a,int b) { x=a; y=b; } } public class Ch31 { public static void main(String args[]) { int total; value num=new value(24,65); total=num.x+num.y; System.out.println("add="+total); } } 2、定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有"存款"、"取款"、"查询余额"和”显示帐号”。定义主类,创建帐户类的对象,并完成相应操作。 2.1新建一个AccountTester的类,以下是代码: public class AccountTester { public static void main(String[] args) { BankAccount anAccount; anAccount=new BankAccount("小明",12121000,1000); System.out.println("账户名字:"+anAccount.getOwnerName()); System.out.println("账户号码:"+anAccount.getAccountNumber()); System.out.println("账户现有:$"+anAccount.getBalance()); System.out.println("存款$500,以后有:"+anAccount.setBalance(500)); System.out.println("取款$700,以后有"+anAccount.withdraw(700)); } } 2.2再建一个BankAccount类,代码如下: //定义类方法 public class BankAccount { private String ownerName; private int accountNumber; private float balance; //定义构造函数,如果没有接收参数就生成一个空的对象 public BankAccount(){实验三 类、对象基础知识
实验5 类和对象1答案
实验3 类和对象
实验3 类的定义、对象的建立与使用
实验四 类与对象
实验报告_实验3 类与对象
实验四-类与对象
实验一:类和对象1
C++语言程序设计实验答案_类与对象
实验一、类与对象
实验1:类、对象基础知识运用
C++实验二类与对象(附答案)