实验3 类和对象
实验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/015526296.html,); error!!
}
}
class Account
{
private String account;
private String name;
private String address;
private double balance;
static double minBalance=10.0;
public Account(String account,String name,String address,double balance)
{
this.account=account;
this.address=address;
https://www.360docs.net/doc/015526296.html,=name;
this.balance=balance;
}
public void deposit(double cash)
{
System.out.print("您账户原有余额:"+balance+" ");
System.out.print("现存入:"+cash+" ");
balance+=cash;
System.out.println("现有余额:"+balance);
}
public void withdraw(double cash)
{
double temp=balance-cash;
if(temp System.out.println("至少保留余额:"+minBalance); else {balance=temp; System.out.println("取款成功!取款"+cash+" "+"现有余额:"+balance); } } public void tranfer(Account a1,Account a2,double cash) { double temp=a1.balance-cash; if(temp System.out.println("余额不足!"); else { a1.balance-=cash; a2.balance+=cash; System.out.println("转账成功!"); System.out.println(https://www.360docs.net/doc/015526296.html,+"转出"+cash+","+https://www.360docs.net/doc/015526296.html,+"转入"+cash); System.out.println(https://www.360docs.net/doc/015526296.html,+"现有余额:"+a1.balance+","+https://www.360docs.net/doc/015526296.html,+"现有余额:"+a2.balance); } } public void query() { System.out.println("现有余额:"+balance); } public String toString() { return "账号:"+account+" "+"姓名:"+name+" "+"地址:"+address+" "+"现有余额:"+balance; } } 2、两游戏角色决斗。(选做,不需写作业本上) 角色1交手次数+1,生命值-1,经验值+2;角色2交手次数+1,生命值-2,经验值+3。经验值每增加50时,生命值+1;生命值<0判为负。生命值初始为1000,经验值初始为0。给定二个不同的角色,判定交手的胜负关系。 提示: step1:建立角色类,给出相应的成员,并能以生命值、经验值初始化角色对象。 step2:建立fight方法,接收二个角色类型的参数,返回胜者。 step3:初始化二角色,调用fight方法。 class Role { int n,exp,hp; //n:交手次数exp:经验值hp:生命值 Role(int h,int e) //构造函数,以生命值、经验值初始化角色对象 { hp=h; exp=e; } Role fight(Role r1,Role r2) //接收两个角色类型的参数,返回胜者 { while(r1.hp>=0 && r2.hp>=0) //执行计算决斗胜负的逻辑 { r1.n++;//交手次数+1 r1.hp--;//生命值-1 r1.exp+=2;//经验值+2 if( r1.exp%50==0) r1.hp++;//经验值每增加50时,生命值+1 r2.n++;//交手次数+1 r2.hp-=2;//生命值-2 r2.exp+=3;//经验值+3 if(r2.exp%50==0) r2.hp++;//经验值每增加50时,生命值+1 } if(r1.hp>=0)//判断胜负 System.out.print("角色1获胜"); return r1; } else { System.out.print("角色2获胜"); return r2; } } public static void main(String[] args) { Role r1=new Role(1000,0);//初始化角色1 Role r2=new Role(1000,0);//初始化角色2 Role win=r1.fight(r1,r2);//决斗,返回胜者 System.out.println(",双方交手了"+win.n+"次"); } } 3、根据分数录取学生。 设计一个学校类,其中包含成员变量line(录取分数线)和对该变量值进行设置和获取的方法。 编写一个学生类,它的成员变量有考生的name(姓名)、id(考号)、total(综合成绩)、sports(体育成绩)。它还有获取学生的综合成绩和体育成绩的方法。 编写一个录取类,它的一个方法用于判断学生是否符合录取条件。其中录取条件为:综合成绩在录取分数线之上,或体育成绩在96以上并且综合成绩大于300。在该类的main()方法中,建立若干个学生对象,对符合录取条件的学生,输出其信息及“被录取”。 class School { int line; void setLine(int x) { line=x; } int getLine() { return line; } } class Student { String name; int total; int sports; public Student(String a,String b,int c,int d) { name=a; id=b; total=c; sports=d; } public int getTotal() { return total; } public int getSports() { return sports; } public void getMessage() { System.out.println(name+" "+id+" "+total+" "+sports); } } class Enroll { static void enrollOrNot(Student a,School b) { if(a.getTotal()>=b.getLine()||a.getTotal()>=300&&a.getSports()>=96) { a.getMessage(); System.out.println("被录取!"); } } public static void main(String [] args) { School thxy=new School(); thxy.setLine(390); Student s1=new Student("Tom","01",460,70); Student s2=new Student("Jerry","02",350,98); Student s3=new Student("Peter","03",290,96); enrollOrNot(s1,thxy); enrollOrNot(s2,thxy); enrollOrNot(s3,thxy); } } 四、实验记录与分析(可自拟或选择) 1、重载的构造方法具有不同个数或不同类型的参数,编译器就可以根据这一点判断出用new 关键字产生对象时,该调用哪个构造方法了。 2、每个对象拥有各自的实例成员变量,而所有对象共享一个类成员变量。 3、实例成员变量通过对象引用,类成员变量通过类或对象名访问。 实验三类、对象基础知识 一、实验目的 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); } … 实验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/015526296.html,); error!! } } class Account { private String account; private String name; private String address; private double balance; 实验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()函数的入口处。 实验报告_实验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实验三 类、对象基础知识
实验3 类和对象
C++语言程序设计实验答案_类与对象
实验3 类的定义、对象的建立与使用
C++实验二类与对象(附答案)