GUI应用开发JAVA实验报告常熟理工含答案.docx

上传人:b****5 文档编号:5102834 上传时间:2022-12-13 格式:DOCX 页数:15 大小:21.31KB
下载 相关 举报
GUI应用开发JAVA实验报告常熟理工含答案.docx_第1页
第1页 / 共15页
GUI应用开发JAVA实验报告常熟理工含答案.docx_第2页
第2页 / 共15页
GUI应用开发JAVA实验报告常熟理工含答案.docx_第3页
第3页 / 共15页
GUI应用开发JAVA实验报告常熟理工含答案.docx_第4页
第4页 / 共15页
GUI应用开发JAVA实验报告常熟理工含答案.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

GUI应用开发JAVA实验报告常熟理工含答案.docx

《GUI应用开发JAVA实验报告常熟理工含答案.docx》由会员分享,可在线阅读,更多相关《GUI应用开发JAVA实验报告常熟理工含答案.docx(15页珍藏版)》请在冰豆网上搜索。

GUI应用开发JAVA实验报告常熟理工含答案.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1