资源描述
实验项目编号实验项目名称 Java语言面向对象基础编程实验学时实验日期成绩实验地点指导老师实验四 Java语言面向对象基础编程一、实验目的1.理解Java语言是如何体现面向对象编程基本思想,2.了解类的封装方法,以及如何创建类和对象,3.了解成员变量和成员方法的特性。二、实验内容1.类的定义、封装和对象创建的使用。编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:(1)Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。(2)Lader类具有类型double的上底、下底、高、面积属性,具有求面积的功能。(3)Circle类具有类型为double的半径、周长和面积属性,具有求周长、面积的功能。package exercise;class Trangledouble sideA,sideB,sideC,area,length;boolean boo;/带三个参数的构造函数public Trangle(double a,double b,double c) sideA=a;/参数a,b,c 分别赋值给sideA,sideB,sideCsideB=b;sideC=c;if(sideA+sideBsideC & sideA+sideCsideB & sideB+sideCsideA) /a,b,c 构成三角形的条件表达式boo=true;/给boo 赋值。elseboo=false;/给boo 赋值。double getLength()return sideA+sideB+sideC;/方法体,要求计算出length 的值并返回/计算三角形的面积public double getArea()if(boo)double p=(sideA+sideB+sideC)/2.0;area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC);return area;elseSystem.out.println(不是一个三角形,不能计算面积);return 0;public void setABC(double a,double b,double c)sideA=a;/参数a,b,c 分别赋值给sideA,sideB,sideCsideB=b;sideC=c;if(sideA+sideBsideC & sideA+sideCsideB & sideB+sideCsideA)/a,b,c 构成三角形的条件表达式boo=true;/给boo 赋值。 else boo=false;/给boo 赋值。/定义一个梯形类class Laderdouble above,bottom,height,area;Lader(double a,double b,double h)above=a;/方法体,将参数a,b,c 分别赋值给above,bottom,heightbottom=b;height=h;double getArea()return (above+bottom)*height/2.0;/方法体,,要求计算出area 返回/定义一个圆类class Circle double radius,area;Circle(double r)radius=r;/方法体double getArea() return Math.PI*Math.pow(radius, 2);/方法体,要求计算出area 返回double getLength()return 2*Math.PI*radius;/getArea 方法体的代码,要求计算出length 返回void setRadius(double newRadius) radius=newRadius;double getRadius() return radius;public class shiyan4_1public static void main(String args)double length,area;Circle circle=null;Trangle trangle;Lader lader; circle=new Circle(3);/创建对象circle trangle=new Trangle(6,5,2);/创建对象trangle。 lader=new Lader(8,9,6);/创建对象laderlength=circle.getLength();/ circle 调用方法返回周长并赋值给lengthSystem.out.println(圆的周长:+length);area=circle.getArea();/ circle 调用方法返回面积并赋值给areaSystem.out.println(圆的面积:+area);length=trangle.getLength();/ trangle 调用方法返回周长并赋值给lengthSystem.out.println(三角形的周长:+length);area=trangle.getArea();/ trangle 调用方法返回面积并赋值给areaSystem.out.println(三角形的面积:+area);area=lader.getArea();/ lader 调用方法返回面积并赋值给areaSystem.out.println(梯形的面积:+area);trangle=new Trangle(12,34,1);/ trangle 调用方法设置三个边,要求将三个边修改为12,34,1。area=trangle.getArea();/ trangle 调用方法返回面积并赋值给areaSystem.out.println(三角形的面积:+area);length=trangle.getLength();/ trangle 调用方法返回周长并赋值给lengthSystem.out.println(三角形的周长:+length);2实例成员与类成员的使用。按程序模板的要求编写源文件,要特别注意程序的输出结果,并能正确解释输出的结果。package exercise;class Afloat a;static float b;void setA(float A)a = A;void setB(float B)b = B;float getA()return a;float getB()return b;void outputA()System.out.println(a);static void outputB()System.out.println(b);public class shiyan4_2 SuppressWarnings(static-access)public static void main(String args) / TODO Auto-generated method stubA.b = 100;A.outputB();A cat = new A();A dog = new A();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 的乘方值。package exercise;public class shiyan4_3 public static void main(String args) / TODO Auto-generated method stubint x = 10, y = 10;swap(x, y);System.out.println(x = + x + , y = + y);static void swap(int passX, int passY)passX = passX * passX;passY = passY * passY;System.out.println(passX = + passX + , passY = + passY);(2)编写一个调用对象方法的程序文件SY3_4.java。package exercise;public class shiyan4_4 public static void main(String args) / TODO Auto-generated method stubPower p = new Power();p.swap(p.x, p.y);System.out.println(方法调用后 x = + p.x + , y = + p.y);class Powerint x = 10, y = 10;void swap(int passX, int passY)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类。package exercise;class MyRectangleprivate int xUp, yUp;private int xDown, yDown;public MyRectangle()xUp = yUp = xDown = yDown = 0;public MyRectangle(int xu, int yu, int xd, int yd)xUp = xu;yUp = yu;xDown = xd;yDown = yd;public int getW()return Math.abs(xUp - xDown);public int getH()return Math.abs(yUp - yDown);public int area()return this.getW() * this.getH();public String toString()String tempStr = width = + this.getW() + height = + this.getH() + area = + this.area();return tempStr;public class shiyan4_5public static void main(String args) / TODO Auto-generated method stubMyRectangle tempRec1 = new MyRectangle();MyRectangle tempRec2 = new MyRectangle(-1, 5, 4, 7);System.out.println(This first rectangle information + tempRec1.toString();System.out.println(This second rectangle information + 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(),返回表示扑克牌的花色和牌面值字符串(如“Ace ofHearts”、“Ten of Clubs”等)。package exercise;class Cardprivate String face;private String suit;public Card(String f, String s)face = f;suit = s;protected String getFace()return face;protected String getSuit()return suit;public String toString()return face + of + suit;public class shiyan4_6public static void main(String args) / TODO Auto-generated method stubCard card1 = new Card(Ace, Hearts);Card card2 = new Card(Ten, Clubs);System.out.println(card1.toString();System.out.println(card2.toString();6设计一个Worker 类,其成员变量有:身份证号、姓名、性别、年龄、入职时间、工资/月、奖金/月、加班费/月、电话费/月、生活费/月、交通费/月、房租/月;用构造方法进行初始化;其他成员方法:输出工人信息的方法(包括输出净收入),当某个信息没有被赋值(初始化)时,输出信息为“未知”;计算总收入的方法,总收入中要考虑扣除国家现行的个人所得税法规定的税金;计算总支出的方法。package exercise;class Workerprivate String number;private String name;private String sex;private int age;private String entry;private double salary;private double bonus;private double overtimeMoney;private double phoneMoney;private double liveMoney;private double trafficMoney;private double rent;public Worker()number = name = sex = entry = ;age = 0; salary = bonus = overtimeMoney = phoneMoney = liveMoney = trafficMoney = rent = 0;public Worker(String num, String nam, String se,int ag, String ent, double sal, double bon,double ove, double pho, double liv, double tra, double ren)number = num;name = nam;sex = se;age = ag;entry = ent;salary = sal;bonus = bon;overtimeMoney = ove;phoneMoney = pho;liveMoney = liv;trafficMoney = tra;rent = ren;public void showInfo()if(number.equals()System.out.println();elseSystem.out.println(number + member infomation list :);System.out.println(name);System.out.println(sex);System.out.println(age);System.out.println(entry);double money = salary + bonus + overtimeMoney - phoneMoney - liveMoney - trafficMoney - rent;System.out.println(money);public class shiyan4_7 public static void main(String args) Worker worker1 = new Worker();Worker worker2 = new Worker(0715646, leafspace, women, 22, 20160901, 5000, 500, 1200, 50, 800, 150, 1500);worker1.showInfo();worker2.showInfo();7设计一个汽车Car类,其成员变量有:商标、型号、系列、箱式(三厢、两厢)、颜色、出厂日期、门数、排量、价格、可优惠价、百公里耗油量、最高时速、最大功率、最大扭矩、加速时间、刹车距离;用构造方法进行初始化;其他成员方法:输出汽车信息的方法,当某个信息没有被赋值(初始化)时,输出信息为“未知”;计算行驶一定距离总耗油量,以及给定油价计算燃油费用的方法。package exercise;class Carprivate String logo;private String model;private String series;private String boxN;private String color;private String outDate;private int doorN;private long outN;private double price;private double sellprice;private double oil;private int speed;private double maxpower;private double maxspace;private double time;private double tspace;public Car(String log, String mod, String ser, String box, String col, String outd,int doorn, long outn, double pri, double sell, double oi, int spe, double maxpo, double maxsp, double tim, double tsp)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;public void showInfo()System.out.println(logo);System.out.println(model);System.out.println(series);System.out.println(boxN);System.out.println(color);System.out.println(outDate);System.out.println(doorN);System.out.println(outN);System.out.println(price);System.out.println(sellprice);System.out.println(oil);System.out.println(speed);System.out.println(maxpower);System.out.println(maxspace);System.out.println(time);System.out.println(tspace);public double outoil(int length)return oil / 100 * length;public double selmoney(int length)return 80 * outoil(length);public class shiyan4_8 public static void main(String args) / TODO Auto-generated method stubCar car = new Car(abc, abcd, asfag, asdg, sadh, sdaf,10, 4665, 165, 1561, 165, 1651, 64, 4894, 894, 151);car.showInfo();三、实验心得通过本次试验,我理解了Java语言是如何体现面向对象编程基本思想及类的封装方法,以及如何创建类和对象。
展开阅读全文