JAVA实验报告圆类Word文档格式.docx
《JAVA实验报告圆类Word文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA实验报告圆类Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
(3)编程在测试类中输出一个正方形的周长和面积
二、实验原理(可以流程图的形式出现,加以文字说明)
1.定义圆类Circle.
(1)抽象出Circle类包含成员变量radius、x和y,它们的类型均为double,代表了圆的半径和坐标属性。
成员方法setRadius()、getRadius()、calcArea()、calcGirth(),分别实现设置半径、返回半径、计算面积、计算周长的行为。
其中setRadius()方法用于给半径赋值没有返回值,类型为void。
calcArea()、calcGirth()、getRadius()方法用于计算和返回半径值,类型为double。
(2)声明用于保存圆数量的成员变量num,由Circle类创建任意圆对象时num值均要加1。
num变量应该是被所有圆对象共享,所以使用static关键字声明num为静态变量。
使用static声明静态方法getNum()用来返回num值,返回类型为int。
具体声明语句为:
privatestaticintnum;
publicstaticintgetNum(){returnnum;
}
(3)使用staticfinal关键字声明静态的符号常量PI(符号常量通常定义为大写字母),并给其赋值为3.14159,该常量可以被所有Cirlce类的圆对象使用,具体声明语句为:
publicstaticfinaldoublePI=3.14159;
(4)定义两个构造方法,一个无参的构造方法和一个带参数构造方法,其中带参构造。
无参构造,radius传递给圆对象的成员变量r方法对圆对象进行初始化,将参数.
方法则不初始任何变量。
若需要在圆对象被创建时将圆的数量num增加,可以在构造方法里对num变量进行增加。
(5)程序的入口方法main,在该方法中实例化若干个圆对象,并调用该对象的setRadius()、getRadius()、calcArea()、calcGirth()、getNum()方法来输出该对象的半径、周长、面积属性及圆个数。
2.实现类的继承.
(1)人类是学生类的父类,人类具有姓名,性别,年龄等性质,学生类是人类的子类也具有如上性质,并且学生类还具有学号这一特性。
所以人所具有的共性都封装在人类这一父类中,学生类不但继承了人类的共性还具有自己的特有属性学号。
人类中具有了吃和说的行为,学生也继承了这些行为,并且学生还具有了学习这一行为。
根据以上分析定义两个类People和Student,People类包括成员变量name、sex、age属性,成员方法eat()和speek()。
其中name、sex、age属性的访问控制符定义为protected,protected修饰的成员可以被本包中的类以及其子类继承访问。
eat()、speek()方法的访问控制符定义为public,public修饰的方法其访问权限最大可以被所有类访问。
(2)使用extends关键字实现继承,学生类继承人类共有的属性和方法,此外具有stuNo学号属性和learn()学习方法。
(3)父类People中定义的构造方法负责对name、sex、age变量初始化,子类Student中定义构造方法继承父类构造并对stuNo属性初始化。
在Student类的构造方法的第一句使用super(name,sex,age)语句显式调用父类构造,保证父类构造被调用之后再调用子类构造。
.
(4)编写程序的入口方法main,在该方法中实例化人类对象和学生对象,并调用对象的相应方法输出信息。
3.描述动物世界的特征和关系.
Animal
PandaMouse
eatsleepdig
(1)动物世界的名字和食物是共有的属性,吃和睡觉是共有的行为。
定义Animal类,在该类中定义成员变量name和food,成员方法eat()和sleep()。
根据封装性的要求将name和food属性定义为private私有的,保证该属性只能被在本类内部访问,其他类或派生类要访问该属性可以通过public公有的方法setName()、getName()、setFood()、getFood()进行访问,其中setXXX()方法用于给属性赋值,getXXX()方法用于返回属性。
(2)定义老鼠类Mouse和熊猫类Panda,这两类均继承自Animal类,继承动物类的name和food属性以及eat()和sleep()方法。
Mouse类和Panda类在构造方法中调用setName()和setFood()方法对名称和食物属性初始化。
输出信息。
dig()老鼠类定义打洞方法(3).
(4)定义测试类AnimalTest,编写程序入口main()方法,在该方法中创建老鼠和熊猫对象,调用相应方法输出信息。
4.汽车的属性和行为。
(1)建立汽车类Car,汽车属性:
名字,排量,油耗,时速分别记作成员变量name,pailia,oilconsume,speed.均用private修饰。
定义公共方法点火,熄火,前进,倒退,鸣笛分别为fire(),unfire(),go(),back(),whistle().
(2)创建有参构造函数car(Stringname,intpailia,intoilconsume,intspeed)初始化属性,创建类事例car输出属性和行为。
5.求正方形周长和面积。
(1)建立Square类,定义边长为sl,用private修饰。
创建方法grith()和are()分别求周长和面积。
(2)创建有参构造方法square(intsl),初始化边长,创建圆对象并输出周长和面积。
三、实验代码
publicclassCircle{
privatedoubleradius;
//圆的半径
privatedoublex;
//横坐标
privatedoubley;
//纵坐标
//圆的个数
privatestaticfinaldoublePI=3.14159;
返回半径publicdoublegetRadius(){//
returnradius;
publicvoidsetRadius(doubleradius){//设置半径
this.radius=radius;
计算圆面积publicdoublecalcArea(){//
returnPI*this.radius*this.radius;
计算圆周长publicdoublecalcGrith(){//
return2*PI*this.radius;
publicstaticintgetNum(){//返回圆的个数
returnnum;
}
publicCircle(){//无参数构造方法
num++;
publicCircle(doubleradius,doublex,doubley){//带参数构造方法if(radius<
0){
);
半径不可以为负数!
祓瑳浥漮瑵瀮楲瑮湬尨
else{//初始化圆的属性
this.x=x;
this.y=y;
num++;
publicstaticvoidmain(String[]args){
Circlecircle1=newCircle(10,1,1);
//创建对象圆1
Circlecircle2=newCircle(20,1,1);
//创建对象圆2
Circlecircle3=newCircle(30,1,1);
//创建对象圆3
祓瑳浥漮瑵瀮楲瑮尨圆1的半径:
+circle1.getRadius()+\);
祓瑳浥漮瑵瀮楲瑮尨圆1的面积:
+circle1.calcArea()+\);
祓瑳浥漮瑵瀮楲瑮湬尨圆1的周长:
+circle1.calcGrith());
祓瑳浥漮瑵瀮楲瑮尨圆2的半径:
+circle2.getRadius()+\);
祓瑳浥漮瑵瀮楲瑮尨圆2的面积:
+circle2.calcArea()+\);
祓瑳浥漮瑵瀮楲瑮湬尨圆2的周长:
+circle2.calcGrith());
祓瑳浥漮瑵瀮楲瑮尨圆3的半径:
+circle3.getRadius()+\);
+circle3.calcArea()+\);
的面积:
3圆祓瑳浥漮瑵瀮楲瑮尨
祓瑳浥漮瑵瀮楲瑮湬尨圆3的周长:
+circle3.calcGrith());
祓瑳浥漮瑵瀮楲瑮湬尨圆的个数:
+Circle.getNum());
classPeople{//父类——人
protectedStringname;
//姓名
protectedStringsex;
//性别
protectedintage;
//年龄
protectedStringgetName(){//返回姓名
returnname;
设置姓名protectedvoidsetName(Stringname){//this.name=name;
protectedStringgetSex(){//返回性别returnsex;
protectedvoidsetSex(Stringsex){//设置性别this.sex=sex;
protectedintgetAge(){//返回年龄
returnage;
设置年龄protectedvoidsetAge(intage){//this.age=age;
publicstaticvoideat(){//吃我在吃饭祓瑳浥漮瑵瀮楲瑮尨!
);
publicstaticvoidspeak(){//说话);
祓瑳浥漮瑵瀮楲瑮尨我在说话!
publicPeople(Stringname,Stringsex,intage){//初始化共有属性
this.name=name;
this.sex=sex;
this.age=age;
子类——学生classStudentextendsPeople{//
protectedlongstuNo;
//学号
protectedlonggetStuNo(){//返回学号
returnstuNo;
设置学号protectedvoidsetStuNo(longstuNo){//this.stuNo=stuNo;
publicstaticvoidlearn(){//学习方法);
祓瑳浥漮瑵瀮楲瑮湬尨我的学习方法!
构造方法publicStudent(Stringname,Stringsex,intage,longstuNo){//super(name,sex,age);
this.stuNo=stuNo;
publicclassTestPeople{//测试类
publicstaticvoidmain(String[]args){
瑓摵湥?
瑳摵湥?
?
敮?
张一飞?
男,18,13130001);
祓瑳浥漮瑵瀮楲瑮尨姓名:
+student.getName()+);
+student.getSex()+);
性别:
祓瑳浥漮瑵瀮楲瑮尨
祓瑳浥漮瑵瀮楲瑮尨年龄:
+student.getAge()+);
祓瑳浥漮瑵瀮楲瑮尨学号:
+student.getStuNo()+);
People.eat();
//吃
People.speak();
//说话
Student.learn();
//学习方法
classAnimal{//动物类
privateStringname;
//名字
privateStringfood;
//食物
publicStringgetName(){//返回名字
publicvoidsetName(Stringname){//设置名字this.name=name;
publicStringgetFood(){//返回食物returnfood;
设置食物publicvoidsetFood(Stringfood){//
this.food=food;
publicstaticvoidEat(){//吃
祓瑳浥漮瑵瀮楲瑮尨我在吃饭);
publicstaticvoidSleep(){//睡觉
祓瑳浥漮瑵瀮楲瑮尨我在睡觉
publicAnimal(Stringname,Stringfood){//构造方法this.name=name;
this.food=food;
classMouseextendsAnimal{//老鼠类
publicMouse(Stringname,Stringfood){//构造方法
super(name,food);
publicstaticvoiddig(){//打洞);
我在打洞祓瑳浥漮瑵瀮楲瑮湬尨}
classPandaextendsAnimal{//熊猫类
publicPanda(Stringname,Stringfood){//构造方法
测试类publicclassAnimalTest{//
publicstaticvoidmain(Stringargs[]){
实例化熊猫慐摮?
慰摮?
慐摮?
熊猫?
竹叶);
//+panda.getName()+\);
祓瑳浥漮瑵瀮楲瑮尨名字:
+panda.getFood()+\);
祓瑳浥漮瑵瀮楲瑮湬尨食物:
Panda.Eat();
//吃
睡觉Panda.Sleep();
//System.out.println();
大米);
//实例化老鼠潍獵?
潭獵?
潍獵?
老鼠?
+mouse.getName()+\);
名字:
祓瑳浥漮瑵瀮楲瑮尨+mouse.getFood()+\);
祓瑳浥漮瑵瀮楲瑮尨食物:
吃Mouse.Eat();
//Mouse.Sleep();
//睡觉打洞Mouse.dig();
//
4.汽车的基本属性和行为.
publicclassCar{//汽车类
//定义名字
privateintpailia;
//定义排量
privateintoilconsume;
//定义油耗
privateintspeed;
//定义时速
publicStringgetName(){//返回名字
设置名字publicvoidsetName(Stringname){//
this.name=name;
返回排量publicintgetPailia(){//returnpailia;
publicvoidsetPailia(intpailia){//设置排量this.pailia=pailia;
返回油耗publicintgetOilconsume(){//
returnoilconsume;
publicvoidsetOilconsume(intoilconsume){//设置油耗
this.oilconsume=oilconsume;
publicintgetSpeed(){//返回时速returnspeed;
设置时速publicvoidsetSpeed(intspeed){//this.speed=speed;
publicstaticvoidfire(){//点火
点火!
祓瑳浥漮瑵瀮楲瑮尨}
publicstaticvoidoutfire(){//熄火);
熄火!
publicstaticvoidgo(){//前进);
前进!
publicstaticvoidback(){//倒退
倒退!
publicstaticvoidwhistle(){//鸣笛
鸣笛!
祓瑳浥漮瑵瀮楲瑮尨}
publicCar(Stringname,intpailia,intoilconsume,intspeed){//构造方法
=name;
this.name
this.pailia=pailia;
this.oilconsume=oilconsume;
this.speed=speed;
Publicstaticvoidmain(Stringargs[]){
宝马慃?
慣?
慃?
100,50,100);
//实例化一个汽车);
汽车的属性:
System.out.println();
+car.getName()+\);
汽车品牌:
祓瑳浥漮瑵瀮楲瑮尨+car.getPailia()+ml+\);
祓瑳浥漮瑵瀮楲瑮尨排量:
+car.getOilconsume()+ml/h+\);
油耗:
祓瑳浥漮瑵瀮楲瑮尨
+car.getSpeed()+km/h);
祓瑳浥漮瑵瀮楲瑮湬尨时速:
祓瑳浥漮瑵瀮楲瑮湬尨汽车的行为:
Car.fire();
//点火
Car.outfire();
//熄火
Car.go();
//前进
Car.back();
//倒退
Car.whistle();
//鸣笛
5.求正方形的周长和面积.
classSqure{//定义正方形类
privateintsl;
//定义边长
publicintgetSl(){//返回边长
returnsl;
设置边长publicvoidsetSl(intsl){//this.sl=sl;
publicintgrith(){//求周长
return4*this.sl;
publicintarea(){//求面积returnthis.sl*this.sl;
publicSqure(intsl){//构造方法
this.sl=sl;
publicclassTest{//测试类
publicstaticvoidmain(Stringargs[]){
Squres=newSqure(5);
+s.grith()+\);
:
敧却?
屜瑜?
周长:
方祓瑳浥漮瑵瀮楲瑮尨正形边长:
+s.area());
面积祓瑳浥漮瑵瀮楲瑮湬尨}
四、实验过程原始记录(数据、图表、计算等)注:
此次报告没有相关数据,实验过程详见第二部分实验原理。
五、实验结果及分析,以及心得体会Circle.
定义圆类1.
心得体会:
主要是构建3个对象,操作过程中,老是出现3个圆对象结果相同的情况,反复上机测试才发现是成员变量中的radius,应该用this.radius才能获取到。