JAVA面向对象编程.docx
《JAVA面向对象编程.docx》由会员分享,可在线阅读,更多相关《JAVA面向对象编程.docx(10页珍藏版)》请在冰豆网上搜索。
![JAVA面向对象编程.docx](https://file1.bdocx.com/fileroot1/2022-11/17/118de1c2-79dd-4723-a41d-11293e42dd8a/118de1c2-79dd-4723-a41d-11293e42dd8a1.gif)
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());
}
}
[基本要求]运行程序并观察运行结果。
[思考问题]试述程序中主要语句的作用。
在类CCicle中,定义了两个全局变量pi和radius。
voidsetCircle(doubler,doublep)
{pi=p;
radius=r;
}
为构造方法,初始化数据成员。
doublegetRadius()
{
returnradius;
}
为类函数,返回值radius。
实验题2设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。
实验代码:
publicclassCar{
publicStringname;
publicdoublerate;
publicdoubleangle;
publicCar(StringName,doubleRate,doubleAngle){
name=Name;
rate=Rate;
angle=Angle;
}
publicCar(){
}
publicvoidgetRate(){
if(rate==0)
System.out.println("***汽车已停车!
***");
elseif(rate>160)
System.out.println("***行驶超速,请限速在160km/h以下!
***");
else
System.out.println("***汽车正常行驶中!
***");
}
publicstaticvoidmain(String[]args){
Carman=newCar();
man.name="zhangsan";
man.rate=85;
man.angle=30;
System.out.println("姓名:
"+man.name+"速率:
"+man.rate+"km/h方向盘角度:
"+man.angle+"度");
System.out.println("");
System.out.println("");
man.getRate();
}
}
运行结果:
实验题3定义一个类MyProgram,包含两个属性:
一个是private的整型属性data、一个是private的String类型的属性str,封装这两个属性的四个方法setData()和getData()、setStr()和getStr();将这两个属性转变为字符串的方法是toStr()。
编写程序,使用MyProgram类,实现数据的访问和修改,并调用toStr()方法显示该类的属性。
[基本要求]编写完整程序。
publicclassMyProgram{
privateintdata;
privateStringstr;
publicMyProgram(){
data=0;
str="";
}
publicintgetData(){
returndata;
}
publicvoidsetData(intdata){
this.data=data;
}
publicStringgetStr(){
returnstr;
}
publicvoidsetStr(Stringstr){
this.str=str;
}
publicStringtoStr(){
Strings=data+"";
s+=str;
returns;
}
publicvoidclear(){
this.data=0;
this.str="";
System.out.println("格式化后:
"+this.data+""+this.str);
}
publicstaticvoidmain(String[]args){
MyProgramjac=newMyProgram();
jac.data=20;
jac.str="ppspptvqqlive";
System.out.println("格式化前:
"+jac.data+""+jac.str);
jac.toStr();
System.out.println("转化为字符串后:
"+jac.data+""+jac.str);
jac.clear();
}
}
实验过程:
[思考问题]试述程序中各个方法的作用。
setData()和getData()、setStr()和getStr()分别为获得数据和资料,设置数据和资料。
toStr()函数用来将其他类型转化为字符串类型,直接用“+”即可。
Clear()函数用来格式化变量。
实验题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());
实验代码:
publicclassbankaccount{
intnum;
intleftmoney;
publicbankaccount(intnum,intleftmoney){
this.num=num;
this.leftmoney=leftmoney;
}
publicintgetleftmoney(){
returnleftmoney;
}
publicvoidsavemoney(doublemoney){
leftmoney+=money;
}
publicvoidgetmoney(doublemoney){
if(money<=leftmoney)
leftmoney-=money;
else
System.out.println("只能取:
"+leftmoney);
}
publicstaticvoidmain(String[]args){
bankaccountba=newbankaccount(888123,1000);
ba.savemoney(50000);
System.out.println("存入50000元后余额为:
"+ba.getleftmoney());
ba.getmoney(40000);
System.out.println("取出40000元后余额为:
"+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){}
}
实验代码:
publicclassNode{
publicintdata;
Nodenext;
publicNode(intdata){
this.data=data;
this.next=null;
}
publicvoidNodeDisplay(){
System.out.println("{"+data+"}");
}
}
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.nex