GUI应用开发JAVA实验报告常熟理工含答案.docx
- 文档编号:8942016
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:15
- 大小:21.32KB
GUI应用开发JAVA实验报告常熟理工含答案.docx
《GUI应用开发JAVA实验报告常熟理工含答案.docx》由会员分享,可在线阅读,更多相关《GUI应用开发JAVA实验报告常熟理工含答案.docx(15页珍藏版)》请在冰豆网上搜索。
GUI应用开发JAVA实验报告常熟理工含答案
GUI应用开发(JAVA)实验报告
学号:
姓名:
班级:
指导老师:
谢从华
实验一、面向对象编程实验
一、实验目的
1、理解面向对象技术中的封装的概念。
2、掌握包的编写以及如何使用包中的类。
二、实验设备与环境
装有JAVA语言工具软件(NetbeansIDE6.5)的计算机。
三、实验内容
a)习题册练习
根据提供的Account类的UML类图,编写代码实现此类。
按照UML图向其添加实例变量balance和构造器。
使用构造器的参数初始化balance实例变量。
b)按照要求创建TestAccount2类
c)编译TestAccount2类
d)运行TestAccount2程序。
四、实验过程及结果
1、根据书本的UML图,可以知道,在Account类中,定义了修饰符为public的构造器Account,同时在Account类中,定义了三个公共的方法——getBalance:
double,deposit:
void,withdraw:
void。
2、依据上述要求,在Eclipse软件中,新建一个JavaProject→命名为BankPrj→右击该项目,选择New→Class创建类Account。
其中,Account代码如下所示:
packageBankPrj;
publicclassAccount{
publicdoublebalance;//添加balance实例
//为Account类创建一个构造器
publicAccount(doubleinitBalance){
balance=initBalance;
}
publicdoublegetBalance(){
returnbalance;//返回当前
}
publicvoiddeposit(doubleamt){
balance=balance+amt;//返回存钱数目
}
publicvoidwithdraw(doubleamt){
if(balance>=amt){
balance=balance-amt;//返回取钱后剩余
}
}
}
3、创建TestAccount类,在BankPrj的目录之下,创建一个包,命名为BankPrj.test,在该类中声明一个Main方法,并且将Account初始为余额为100的对象,同时定义一个方法先存入50.再取出147,然后将余额用标准输出流进行输出。
其具体实现代码如下所示:
packageBankPrj.test;
importBankPrj.Account;//导入Account类
publicclassTestAccount{
publicstaticvoidmain(String[]args){
Accountacct=newAccount(100.0);//给Account对象进行余额的初始操作
acct.balance=acct.balance+50.0;//对Account对象进行存入50的操作
acct.balance=acct.balance-147.0;//从现在的Account对象中取出147
System.out.println("最终余额是:
"+acct.balance);//标准输出流输入余额
}
}
调试运行TestAccount结果如下所示:
最终余额是:
3.0
4、创建TestAccount2类,即在TestAccount的基础之上进行修改,将在Account类中定义的方法进行使用,利用方法的调用实现存取款功能的实现,其具体实现代码如下所示:
packageBankPrj.test;
importBankPrj.Account;
publicclassTestAccount32{
publicclassTestAccount{
//新建一个TestAccount接口
publicTestAccount(){
}
publicvoidmain(String[]args){
Accountacct=newAccount(100);//对Account对象进行初始化
acct.deposit(47);//原有的Account对象之上添加47
acct.withdraw(150);//从现有的Account对象中取出150
System.out.println("账户余额最终是:
"+acct.getBalance());//标准输出流输入余额
}
}
}
调试运行TestAccount2,结果如下所示:
账户余额最终是:
-3.0
五、实验小结:
1、能够理解面向对象技术中的封装的概念;
2、掌握Eclipse软件的使用,以及包的编写和如何使用包中的类;
3、能够理解UML图,并且根据图中相关提示进行类的创建和方法的编写
实验二、类设计实验(银行账户的设计)
一、实验目的
⒈使用继承和方法覆盖创建子类
⒉综合使用面向对象技术,根据现实问题抽象设计模拟银行账户类
二、实验设备与环境
装有JAVA语言工具软件(NetbeansIDE6.5)的计算机。
三、实验内容
在银行项目中创建Account类的两个子类SavingsAccount和CheckingAccount,这些账户的规则如习题册P6-2所示。
设计该子类满足所给的UML类图。
a)修改Account类
b)创建SavingsAccount类
c)创建CheckingAccount类删除当前的TestBanking类
d)修改当前的TestBanking类
e)运行TestBanking程序。
四、实验过程及结果
1、根据实验要求和UML图示,进行SavingsAccount和CheckingAccount两个子类的创建,并且对Account类进行修改。
2、修改Account类:
依据UML图示,可以知道将Account类中的实例变量balance改为受保护的,即为protected,做同样修改的,还有Account构造器,与此同时,还需要将deposit()方法和withdraw()方法的返回类型修改为boolean,修改后,其具体代码如下所示:
packagemybank;
publicclassAccount{
protecteddoublebalance;
publicAccount(doubleinitBalance){
balance=initBalance;
}
publicdoublegetBalance(){
returnbalance;
}
publicbooleandeposit(doubleamt){
balance=balance+amt;
returntrue;
}
publicbooleanwithdraw(doubleamt){
booleanresult=false;
if(amt<=balance){
balance=balance-amt;
result=true;
}
returnresult;
}
}
3、创建SavingsAccount类,根据UML图,该类是Account类的子类,同时在该类中,应该声明一个由private所修饰的interestRate实例和一个由public所修饰的SavingsAccount构造器,其具体实现代码如下所示:
packagemybank;
publicclassSavingsAccountextendsAccount{//SavingsAccount类继承自Account类
privatedoubleinterestRate;//声明interrstRate实例
//创建一个SavingsAccount构造器
publicSavingsAccount(doubleinitBalance,doubleinterestRate){
super(initBalance);
this.interestRate=interestRate;
}
}
4、创建CheckingAccount类,在CheckingAccount一个类中,应当声明一个overdraftAmount实例变量,并且添加具有两个参数的公有构造器:
initBalance和overdraftAmount,同时,使得initBalance能够接收传参,而overdraftAmount能够保存实例变量,其代码如下图所示:
packagemybank;
publicclassCheckingAccountextendsAccount{//CheckingAccount类是Account类的子类
privatedoubleoverdraftAmount;//声明overdraftAmount实例变量
//创建构造器,具有两个参数
publicCheckingAccount(doubleinitBalance,doubleoverdraftAmount){
super(initBalance);
this.overdraftAmount=overdraftAmount;
}
//添加只有一个参数的公有构造器,并默认其值为0.0
publicCheckingAccount(doubleinitBalance){
this(initBalance,0.0);
}
//覆盖withdarw方法,使用overdraftAmount变量
publicbooleanwithdraw(doubleamount){
booleanresult=true;
if(balance //当没有足够的余额来响应wuthdraw方法的时候,则检查是否有足够的可透支款项 doubleoverdraftNeeded=amount-balance; if(overdraftAmount //当没有透支款项或不足以透支款项不足以支付当前所需时 result=false; } else{ balance=0.0; overdraftAmount-=overdraftNeeded; } } else{ balance=balance-amount; } returnresult; } } 5、删除当前的TestBanking类,复制实验模板中的TestBanking类并且修改当前的TestBanking类,其具体实现代码如下所示: packagemybank.test; //导入mybank包中的所有类 importmybank.Account; importmybank.Bank; importmybank.CheckingAccount; importmybank.Customer; importmybank.SavingsAccount; publicclassTestBanking{ publicstaticvoidmain(String[]args){ Bankbank=newBank(); Customercustomer; Accountaccount; //建立银行客户和他们名下的账户信息 System.out.println("创建客户JaneSmith."); bank.addCustomer("Jane","Simms"); customer=bank.getCustomer(0); System.out.println("他名下创建的账户有余额500.00并且3%的利润."); customer.setAccount(newSavingsAccount(500.00,0.03)); System.out.println("创建客户OwenBryant."); bank.addCustomer("Owen","Bryant"); customer=bank.getCustomer (1); System.out.println("他名下创建的账户有余额500.00并且没有可透支款项."); customer.setAccount(newCheckingAccount(500.00)); System.out.println("创建客户TimSoley."); bank.addCustomer("Tim","Soley"); customer=bank.getCustomer (2); System.out.println("他名下创建的账户有余额500.00并且有500余额的可透支账户."); customer.setAccount(newCheckingAccount(500.00,500.00)); System.out.println("创建客户MariaSoley."); bank.addCustomer("Maria","Soley"); customer=bank.getCustomer(3); System.out.println("Maria和她的丈夫共有着这份账户."); customer.setAccount(bank.getCustomer (2).getAccount()); System.out.println(); //说明各种账户所发生动作的类型并为SavingsAccount设定测试标准 System.out.println("已经将JaneSmith和其名下账户信息进行保存."); customer=bank.getCustomer(0); account=customer.getAccount(); //Performsomeaccounttransactions System.out.println("Withdraw150.00: "+account.withdraw(150.00)); System.out.println("Deposit22.50: "+account.deposit(22.50)); System.out.println("Withdraw47.62: "+account.withdraw(47.62)); System.out.println("Withdraw400.00: "+account.withdraw(400.00)); //Printoutthefinalaccountbalance System.out.println("客户["+customer.getLastName() +","+customer.getFirstName() +"]仍有余额"+account.getBalance()); System.out.println(); //测试CheckingAccount中的透支款项 System.out.println("已经将客户OwenBryant和他的账户进行更新,没有透支款项."); customer=bank.getCustomer (1); account=customer.getAccount(); //Performsomeaccounttransactions System.out.println("Withdraw150.00: "+account.withdraw(150.00)); System.out.println("Deposit22.50: "+account.deposit(22.50)); System.out.println("Withdraw47.62: "+account.withdraw(47.62)); System.out.println("Withdraw400.00: "+account.withdraw(400.00)); //Printoutthefinalaccountbalance System.out.println("客户["+customer.getLastName() +","+customer.getFirstName() +"]仍有余额"+account.getBalance()); System.out.println(); System.out.println("检查并更新过客户TimSoley和他的账户信息,其中存在透支款项."); customer=bank.getCustomer (2); account=customer.getAccount(); //Performsomeaccounttransactions System.out.println("Withdraw150.00: "+account.withdraw(150.00)); System.out.println("Deposit22.50: "+account.deposit(22.50)); System.out.println("Withdraw47.62: "+account.withdraw(47.62)); System.out.println("Withdraw400.00: "+account.withdraw(400.00)); //Printoutthefinalaccountbalance System.out.println("客户["+customer.getLastName() +","+customer.getFirstName() +"]仍有余额"+account.getBalance()); System.out.println(); System.out.println("检查并更新客户MariaSoley和他丈夫共同持有的账户."); customer=bank.getCustomer(3); account=customer.getAccount(); //Performsomeaccounttransactions System.out.println("Deposit150.00: "+account.deposit(150.00)); System.out.println("Withdraw750.00: "+account.withdraw(750.00)); //Printoutthefinalaccountbalance System.out.println("客户["+customer.getLastName() +","+customer.getFirstName() +"]仍有余额"+account.getBalance()); } } 6、运行TestBanking程序 其调试运行结果如下所示: 五、实验小结: 1、能够使用继承和方法覆盖创建子类,如SavingsAccount类和CheckingAccount类均继承自Account类 2、学会使用综合使用面向对象技术,根据现实问题抽象设计模拟银行账户类,如透支款项,存取账户,共有财产等 实验三、使用接口和抽象类设计实验 一、实验目的 练习使用抽象类和接口,并探究这些类组件的多态属性。 二、实验设备与环境 装有JAVA语言工具软件(NetbeansIDE6.5)的计算机。 三、实验内容 创建一个来源于抽象类Animal的动物层次。 几个动物类将实现一个叫做Pet的接口。 层次结构见习题册P7-12图7-2。 具体步骤如下: (1)按照7-13页的要求创建Pet接口 (2)按要求创建Animal类 (3)创建TestAnimals类 (4)编译TestAnimals类 (5)运行TestAnimals程序 四、实验过程及结果 1、打开Eclipse→新建Project→Excerise2 2、依据书本上的UML类图,得知接口Pet将实现Cat和Fish类中的方法,并且在该接口中应当声明三个由Public修饰的方法: getName,setName和Play,据此,得出接口Pet的代码如下所示: packageExecrise2; publicinterfacePet{ publicvoidsetName(Stringname); publicStringgetName(); publicvoidplay(); } 3、创建Animal类,要求声明并初始化一个受保护的实例变量“legs”,来记录动物腿的数目,同时应当抽象声明方法“eat”和具体方法“walk”,依据上述要求,实现代码如下图所示: packageExecrise2; publicabstractclassAnimal{ protectedintlegs; protectedAnimal(intlegs){ this.legs=legs; } publicabstractvoideat();//抽象方法eat publicvoidwalk(){//具体方法walk System.out.println("这个动物用"+legs+"腿走路."); }} 4、创建Spider类,要求Spider类继承自Animal类,并且声明一个构造器和定以一个方法eat,其代码如下图所示: packageExecrise2; publicclassSpiderextendsAnimal{ publicSpider(){ super(8);//蜘蛛有八只腿 } publicvoideat(){//蜘蛛具体吃什么 System.out.println("蜘蛛结网捕食飞行的昆虫."); } } 5、创建Cat类,要求能够包含一个实例变量来存储宠物的名字,同样的,需要声明一个构造器来指明猫有多少条腿,并实现Pet接口的方法,具体代码如下: packageExecrise2; publicclassCatexten
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GUI 应用 开发 JAVA 实验 报告 常熟 理工 答案