实验四 Java语言面向对象基础编程.docx

上传人:b****6 文档编号:5999370 上传时间:2023-01-02 格式:DOCX 页数:20 大小:250.82KB
下载 相关 举报
实验四 Java语言面向对象基础编程.docx_第1页
第1页 / 共20页
实验四 Java语言面向对象基础编程.docx_第2页
第2页 / 共20页
实验四 Java语言面向对象基础编程.docx_第3页
第3页 / 共20页
实验四 Java语言面向对象基础编程.docx_第4页
第4页 / 共20页
实验四 Java语言面向对象基础编程.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

实验四 Java语言面向对象基础编程.docx

《实验四 Java语言面向对象基础编程.docx》由会员分享,可在线阅读,更多相关《实验四 Java语言面向对象基础编程.docx(20页珍藏版)》请在冰豆网上搜索。

实验四 Java语言面向对象基础编程.docx

实验四Java语言面向对象基础编程

实验项目编号

实验项目名称

Java语言面向对象基础编程

实验学时

实验日期

成绩

实验地点

指导老师

实验四Java语言面向对象基础编程

一、实验目的

1.理解Java语言是如何体现面向对象编程基本思想,

2.了解类的封装方法,以及如何创建类和对象,

3.了解成员变量和成员方法的特性。

二、实验内容

1.类的定义、封装和对象创建的使用。

编写一个Java应用程序,该程序中有3个类:

Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。

具体要求如下:

(1)Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。

另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。

(2)Lader类具有类型double的上底、下底、高、面积属性,具有求面积的功能。

(3)Circle类具有类型为double的半径、周长和面积属性,具有求周长、面积的功能。

packageexercise;

classTrangle{

doublesideA,sideB,sideC,area,length;

booleanboo;

//带三个参数的构造函数

publicTrangle(doublea,doubleb,doublec){

sideA=a;//参数a,b,c分别赋值给sideA,sideB,sideC

sideB=b;

sideC=c;

if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideB+sideC>sideA){//a,b,c构成三角形的条件表达式

boo=true;//给boo赋值。

}else{

boo=false;//给boo赋值。

}

}

doublegetLength(){

returnsideA+sideB+sideC;//方法体,要求计算出length的值并返回

}

//计算三角形的面积

publicdoublegetArea(){

if(boo){

doublep=(sideA+sideB+sideC)/2.0;

area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));

returnarea;

}else{

System.out.println("不是一个三角形,不能计算面积");

return0;

}

}

publicvoidsetABC(doublea,doubleb,doublec){

sideA=a;//参数a,b,c分别赋值给sideA,sideB,sideC

sideB=b;

sideC=c;

if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideB+sideC>sideA){//a,b,c构成三角形的条件表达式

boo=true;//给boo赋值。

}else{

boo=false;//给boo赋值。

}

}

}

//定义一个梯形类

classLader{

doubleabove,bottom,height,area;

Lader(doublea,doubleb,doubleh){

 

above=a;//方法体,将参数a,b,c分别赋值给above,bottom,height

bottom=b;

height=h;

}

doublegetArea(){

return(above+bottom)*height/2.0;//方法体,,要求计算出area返回

}

}

//定义一个圆类

classCircle{

doubleradius,area;

Circle(doubler){

radius=r;//方法体

}

doublegetArea(){

returnMath.PI*Math.pow(radius,2);//方法体,要求计算出area返回

}

doublegetLength(){

return2*Math.PI*radius;//getArea方法体的代码,要求计算出length返回

}

voidsetRadius(doublenewRadius){

radius=newRadius;

}

doublegetRadius(){

returnradius;

}

}

