一、实验目的
本次实验的主要目的是练习在程序中定义类的方法和对象的方法,并掌握应
用对象调用成员完成所需功能的方法,并掌握包和嵌套类的应用。
二、实验要求
1.
认真阅读实验内容,完成实验内容所设的题目。
2.
能够应用多种编辑环境编写
Java
语言源程序。
3.
认真体会类与对象的概念。
4.
将实验结果书写在实验报告中。
三、实验内容
1
.
运行下列程序,观察程序的运行结果
A.程序一
package org.example; public class Main { private String ownerName; private float curSpeed; private float curDirInDegree; public Main(String ownerName) { this.ownerName=ownerName; } public Main(String ownerName, float speed, float dirInDegree) { this(ownerName); this.curSpeed=speed; this.curDirInDegree=dirInDegree; } public 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=0; } public static void main(String[] args) { Main car=new Main("成龙",200f,25f); System.out.println("车主姓名: "+car.getOwnerName()); System.out.println("当前车速: "+car.getCurSpeed()); System.out.println("当前转向角度: "+car.getCurDirInDegree()); car.changeSpeed(80); System.out.println("在调用changeSpeed(80)后,车速变为"+car.getCurSpeed()); car.stop(); System.out.println("在调用stop()后, 车速变为: "+car.getCurSpeed()); } }
B.程序二
package org.example; import java.util.Calendar; class Time { private Calendar t; private int y, m, d, hh, mm, ss; Time () { t=Calendar.getInstance(); y=t.get(t.YEAR); m=t.get(t.MONTH)+1; d=t.get(t.DATE); hh=t.get(t.HOUR_OF_DAY); mm=t.get(t.MINUTE); ss=t.get(t.SECOND); } public String getDate() { return y+" 年"+m+"月"+d+"日"; } public String getTime() { return hh+" 时"+mm+"分"+ss+"秒"; } } public class Main { public static void main(String[] args) { Time t=new Time(); System.out.println("当前日期:"+t.getDate()); System.out.println("当前时间:"+t.getTime()); } }
C.程序三
package org.example; public class Main { public static void main(String[] args) { Test_static.showstatic(); Test_static test_ob1 = new Test_static(); System.out.println(test_ob1.static_a); test_ob1.show(); Test_static test_ob2 = new Test_static(); System.out.println(test_ob1.static_a); test_ob1.show(); System.out.println(Test_static.static_a); Test_static.showstatic(); Test_static.shownostatic(test_ob2); Test_static.showstatic(); } } class Test_static { int no_static_a; static int static_a=0; public Test_static() { static_a++; no_static_a=3; } public static void showstatic() { System.out.println(static_a); } public static void shownostatic(Test_static a) { System.out.println(a.no_static_a); } public void show() { System.out.println(no_static_a); } }
D.程序四
package org.example; public class Main { public static void main(String[] args) { int x[] = {3, 2, 1, 5, 6, 9, 7, 8}; Outer outOb=new Outer(x); outOb.Analyze(); } } class Outer { int nums[]; Outer(int n[]) { nums=n; } void Analyze() { Inner inOb=new Inner(); System.out.println("Minimum: "+inOb.min()); System.out.println("Maxmum: "+inOb.max()); System.out.println("Average: "+inOb.avg()); } class Inner { int min() { int m = nums[0]; for (int i = 1; i < nums.length; i++) if (nums[i] < m) m = nums[i]; return m; } int max() { int m=nums[0]; for(int i=1;i<nums.length;i++) if(nums[i]>m)m=nums[i]; return m; } int avg() { int a=0; for(int i=1;i<nums.length;i++) a+=nums[i]; return a/nums.length; } } }
2.编写程序完成下列功能
(1) 定义一个类,由构造方法初始化一个值作为一个正方形的边长,该类计
算出正方形的面积,并输出到屏幕上。
package org.example; public class Main { private double sideLength; public Main(double sideLength) { this.sideLength = sideLength; } public double calculateArea() { return sideLength * sideLength; } public void displayArea() { System.out.println("正方形的面积为: " + calculateArea()); } public static void main(String[] args) { Main square = new Main(5); square.displayArea(); } }
(2) 编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,
再定义一个方法setDemo对这三个变量进行初始化,然后定义一个方法求立方体
的体积。创建一个对象,求给定尺寸的立方体的体积。
package org.example; public class Main { private double length; private double width; private double height; public void setDemo(double length, double width, double height) { this.length = length; this.width = width; this.height = height; } public double calculateVolume() { return length * width * height; } public static void main(String[] args) { Main cube = new Main(); cube.setDemo(3, 4, 5); double volume = cube.calculateVolume(); System.out.println("立方体的体积为: " + volume); } }
(3) 编写两个类:A和B,A创建的对象可计算两个正整数的最大公约数,B
创建的对象可以计算两个数的最小公倍数。要求B类中有一个成员变量用A类声
明的对象。
package org.example; public class B { private A aObject; public B(A aObject) { this.aObject = aObject; } public int calculateLCM(int a, int b) { int gcd = aObject.calculateGCD(a, b); return (a * b) / gcd; } public static void main(String[] args) { A a = new A(); B b = new B(a); int num1 = 12; int num2 = 18; int gcd = a.calculateGCD(num1, num2); int lcm = b.calculateLCM(num1, num2); System.out.println("最大公约数 " + num1 + " 和 " + num2 + " 是: " + gcd); System.out.println("最小公倍数 " + num1 + " 和 " + num2 + " 是: " + lcm); } }
(4) 编写一个圆类Circle,该类拥有一个私有的成员变量radius,一个无参的构
造方法,一个有参的构造方法,三个成员方法,分别用于计算圆面积、圆周长和
输出圆半径、面积和周长,并定义主方法,输出半径为12.5的圆的周长和面积。
package org.example; //Circle类定义 public class Circle { private double radius; // 无参构造方法 public Circle() { this.radius = 0; // 可以设置默认值 } // 有参构造方法 public Circle(double radius) { this.radius = radius; } // 计算圆面积 public double calculateArea() { return Math.PI * radius * radius; } // 计算圆周长 public double calculatePerimeter() { return 2 * Math.PI * radius; } // 输出圆半径、面积和周长 public void displayInformation() { System.out.println("圆半径:" + radius); System.out.println("圆面积:" + calculateArea()); System.out.println("圆周长:" + calculatePerimeter()); } }
package org.example; //主方法 public class Main { public static void main(String[] args) { // 创建半径为12.5的圆对象 Circle circle = new Circle(12.5); // 输出圆的周长和面积 circle.displayInformation(); } }
(5) 定义一个表示学生信息的类Student,要求如下:
⚫ 类Student的成员变量:
sNO 表示学号;sName表示姓名;
sSex表示性别;sAge表示年龄;
sJava:表示Java课程成绩。
⚫ 类Student带参数的构造方法:
在构造方法中通过形参完成对成员变量的赋值操作。
⚫ 类Student的方法成员:
getNo():获得学号;
getName():获得姓名;
getSex():获得性别;
getAge()获得年龄;
getJava():获得Java 课程成绩;
⚫ 根据类Student的定义,创建五个该类的对象,输出每个学生的信息,
计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java
语言成绩的最大值和最小值。
package org.example; public class Main { public static void main(String[] args) { Student student1 = new Student("001", "小符", "男", 20, 91); Student student2 = new Student("002", "老罗", "男", 21, 89); Student student3 = new Student("003", "小羽", "女", 22, 92); Student student4 = new Student("004", "郭子", "男", 20, 88); Student student5 = new Student("005", "老吴", "男", 19, 91); System.out.println("学生学号1: " + student1.getNo() + " 姓名 " + student1.getName() + " 性别 " + student1.getSex() + " 年龄 " + student1.getAge() + " 成绩 " + student1.getJava()); System.out.println("学生学号2:" + student2.getNo() + " 姓名 " + student2.getName() + " 性别 " + student2.getSex() + " 年龄 " + student2.getAge() + " 成绩 " + student2.getJava()); System.out.println("学生学号3:" + student3.getNo() + " 姓名 " + student3.getName() + " 性别 " + student3.getSex() + " 年龄 " + student3.getAge() + " 成绩 " + student3.getJava()); System.out.println("学生学号4:" + student4.getNo() + " 姓名 " + student4.getName() + " 性别 " + student4.getSex() + " 年龄 " + student4.getAge() + " 成绩 " + student4.getJava()); System.out.println("学生学号5:" + student5.getNo() + " 姓名 " + student5.getName() + " 性别 " + student5.getSex() + " 年龄 " + student5.getAge() + " 成绩 " + student5.getJava()); // 计算平均值 double averageJava = (student1.getJava() + student2.getJava() + student3.getJava() + student4.getJava() + student5.getJava()) / 5.0; System.out.println("Java语言成绩平均值:" + averageJava); // 计算最大值 int maxJava = Math.max(Math.max(Math.max(Math.max(student1.getJava(), student2.getJava()), student3.getJava()), student4.getJava()), student5.getJava()); System.out.println("Java语言成绩最大值:" + maxJava); // 计算最小值 int minJava = Math.min(Math.min(Math.min(Math.min(student1.getJava(), student2.getJava()), student3.getJava()), student4.getJava()), student5.getJava()); System.out.println("Java语言成绩最小值:" + minJava); } }
package org.example; public class Student { private String sNO; // 学号 private String sName; // 姓名 private String sSex; // 性别 private int sAge; // 年龄 private int sJava; // Java课程成绩 // 带参数的构造方法 public Student(String sNO, String sName, String sSex, int sAge, int sJava) { this.sNO = sNO; this.sName = sName; this.sSex = sSex; this.sAge = sAge; this.sJava = sJava; } // 获取学生信息的方法成员 public String getNo() { return sNO; } public String getName() { return sName; } public String getSex() { return sSex; } public int getAge() { return sAge; } public int getJava() { return sJava; } }
四、实验总结
本次实验的主要目的是练习在程序中定义类的方法和对象的方法,并掌握应用对象调用成员完成所需功能的方法。同时,也学习了包和嵌套类的应用。在实验中,我学会了如何定义类、创建对象并调用对象的方法来实现特定功能。通过这次实验,我对面向对象编程有了更深入的理解,并且掌握了更多的编程技巧。我相信这些知识和技能将对我的编程能力有所提升。