java 实验二 类与对象初识 实验报告.docx
- 文档编号:24797803
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:20
- 大小:1.48MB
java 实验二 类与对象初识 实验报告.docx
《java 实验二 类与对象初识 实验报告.docx》由会员分享,可在线阅读,更多相关《java 实验二 类与对象初识 实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
java实验二类与对象初识实验报告
实验二类与对象初识
【实验目的】
1.理解类的构造、属性、方法及实例化的使用;
2.学会对类的创建,构造函数的使用,类属性及方法的创建,以及类的实例化及使用;
3.会对类的创建,类的属性及方法的创建进行独立编程;
4.学会对较复杂的类进行分析;
5.掌握使用package和import语句;
6.理解uml类图,尝试使用简单uml工具。
【实验任务】
注意:
1,本章所有自己创建的类都必须创建到自己的包中,创建规则见课件或自行参考资料;
2,本章所有自己创建的类都需附上UML类图截图。
例1:
根据java代码生成单个文件(或单个类)的类图
本实验以HelloWorld.java这个文件为例,其代码及生成的类图的结果截图如下:
以下为UML截图:
例2:
根据java代码生成多个类之间(可以在同一文件也可以是不同文件)的关系图
本实验创建一个HW1类,继承HelloWorld类,即父类与子类的关系,HW1代码见下:
然后我把HelloWorld跟HW1两个类分别拖到newfile.cld的编辑窗口,其结果截图如下:
实验2-1、给出下面的程序运行结果输出?
并解释问题出在哪里?
publicclassMy{
Strings;
publicvoidMy(){
s="Constructor";
}
publicvoidgo(){
System.out.println(s);
}
publicstaticvoidmain(Stringargs[]){
Mym=newMy();
m.go();
}
}
首先,新建一个类,并将上述代码输入,其运行结果截图如下:
然后根据运行提示,将其更改为构造函数,即删除掉void,因为构造方法没有返回类型(修饰符void也不能有),改完程序就能运行并得出正确结果,其截图如下:
该程序的UML类图截图如下:
实验2-2、课本64页例24,完成BankAccount类以及AccountTester2类,这个例子集中体现了本章2.2-2.5的知识点,注意测试时请使用跟书本不一样测试数据。
本实验我采用了一个类放在一个文件中,并更改了测试数据,其代码及运行结果还有UML图见下:
BankAccount2类的代码如下:
packagejz;
enumGrade{
VIP,
General;
}
publicclassBankAccount2{
privatestaticintLAST_ACCOUNT_NUMBER=0;
privateintaccountNumber;
privateStringownerName;
privatefloatbalance;
Gradegrade;
publicBankAccount2(){
this("",0,Grade.General);
}
publicBankAccount2(StringinitName){
this(initName,0,Grade.General);
}
publicBankAccount2(StringinitName,floatinitBal,Gradeg){
ownerName=initName;
accountNumber=++LAST_ACCOUNT_NUMBER;
balance=initBal;
grade=g;
}
publicstaticBankAccount2example1(){
BankAccount2ba=newBankAccount2();
ba.setOwnerName("LiHong");
ba.deposit(3000);
returnba;
}
publicstaticBankAccount2example2(){
BankAccount2ba=newBankAccount2();
ba.setOwnerName("ZhaoWei");
ba.deposit(4000);
ba.deposit(5000);
returnba;
}
publicstaticBankAccount2emptyAccountExample(){
BankAccount2ba=newBankAccount2();
ba.setOwnerName("HeLi");
returnba;
}
publicintgetAccountNumber(){
returnaccountNumber;
}
publicStringgetOwnerName(){
returnownerName;
}
publicfloatgetBalance(){
returnbalance;
}
publicvoidsetOwnerName(StringaName){
ownerName=aName;
}
publicfloatdeposit(floatanAmount){
balance+=anAmount;
returnbalance;
}
publicfloatwithdraw(floatanAmount){
if(anAmount<=balance){
balance-=anAmount;
}
returnanAmount;
}
publicStringtoString(){
return(grade+"account#"
+newjava.text.DecimalFormat("000000").format(accountNumber)
+"withbalance"
+newjava.text.DecimalFormat("$0.00").format(balance));
}
}
AccountTester2类代码如下:
packagejz;
publicclassAccountTester2{
publicstaticvoidmain(String[]args){
BankAccount2bobsAccount,marysAccount,biffsAccount;
bobsAccount=BankAccount2.example1();
marysAccount=BankAccount2.example1();
biffsAccount=BankAccount2.example2();
marysAccount.setOwnerName("Mary");
marysAccount.deposit(250);
System.out.println(bobsAccount);
System.out.println(marysAccount);
System.out.println(biffsAccount);
}
}
实验结果截图如下:
该实验的UML类图截图如下:
实验2-3、课本74页习题第10题。
Patient类代码:
packagejz;
publicclassPatient
{
privateStringname;
privatecharsex;
privateintage;
privatefloatweight;
privatebooleanallergies;
publicvoidsetname(Stringa)
{
name=a;
}
publicvoidsetsex(charb)
{
sex=b;
}
publicvoidsetage(intc)
{
age=c;
}
publicvoidsetweight(floatd)
{
weight=d;
}
publicvoidsetallergies(booleane)
{
allergies=e;
}
publicStringgetname(){returnname;}
publicchargetsex(){returnsex;}
publicintgetage(){returnage;}
publicfloatgetweight(){returnweight;}
publicbooleangetallergies(){returnallergies;}
}
Test类的代码:
packagejz;
publicclasstest{
publicstaticvoidmain(Stringargs[])
{
Patientapril=newPatient();
april.setname("Zhaowei");
april.setsex('m');
april.setage(27);
april.setweight(174.36f);
april.setallergies(true);
System.out.println("Name:
"+april.getname());
System.out.println("sex:
"+april.getsex());
System.out.println("age:
"+april.getage());
System.out.println("weight:
"+april.getweight());
System.out.println("allergies:
"+april.getallergies());
april.setname("林珊");
april.setsex('女');
april.setage(36);
april.setweight(162);
april.setallergies(false);
System.out.println("姓名:
"+april.getname());
System.out.println("性别:
"+april.getsex());
System.out.println("年龄:
"+april.getage());
System.out.println("体重:
"+april.getweight());
System.out.println("是否过敏:
"+april.getallergies());
}
}
本实验的运行结果截图如下:
其UML类图截图如下:
实验2-4、课本74页习题第11题。
ComplexNumber类代码如下:
packagejz;
publicclassComplexNumber{
privatefloata;
privatefloatb;
publicStringtoString()
{if(a!
=0)
return(a+"i"+"+"+b);
elsereturn(""+b);
}
publicComplexNumber(floata,floatb)
{
this.a=a;
this.b=b;
}
publicvoidAdd(ComplexNumberp)
{
this.a+=p.a;
this.b+=p.b;
System.out.println("a+b=");
}
publicvoidDecrease(ComplexNumberp)
{
this.a-=p.a;
this.b-=p.b;
System.out.println("a-b=");
}
publicvoidMultiply(ComplexNumberp)
{
this.a=this.a*p.a;
this.b=this.b*p.b;
System.out.println("a*b=");
}
}
Numbertester代码如下:
packagejz;
publicclassNumberTester{
publicstaticvoidmain(Stringargs[])
{
ComplexNumbera=newComplexNumber(4,8);
ComplexNumberb=newComplexNumber(10,12);
a.Add(b);System.out.println(a.toString()+"\n");
a.Decrease(b);System.out.println(a.toString()+"\n");
a.Multiply(b);System.out.println(a.toString()+"\n");
}
}
实验结果截图如下:
其UML类图截图如下:
实验2-5、课本74页习题第14题。
个人觉得它们三个类关系属于关联中的聚集,即一个老师可以归属很多系,而且一个老师也可以归属很多学院,其截图如下:
实验2-6.学会使用package语句与import语句,了解如何在不同的情况下使用包,怎么打包?
相关知识点请参见课本2.2.5与课件74页左右。
本实验采用最常用的的方法,那就是使用java的类库包:
jar。
即让对方直接引用你的类库。
首先,从项目导出jar包,导出来放在本项目的dist目录下,结果见下:
由于jar文件其实就是个zip格式,用360压缩打开,其截图见下:
接下来要引用,一般是在要引用的项目下面新建一个lib目录,然后把所有要用的外部库都复制到那里,最后在构建路径导入这个外部库,其截图如下:
最后Import一下,就直接可以用了,其运行结果截图如下:
实验心得:
通过本次实验,我理解了类的构造、属性、方法及实例化的使用,而且学会对类的创建,构造函数的使用,类属性及方法的创建,以及类的实例化及使用,除此之外,我还了解了package和import语句,并且学会使用简单uml工具去制作类图。
此次实验我尝试了把两个类和一个枚举类型放在同一个文件,也根据实验要求将一个类放在一个文件中,通过亲手操作,我对老师上课所讲的“当多个类在同一个文件中,与文件名同名的那个类必须是public类型的,并且只有它才可以是public,而其他类都不能是public类型,如果有main方法,则main方法也必须放到与文件名同名的那个类,也就是有public的那个类里面,本质就是多个类在同一文件,只能有一个类作为与外界的访问接口,就是与文件名同名的那个类。
”理解更为深刻!
但关于更改构造函数那道实验题,我其实不太理解,只是根据程序提示进行修改,并不理解其本质所在。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实验二 类与对象初识 实验报告 实验 对象 初识 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)