publicclassshiyan4_1{

publicstaticvoidmain(Stringargs[]){

doublelength,area;

Circlecircle=null;

Trangletrangle;

Laderlader;

circle=newCircle(3);//创建对象circle

trangle=newTrangle(6,5,2);//创建对象trangle。

lader=newLader(8,9,6);//创建对象lader

length=circle.getLength();//circle调用方法返回周长并赋值给length

System.out.println("圆的周长:

"+length);

area=circle.getArea();//circle调用方法返回面积并赋值给area

System.out.println("圆的面积:

"+area);

length=trangle.getLength();//trangle调用方法返回周长并赋值给length

System.out.println("三角形的周长:

"+length);

area=trangle.getArea();//trangle调用方法返回面积并赋值给area

System.out.println("三角形的面积:

"+area);

area=lader.getArea();//lader调用方法返回面积并赋值给area

System.out.println("梯形的面积:

"+area);

trangle=newTrangle(12,34,1);//trangle调用方法设置三个边,要求将三个边修改为12,34,1。

area=trangle.getArea();//trangle调用方法返回面积并赋值给area

System.out.println("三角形的面积:

"+area);

length=trangle.getLength();//trangle调用方法返回周长并赋值给length

System.out.println("三角形的周长:

"+length);

}

}

2.实例成员与类成员的使用。

按程序模板的要求编写源文件,要特别注意程序的输出结果,并能正确解释输出的结果。

packageexercise;

classA{

floata;

staticfloatb;

voidsetA(floatA){

a=A;

}

voidsetB(floatB){

b=B;

}

floatgetA(){

returna;

}

floatgetB(){

returnb;

}

voidoutputA(){

System.out.println(a);

}

staticvoidoutputB(){

System.out.println(b);

}

}

publicclassshiyan4_2{

@SuppressWarnings("static-access")

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

A.b=100;

A.outputB();

Acat=newA();

Adog=newA();

cat.setA(200);

cat.setB(400);

dog.setA(150);

dog.setB(300);

cat.outputA();

cat.outputB();

dog.outputA();

dog.outputB();

}

}

3.方法中参数传递的练习

在其它语言中,函数调用或过程调用时参数有传值调用和传地址调用之分。

在Java中,方法中的参数传递可以分为传值调用或对象方法调用等方式。

传值调用即传递的参数是基本数据类型,调用方法时在方法中将不能改变参数的值,这意味着只能使用它们。

对象调用是指先调用对象,再调用对象的方法,这种方式可以修改允许存取的成员变量。

所以,如果不想改变参数的值,可以采用传值调用的方法。

如果想改变参数的值,可采用对象调用的方法,间接修改参数的值。

(1)编写一个传值调用的程序文件SY3_3.java。

程序功能:

程序首先给整型变量x和y赋一个初值10,然后使用传值调用方式调用方法ff1对x和y做乘方及输出x和y的乘方值,最后再输出x和y的乘方值。

packageexercise;

publicclassshiyan4_3{

 

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

intx=10,y=10;

swap(x,y);

System.out.println("x="+x+",y="+y);

}

staticvoidswap(intpassX,intpassY){

passX=passX*passX;

passY=passY*passY;

System.out.println("passX="+passX+",passY="+passY);

}

}

(2)编写一个调用对象方法的程序文件SY3_4.java。

packageexercise;

publicclassshiyan4_4{

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Powerp=newPower();

p.swap(p.x,p.y);

System.out.println("方法调用后x="+p.x+",y="+p.y);

}

}

classPower{

intx=10,y=10;

voidswap(intpassX,intpassY){

System.out.println("初始时x="+x+",y="+y);

x=passX*passX;

y=passY*passY;

System.out.println("方法调用中x="+x+",y="+y);

}

}

4.定义一个名为MyRectangle的矩形类,类中有4个私有的整型域,分别是矩形的左上角坐标(xUp,yUp)和右下角坐标(xDown,yDown);类中定义没有参数的构造方法和有4个int参数的构造方法,用来初始化类对象。

类中还有以下方法:

getW()——计算矩形的宽度;getH()——计算矩形的高度;area()——计算矩形的面积;toString()——把矩形的宽、高和面积等信息作为为字符串返回。

编写应用程序使用MyRectangle类。

packageexercise;

classMyRectangle

{

privateintxUp,yUp;

privateintxDown,yDown;

publicMyRectangle(){

xUp=yUp=xDown=yDown=0;

}

publicMyRectangle(intxu,intyu,intxd,intyd){

xUp=xu;

yUp=yu;

xDown=xd;

yDown=yd;

}

publicintgetW(){

returnMath.abs(xUp-xDown);

}

publicintgetH(){

returnMath.abs(yUp-yDown);

}

publicintarea(){

returnthis.getW()*this.getH();

}

publicStringtoString(){

StringtempStr="width="+this.getW()+"height="+this.getH()+"area="+this.area();

returntempStr;

}

}

publicclassshiyan4_5{

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

MyRectangletempRec1=newMyRectangle();

MyRectangletempRec2=newMyRectangle(-1,5,4,7);

System.out.println("Thisfirstrectangleinformation"+tempRec1.toString());

System.out.println("Thissecondrectangleinformation"+tempRec2.toString());

}

}

5.请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit:

face描述一张牌的牌面值(如:

"Ace","Deuce","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King");suit描述一张牌的花色(如:

"Hearts","Diamonds","Clubs","Spades")。

定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限的方法getFace(),得到扑克牌的牌面值;定义protected访问权限的方法getSuit(),得到扑克牌的花色;定义方法toString(),返回表示扑克牌的花色和牌面值字符串(如“AceofHearts”、“TenofClubs”等)。

packageexercise;

classCard

{

privateStringface;

privateStringsuit;

publicCard(Stringf,Strings){

face=f;

suit=s;

}

protectedStringgetFace(){

returnface;

}

protectedStringgetSuit(){

returnsuit;

}

publicStringtoString(){

returnface+"of"+suit;

}

}

publicclassshiyan4_6{

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Cardcard1=newCard("Ace","Hearts");

Cardcard2=newCard("Ten","Clubs");

System.out.println(card1.toString());

System.out.println(card2.toString());

}

}

6.设计一个Worker类,其成员变量有:

身份证号、姓名、性别、年龄、入职时间、工资/月、奖金/月、加班费/月、电话费/月、生活费/月、交通费/月、房租/月;用构造方法进行初始化;其他成员方法:

输出工人信息的方法(包括输出净收入),当某个信息没有被赋值(初始化)时,输出信息为“未知”;计算总收入的方法,总收入中要考虑扣除国家现行的个人所得税法规定的税金;计算总支出的方法。

packageexercise;

classWorker

{

privateStringnumber;

privateStringname;

privateStringsex;

privateintage;

privateStringentry;

privatedoublesalary;

privatedoublebonus;

privatedoubleovertimeMoney;

privatedoublephoneMoney;

privatedoubleliveMoney;

privatedoubletrafficMoney;

privatedoublerent;

publicWorker()

{

number=name=sex=entry="";

age=0;

salary=bonus=overtimeMoney=phoneMoney=liveMoney=trafficMoney=rent=0;

}

publicWorker(Stringnum,Stringnam,Stringse,intag,Stringent,doublesal,doublebon,doubleove,doublepho,doubleliv,doubletra,doubleren)

{

number=num;

name=nam;

sex=se;

age=ag;

entry=ent;

salary=sal;

bonus=bon;

overtimeMoney=ove;

phoneMoney=pho;

liveMoney=liv;

trafficMoney=tra;

rent=ren;

}

publicvoidshowInfo(){

if(number.equals("")){

System.out.println("δ֪");

}else{

System.out.println(number+"memberinfomationlist:

");

System.out.println(name);

System.out.println(sex);

System.out.println(age);

System.out.println(entry);

doublemoney=salary+bonus+overtimeMoney-phoneMoney-liveMoney-trafficMoney-rent;

System.out.println(money);

}

}

}

publicclassshiyan4_7

{

publicstaticvoidmain(String[]args)

{

Workerworker1=newWorker();

Workerworker2=newWorker("0715646","leafspace","women",22,"20160901",5000,500,1200,50,800,150,1500);

worker1.showInfo();

worker2.showInfo();

}

}

7.设计一个汽车Car类,其成员变量有:

商标、型号、系列、箱式(三厢、两厢)、颜色、出厂日期、门数、排量、价格、可优惠价、百公里耗油量、最高时速、最大功率、最大扭矩、加速时间、刹车距离;用构造方法进行初始化;其他成员方法:

输出汽车信息的方法,当某个信息没有被赋值(初始化)时,输出信息为“未知”;计算行驶一定距离总耗油量,以及给定油价计算燃油费用的方法。

packageexercise;

classCar

{

privateStringlogo;

privateStringmodel;

privateStringseries;

privateStringboxN;

privateStringcolor;

privateStringoutDate;

privateintdoorN;

privatelongoutN;

privatedoubleprice;

privatedoublesellprice;

privatedoubleoil;

privateintspeed;

privatedoublemaxpower;

privatedoublemaxspace;

privatedoubletime;

privatedoubletspace;

publicCar(Stringlog,Stringmod,Stringser,Stringbox,Stringcol,Stringoutd,

intdoorn,longoutn,doublepri,doublesell,doubleoi,intspe,doublemaxpo,doublemaxsp,doubletim,doubletsp){

logo=log;

model=mod;

series=ser;

boxN=box;

color=col;

outDate=outd;

doorN=doorn;

outN=outn;

price=pri;

sellprice=sell;

oil=oi;

speed=spe;

maxpower=maxpo;

maxspace=maxsp;

time=tim;

tspace=tsp;

}

publicvoidshowInfo(){

System.ou

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

当前位置:首页 > 工作范文 > 制度规范

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

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