JAVA实验4面向对象基础

上传人:痛*** 文档编号:65734820 上传时间:2022-03-25 格式:DOC 页数:14 大小:652KB
收藏 版权申诉 举报 下载
JAVA实验4面向对象基础_第1页
第1页 / 共14页
JAVA实验4面向对象基础_第2页
第2页 / 共14页
JAVA实验4面向对象基础_第3页
第3页 / 共14页
资源描述:

《JAVA实验4面向对象基础》由会员分享,可在线阅读,更多相关《JAVA实验4面向对象基础(14页珍藏版)》请在装配图网上搜索。

1、JAVA 实验报告姓 名 学 号专业班级课程名称 Java实验实验日期成 绩指导教师批改日期实验名称实验 4 面向对象基础一实验目的:(1)掌握类的定义、类的实例化方法;(2)掌握类中的静态变量和静态方法的使用;(3)掌握使用类的构造方法对对象的数据域进行初始化;(4)掌握getter和setter的使用;二实验内容(1)现在要求设计一个表示学生的类,里面有学生的姓名、学号、年龄,还要有三项成绩:计算机成绩、数学成绩、英语成绩,要求可以求总分、平均分、最高、最低分,并且可以输出一个学生的完整信息,请设计此类。提示:程序开发步骤根据需求定义出所要的类;根据题目中的要求规划出类的属性;所有的属性必

2、须封装:private;所有的属性必须通过getter和setter访问;如果需要增加构造方法,为属性赋初值,适当采用构造方法重载;所有的信息不要类中直接输出,而是交给调用处输出,即在该类中尽量不出现System.out.println()语句。例如在调用类中输出如下结果:总分:267.70000000000005平均分:89.23333333333335最高分:91.4最低分:87.3学生信息:|-学号:100|-姓名:John|-年龄:20|-英语:89.0|-计算机:87.3|-数学:91.4程序代码:package ggg;import java.util.*;import org.o

