java实验报告实验二 面向对象编程1.docx
- 文档编号:27504976
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:28
- 大小:673.48KB
java实验报告实验二 面向对象编程1.docx
《java实验报告实验二 面向对象编程1.docx》由会员分享,可在线阅读,更多相关《java实验报告实验二 面向对象编程1.docx(28页珍藏版)》请在冰豆网上搜索。
java实验报告实验二面向对象编程1
信息工程学院
Java程序设计实习报告
实验二面向对象编程
(1)
1.实验目的
掌握Java程序面向对象编程的基本架构,会运用面向对象的思想编写Java程序。
2.实验内容
实验题1阅读如下程序,完成思考题。
classCCircle
{doublepi;
doubleradius;
doublegetRadius()
{returnradius;
}
voidsetCircle(doubler,doublep)
{pi=p;
radius=r;
}
}
publicclassEx2_1
{publicstaticvoidmain(Stringargs[])
{CCirclecir1=newCCircle();
cir1.setCircle(2.0,3.1416);
System.out.println("radius="+cir1.getRadius());
}
}
[基本要求]运行程序并观察运行结果。
[思考问题]试述程序中主要语句的作用。
CCirclecir1=newCCircle();//新建一个CCircle对象
cir1.setCircle(2.0,3.1416);//初始化对象
System.out.println("radius="+cir1.getRadius());//输出对象的属性
实验题2设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。
主要代码如下:
packagepackage2_2;
classCar{
privateStringuser;
privateintspeed;
privateintangle;
publicCar(Stringname,intspeed,intangle){
user=name;
this.speed=speed;
this.angle=angle;
}
publicvoidchangeSpeed(intspeed2){
speed=speed2;
}
publicvoidcarStop(){
speed=0;
angle=0;
System.out.println("车辆处于停车状态");
}
publicvoiddisplay(){
System.out.println("车主姓名:
"+user);
System.out.println("当前车速:
"+speed);
System.out.println("方向盘角度:
"+angle);
}
}
实验题3定义一个类MyProgram,包含两个属性:
一个是private的整型属性data、一个是private的String类型的属性str,封装这两个属性的四个方法setData()和getData()、setStr()和getStr();将这两个属性转变为字符串的方法是toStr()。
编写程序,使用MyProgram类,实现数据的访问和修改,并调用toStr()方法显示该类的属性。
[基本要求]编写完整程序。
[思考问题]试述程序中各个方法的作用。
setData()和setStr()//为对象的属性赋值
getData()和getStr()//得到对象属性的值
主要代码如下:
packagepackage2_3;
publicclassMyProgram{
privateintdata;
privateStringstr;
publicvoidsetData(intdata){
this.data=data;
}
publicvoidsetStr(Stringstr){
this.str=str;
}
publicintgetData(){
returndata;
}
publicStringgetStr(){
returnstr;
}
publicStringtoStr(){
returnString.valueOf(data)+str;
}
}
实验题4定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有"存款"、"取款"、"查询余额"和”显示帐号”。
定义主类,创建帐户类的对象,并完成相应操作。
提示:
关键代码如下:
publicintgetleftmoney(){
returnleftmoney;
}
publicvoidsavemoney(doublemoney){
leftmoney+=money;
}
publicvoidgetmoney(doublemoney){
if(money<=leftmoney)
leftmoney-=money;
else
System.out.println("只能取:
"+leftmoney);
}
…
bankaccountba=newbankaccount(888123,1000);
ba.savemoney(21000);
System.out.println("存入21000元后余额为:
"+ba.getleftmoney());
ba.getmoney(11500);
System.out.println("11500元后余额为:
"+ba.getleftmoney());
实验题5定义链表类,实现单链表基本操作。
提示:
关键代码如下:
publicclassNode{
publicintdata;
Nodenext;
publicNode(intdata){
this.data=data;
this.next=null;
}
publicvoidNodeDisplay(){
System.out.println("{"+data+"}");
}
}
publicclassLink{
privateNodefirst;
publicLink(){
this.first=null;
}
publicbooleanisEmpty(){}
publicvoidinsertHeadNode(intdata){}
publicNodedeleteHeadNode(){}
publicvoidfindNode(intk){}
publicvoiddisplayLink(){}
publicstaticvoidmain(String[]args){}
}
主要代码如下:
packagepackage2_5;
publicclassLink{
privateNodefirst;
publicLink(){
this.first=null;
}
publicbooleanisEmpty(){
returnfirst==null;
}
publicvoidinsertHeadNode(intdata){
Nodem=newNode(data);
m.next=first;
first=m;
first.NodeDisplay();
}
publicNodedeleteHeadNode(){
Nodem=first;
first=first.next;
returnm;
}
publicvoidfindNode(intk){
Nodem=first;
inti=1;
while(m!
=null){
if(i==k){
System.out.print("第"+k+"个结点已找到,是:
");
m.NodeDisplay();
}
m=m.next;
i++;
}
}
publicvoiddisplayLink(){
Nodem=first;
while(m!
=null){
m.NodeDisplay();
m=m.next;
}
}
publicstaticvoidmain(String[]args){
Linktemp=newLink();
temp.insertHeadNode
(1);
temp.insertHeadNode
(2);
temp.insertHeadNode(3);
temp.insertHeadNode(4);
temp.insertHeadNode(5);
temp.findNode(3);
temp.deleteHeadNode();
temp.displayLink();
}
}
实验三面向对象编程
(2)
1.实验目的
(1)掌握Java中的继承机制及包(package)、接口(interface)等的设计方法。
(2)掌握static、this、super等关键字的使用。
2.实验内容
实验题1有图形类的父类Shape,参照圆Circle类补充完整正方性Square和三角形Triangle类,并分析运行结果。
classShape{
voiddraw(){}
voiderase(){}
}
classCircleextendsShape{
voiddraw(){System.out.println("Circle.draw()");}
voiderase(){System.out.println("Circle.erase()");}
}
classSquareextendsShape{
voiddraw(){}
voiderase(){}
}
classTriangleextendsShape{
voiddraw(){}
voiderase(){}
}
publicclassShapes{
publicstaticShaperandShape(){
switch((int)(Math.random()*3)){
default:
//Toquietthecompiler
case0:
returnnewCircle();
case1:
returnnewSquare();
case2:
returnnewTriangle();
}
}
publicstaticvoidmain(String[]args){
Shape[]s=newShape[9];
//Fillupthearraywithshapes:
for(inti=0;i s[i]=randShape(); //Makepolymorphicmethodcalls: for(inti=0;i s[i].draw(); } } 实验题2有两个类: MobileManagement和Mobile,分别描述如图3.7所示两部手机名称及价格,类MobileManagement在包cn.edu.nwsuaf.jp.p3中,而Mobile在包cn.edu.nwsuaf.jp.p3.data中。 它们代码如下。 运行MobileManagement.java,你应该看到如图3.8所示结果。 [基本要求]在空白处填写相关代码并修改上面程序,使程序能够显示两部手机的价格和数量,运行结果如图3.9所示。 E365,1780RMBM330,1450RMB 图3.4手机及价格图 图3.5运行结果图 程序Mobile.java源代码: publicclassMobile{ /**Holdsthenameofthemobile.*/ privateStringname; /**Holdsthepriceofthemobile.*/ privatefloatprice; /**Createsanewmobileobject.*/ publicMobile(Stringname,floatprice){ this.name=name; this.price=price; } /**Getsthenameofthemobile.*/ publicStringgetName(){ returnname; } /**Getsthepriceofthemobile.*/ publicfloatgetPrice(){ returnprice; } } 程序MobileManagement.java源代码: importjavax.swing.JOptionPane; publicclassMobileManagement{ /**Definestheentrypointoftheapplication.*/ publicstaticvoidmain(String[]args){ //Createstwomobilephoneobjects. Mobilemobile1=newMobile("E365",1780); Mobilemobile2=newMobile("M330",1450); //Displaysthetwomobilephonesinadialogbox. JOptionPane.showMessageDialog(null,"Mobilephones: \n\n"+mobile1.getName()+"\n"+mobile2.getName()); } } 图3.6运行结果图 程序运行结果如下: 实验题3有四个类,主类Store在包cn.edu.nwsuaf.jp.p4中,Mobile、Mp3Player、Product在包cn.edu.nwsuaf.jp.p4.data中,Mobile、Mp3Player是Product的子类,Product和Store代码如下: Store.java源代码: packagecn.edu.nwsuaf.jp.p4; importjava.util.Arrays; importjavax.swing.JOptionPane; importcn.edu.nwsuaf.jp.p4.data.Mobile; importcn.edu.nwsuaf.jp.p4.data.Mp3Player; importcn.edu.nwsuaf.jp.p4.data.Product; publicclassStore{ //**Definestheentrypointoftheapplication.*/ publicstaticvoidmain(String[]args){ //Createstwomobilephoneobjects. Mobilemobile1=newMobile("ChinaMobile","E365",1780); Mobilemobile2=newMobile("ChinaMobile","M330",1450); Mp3Playerplayer1=newMp3Player("MeizoX3",256,399); Mp3Playerplayer2=newMp3Player("MeizoE5",512,580); Mp3Playerplayer3=newMp3Player("XliveXMMP3Play", 256,930); Product[]products={mobile1,mobile2,player1,player2,player3}; Arrays.sort(products); Stringtext=""; for(intindex=0;index text+=products[index].toString()+"\n"; //Displaysthetwomobilephonesinadialogbox. JOptionPane.showMessageDialog(null,"Theproducts are: \n\n"+text+"\nThereare"+Product.getCount() +"products."); } } Product.java源代码: packagecn.edu.nwsuaf.jp.p4.data; publicabstractclassProductimplementsComparable /**Holdsthenameoftheproduct.*/ protectedStringname; /**Holdsthepriceoftheproduct.*/ protectedfloatprice; /**Holdsthenumberofproducts.*/ protectedstaticintcount; /**Createanewproductobject.*/ protectedProduct(Stringname,floatprice){ this.name=name; this.price=price; ++count; } /**Getsthenameoftheproduct.*/ publicStringgetName(){ returnname; } /**Getsthepriceoftheproduct.*/ publicfloatgetPrice(){ returnprice; } /**Getsthenumberofproducts.*/ publicstaticintgetCount(){ returncount; } /**Comparesthisproductwiththegivenproduct.*/ publicintcompareTo(Productproduct){ returnnewFloat(product.getPrice()).compareTo(price); } } [基本要求]设计类Mobile和类MP3Player,使它们和类Product、Store组成一个完整的程序,且运行结果如图3.10所示。 图3.7运行结果图 程序运行结果如下: 主要代码如下: Mobile.Java packagecn.edu.nwsuaf.jp.p4.data; publicclassMobileextendsProduct{ privateStringbus; /**Createanewproductobject.*/ publicMobile(Stringbuss,Stringname,floatprice){ super(name,price); this.bus=buss; } /**Getsthenameoftheproduct.*/ publicStringgetName(){ returnname; } /**Getsthepriceoftheproduct.*/ publicfloatgetPrice(){ returnprice; } /**Getsthenumberofproducts.*/ publicstaticintgetCount(){ returncount; } publicStringtoString(){ returnname+"on"+bus+","+String.valueOf(price)+"RMB"; } /**Comparesthisproductwiththegivenproduct.*/ } Mp3Player.Java packagecn.edu.nwsuaf.jp.p4.data; publicclassMp3PlayerextendsProduct{ privateintmomery; /**Createanewproductobject.*/ publicMp3Player(Stringname,intmm,intprice){ super(name,(float)price); this.momery=mm; } /**Getsthenameoftheproduct.*/ publicStringgetName(){ returnname; } /**Getsthepriceoftheproduct.*/ publicfloatgetPrice(){ returnprice; } /**Getsthenumberofproducts.*/ publicstaticintgetCount(){ returncount; } publicStringtoString(){ returnname+""+momery+"),"+String.valueOf(price)+"RMB"; } } 实验题4用LIST存放对象。 利用面向对象的思想,创建以下类: Person类,包含Person的姓名和身份证号码。 Student类,首先是一个Person,除此之外,包含学生的语文、数学、英文课的成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java实验报告实验二 面向对象编程1 java 实验 报告 面向 对象 编程