3、mg.CORBA.portable.ValueOutputStream;public class LX4_1 public static void main(String args) Student student1=new Student();Scanner input=new Scanner(System.in);System.out.println(请输入学生姓名:);student1.setName(input.next();System.out.println(请输入学号:);student1.setStudentNumber(input.nextInt();System.out.p

4、rintln(请输入年龄:);student1.setAge(input.nextInt();System.out.println(请输入英语成绩:);student1.setEnglishGrade(input.nextDouble();System.out.println(请输入电脑成绩:);student1.setComputerGrade(input.nextDouble();System.out.println(请输入数学成绩:);student1.setMathGrade(input.nextDouble();printInformations(student1);public s

5、tatic void printInformations(Student s1)System.out.printf(总分:%3.2f n,Double.parseDouble(String.valueOf(s1.sumGrade();System.out.printf(平均分:%3.2fn,Double.parseDouble(String.valueOf(s1.avgGrade();System.out.println(最高分:+Double.parseDouble(String.valueOf(s1.maxGrade();System.out.println(最低分:+Double.par

6、seDouble(String.valueOf(s1.minGrade();System.out.println(学生信息:);System.out.println( |-学号:+s1.getStudentNumber();System.out.println( |-姓名+s1.getName();System.out.println( |-年龄+s1.getAge();System.out.println( |-英语成绩:+s1.getEnglishGrade();System.out.println( |-电脑成绩:+s1.getComputerGrade();System.out.pri

7、ntln( |-数学成绩:+s1.getMathGrade();class Studentprivate int studentNumber;private String name;private int age;private double englishGrade;private double computerGrade;private double mathGrade;void setStudentNumber(int number)studentNumber=number;int getStudentNumber()return studentNumber;void setName(S

8、tring nm)name=nm;String getName()return name;void setAge(int age1)age=age1;int getAge()return age;void setEnglishGrade(double grade)englishGrade=grade;double getEnglishGrade()return englishGrade;void setComputerGrade(double grade)computerGrade=grade;double getComputerGrade()return computerGrade;void

9、 setMathGrade(double grade)mathGrade=grade;double getMathGrade()return mathGrade;double maxGrade()double max;max=englishGrade;if(maxcomputerGrade)max=computerGrade;if(maxcomputerGrade)min=computerGrade;if(minmathGrade)min=mathGrade;return min;double sumGrade()double sum;sum=englishGrade+computerGrad

10、e+mathGrade;return sum;double avgGrade()double ave;ave=(sumGrade()/3;return ave;运行结果贴图:(二)1、设计类来描述真实客观世界中的事物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改程序功能:设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。程序源代码如下,补全横线上的程序代码。package ggg;public class Car private String

11、ownerName; /车主姓名 private float curSpeed; /当前车速 private float curDirInDegree; /当前方向盘转向角度 public Car (String ownerName) this.ownerName = ownerName; public Car (String ownerName, float speed, float dirInDegree) this(ownerName);/调用上面那个构造函数为ownerName赋值 curSpeed = speed; curDirInDegree = dirInDegree; publ

12、ic String getOwnerName() /提供对车主姓名的访问 return ownerName; public float getCurDirInDegree() /提供对当前方向盘转向角度的访问 return curDirInDegree; public float getCurSpeed() /提供对当前车速的访问 return curSpeed; public void changeSpeed(float curSpeed) /提供改变当前的车速 this.curSpeed = curSpeed; public void stop() /提供停车 this.curSpeed

13、= 0; 编写一个主方法,编译并测试源程序。package ggg;import java.util.*;public class LX4_2 public static void main(String args) Scanner input=new Scanner(System.in);System.out.println(请输入车主姓名、车速和方向盘角度:);Car car1=new Car(input.next(),input.nextFloat(),input.nextFloat();/ TODO 自动生成的方法存根 System.out.println(车主姓名:+car1.get

14、OwnerName(); System.out.println(当前车速:+car1.getCurSpeed(); System.out.println(当前方向盘角度:+car1.getCurDirInDegree(); System.out.println(修改车速:); System.out.println(请输入新的车速:); car1.changeSpeed(input.nextFloat(); System.out.println(当前车速:+car1.getCurSpeed(); System.out.println(停车:); car1.stop(); System.out.p

15、rintln(当前车速:+car1.getCurSpeed();2、创建类的对象,使用对象的方法(类的非静态方法)来访问或修改对象的变量(类的非静态变量)创建类Car的对象,在调用类的构造函数时指定对象的变量的初始值,以后再使用对象的方法来访问或修改对象的变量的值。程序代码如下(需要添加代码,要求运行结果如下图所示。public class Car public static void main(String args)Car car = new Car(成龙, 200f, 25f);System.out.println(车主姓名: + car.getOwnerName();System.ou

16、t.println(当前车速: + car.getCurSpeed();System.out.println(当前方向盘角度: + car.getCurDirInDegree();System.out.printf(在调用changeSpeed(80)后,车速变为:);car.changeSpeed(80);System.out.println(car.getCurSpeed();System.out.printf(在调用stop()后, 车速变为: );car.stop();System.out.println(car.getCurSpeed(); 编译并运行,结果如图所示。车主姓名: 成龙

17、当前车速: 200.0当前转向角度: 25.0在调用changeSpeed(80)后,车速变为: 80.0在调用stop()后, 车速变为: 0.0(三)(账户类Account)设计一个名为Account的类,它包括: 一个名为id的int类型私有账户数据域(默认值为0)。 一个名为balance的double类型私有账户数据域(默认值为0)。 一个名为annualInterestRate的double类型私有数据域存储当前利率(默认值为0)。假设所有的账户都有相同的利率。 一个名为dateCreated的Date类型私有数据域存储账户的开户日期。 一个能创建默认账户的无参构造方法。 一个能创

18、建带特定id和初始余额的账户的构造方法。 id、balance和annualInterestRate的访问器和修改器。 dateCreated的访问器。 一个名为getMonthlyInterestRate()的方法返回月利率。 一个名为withDraw的方法从账户提取特定数额。 一个名为deposit的方法向账户存储特定数额。实现这个类。编写一个测试程序,创建一个账户ID为1122、余额为20000美元、年利率为4.5%的Account对象。使用withdraw方法取款2500美元,使用deposit方法存款3000美元,然后打印余额、月利息以及这个账户的开户日期。程序代码:package

19、ggg;import java.util.*;public class LX4_4 public static void main(String args) Account account = new Account(1122,20000);account.setAnnualInterestRate(4.5);account.withDraw(2500);account.desposit(3000);System.out.println(余额为: + account.getBalance();System.out.println(月利率为: + account.getMonthlyIntere

20、stRate()*100 + %);System.out.println(开户日期为: + account.geteDateCreat();package ggg;import java.util.*;public class Account private int id;private double balance;private double annualInterestRate;private Date dateCreated;Account()id = id + 1;this.balance = 0;dateCreated = new Date();Account(int id ,do

21、uble balance)this.id = id;this.balance = balance;dateCreated = new Date(); public int getid()return id;public void setid(int id)this.id = id;public double getBalance()return balance;public void setBalance(double balance)this.balance = balance;public double getAnnualInterestRate()return annualInteres

22、tRate;public void setAnnualInterestRate(double an)annualInterestRate = an / 100;public Date geteDateCreat()return dateCreated;public double getMonthlyInterestRate() return annualInterestRate / 12;public void withDraw(double draw) this.setBalance(this.getBalance() - draw);public void desposit(double

23、dep) this.setBalance(this.getBalance() + dep);运行结果贴图:(三)(风扇类Fan)设计一个名为Fan的类来表示一个风扇。这个类包括:l 三个名为SLOW、MEDIUM、FAST而值是1、2和3的常量表示风扇的速度。l 一个名为speed的int类型私有数据域表示风扇的速度(默认值为SLOW)。l 一个名为on的boolean类型的私有数据域表示风扇是否打开(默认值为false)。l 一个名为radius的double类型的私有数据域表示风扇的半径(默认值为5)。l 一个名为color的String类型的数据域表示风扇的颜色(默认值为blue)。l

24、这四个数据域的访问器和修改器。l 一个创建默认风扇的无参构造方法。l 一个名为toString()的方法返回描述风扇的字符串。如果风扇是打开的,那么该方法在一个组合的字符串中返回风扇的速度、颜色和半径。如果风扇没有打开,该方法就返回一个由“fan is off”和风扇颜色及半径组合成的字符串。 实现这个类。编写一个测试程序,创建两个fan对象。将第一个对象设置为最大速度、半径为10、颜色为yellow、状态为打开。将第二个对象设置为中等速度、半径为5、颜色为blue、状态为关闭。通过调用它们的toString方法显示这些对象。程序代码:package ggg;public class LX4_

25、5 private static final int FAST = 0;private static final int MEDIUM = 0;public static void main(String args) Fan fan1 = new Fan();fan1.setSpeed(FAST);fan1.setColors(yellow);fan1.setRadius(10);fan1.setOn(true);Fan fan2 = new Fan();fan2.setSpeed(MEDIUM);fan2.setRadius(5);fan2.setColors(blue);fan2.setO

26、n(false);System.out.println(fan1.toString();System.out.println(fan2.toString();package ggg;public class Fan final static int SLOW = 1,MEDIUM = 2, FAST = 3;private int speed = SLOW;private boolean on;private double radius = 5;public String color = blue;public int getSpeed()return speed;public void se

27、tSpeed(int speed)this.speed = speed;public boolean getOn()return on;public void setOn(boolean on)this.on = on;public double getRadius()return radius;public void setRadius(double radius)this.radius = radius;public String getColors()return color;public void setColors(String color)this.color = color;Fa

28、n() public String toString() if (this.getOn() = false) return fan is off; else return 风扇转速为: + this.getSpeed() + 风扇半径为: + this.getRadius() + 风扇颜色为: + this.getColors(); 运行结果贴图:(四)(几何方面:正n边形)在一个正n边形中,所有边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的)。设计一个名为RegularPolygon的类,该类包括:l 一个名为n的int型私有数据域定义多边形的边数,默认值为3。l 一个名为s

29、ide的double型私有数据域存储边的长度,默认值为1。l 一个名为x的double型私有数据域,它定义多边形中点的x坐标,默认值为0。l 一个名为y的double型私有数据域,它定义多边形中点的y坐标,默认值为0。l 一个创建带默认值的正多边形的无参构造方法。l 一个能创建带指定边数和边长度、中心在(0,0)的正多边形的构造方法。l 一个能创建带指定边数和边长度、中心在(x,y)的正多边形的构造方法。l 所有数据域的访问器和修改器。l 一个返回多边形周长的方法getPerimeter()。l 一个返回多边形面积的方法getArea()。计算正多边形面积的公式是:面积= 实现这个类。编写一个

30、测试程序,分别使用无参构造方法、RegularPolygon(6,4)和RegularPolygon(10,4,5.6,7.8)创建三个RegularPolygon对象。显示每个对象的周长和面积。程序代码:package ggg;public class LX4_6 public static void main(String args) RegularPolygon ro1 = new RegularPolygon();RegularPolygon ro2 = new RegularPolygon(6, 4);RegularPolygon ro3 = new RegularPolygon(1

31、0, 3, 5.6, 7.8);print(ro1);print(ro2);print(ro3);public static void print(RegularPolygon c) System.out.println(正 + c.getN() + 边形的周长为: + c.getPerimeter();System.out.println(正 + c.getN() + 边形的面积为: + c.getArea();package ggg;public class RegularPolygon private int n = 3;private double side = 1;/ 边长默认为pr

32、ivate double x = 0;/ 中点坐标private double y = 0;RegularPolygon() RegularPolygon(int n, double side) this.n = n;this.side = side;this.x = 0;this.y = 0;RegularPolygon(int n, double side, double x, double y) this.n = n;this.side = side;this.x = x;this.y = y;public int getN() return n;public void setN(int

33、 n1) n = n1;public double getSide() return side;public void setSide(double side1) side = side1;public double getX() return x;public void setX(double x1) x = x1;public double getY() return y;public void setY(double y1) y = y1;public double getPerimeter() / 周长return n * side;public double getArea() do

34、uble s;double t;t = 4 * Math.tan(Math.PI / n);s = n * side * side / t;return s;运行结果贴图:(五)(代数方面:二次方程)为二次方程式设计一个名为QuadraticEquation的类。这个类包括:l 代表参数为a、b和c。l 一个参数为a、b和c的构造方法。l A、b、c的三个get方法。l 一个名为getDiscriminant()的方法返回判别式,。l 一个名为getRoot1()和getRoot2()的返回等式的两个根: and 这些方法只有在判别式为非负数时才有用。如果判别式为负,这些方法返回0。实现这个类

35、。编写一个测试程序,提供用户输入a、b和c的值,然后显示判别式的结果。如果判别式为正数,显示两个根;如果判别式为0,显示一个根;否则显示“The equation has no roots.”(这个方程无根)。程序代码:package ggg;import java.util.*;public class LX4_7 public static void main(String args) System.out.println(请输入a,b,c:);Scanner input = new Scanner(System.in);QuadraticEquation quadratic1 = new

36、 QuadraticEquation(input.nextDouble(), input.nextDouble(), input.nextDouble();print(quadratic1);public static void print(QuadraticEquation a1) if (a1.getDiscriminant() = 0) double a1;a1 = Math.sqrt(getDiscriminant();return (-b + a1) / 2 * a); elsereturn 0;public double getRoot2() if (getDiscriminant() = 0) double a1;a1 = Math.sqrt(getDiscriminant();return (-b - a1) / 2 * a); elsereturn 0;运行结果贴图:课后作业题P233 8.1 8.2 8.5 8.20 P238 8.5

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!