信息科学与工程学院 《Java程序设计》 上机实验报告
专业班级 姓 名 学 号
实验时间 指导教师 成 绩
第二篇:Java面向对象程序设计 实验报告
一、实验目的及内容
目的:掌握和巩固Java面向对象程序设计的概念、方法。
内容:
1. 设计一个Java程序,该程序运行后,说明:一个类的所有对象共享同一个类成员变量;一个类的多个对象拥有各自的实例成员变量。
2. 编写一个表示人的类Person,该类满足以下要求:
l 有两个private成员变量:name(名字)、age(年龄);在Person类外访问这两个成员变量均通过接口器函数(getXXX,setXXX)。
l 该类具有一个有两个参数的构造函数,这两个参数分别用来初始化name和age成员变量。
l 该类包含一个方法public boolean older(Person r),用于比较当前对象年纪是否比参数r的年纪大,若是,则返回true,否则,返回false。
编写另外一个类:TestPerson,该类包含下面函数:
public static void sortPerson(Person[] personList),在该函数中利用Person类的older方法实现对数组personList按年龄从小到大排序。main函数位于该类中。在main函数中
(1) 创建Person类的10个对象,并保存到一个数组中,创建10个对象时,每个对象的年龄为0~100的一个随机数(用Math.random()函数得到)。
(2) 输出这个数组中每个对象的名字、年龄。
(3) 调用sortPerson方法,对这个数组中的10个Person对象按年龄排序。
(4) 输出排序后数组中每个对象的名字、年龄。
二、要求
1. 给出上述程序的中涉及到的类的类图(可用visio画)、解决上述问题的思路、代码和测试结果。
1.设计一个Java程序,该程序运行后,说明:一个类的所有对象共享同一个类成员变量;一个类的多个对象拥有各自的实例成员变量。
设计思路:要实现一个类的所有对象共享同一个类成员变量;一个类的多个对象拥有各自的实例成员变量。我创建了一个Number类,并创建了两个对象number1和number2,该类有一个类成员函数static int numberofsum(int a, int b)来求和,一个类成员变量countnumber来统计对象的个数,还有实例成员变量num,通过两个对象求和以及统计对象个数,说明了一个类的所有对象共享同一个类成员变量,两个对象都有自己的num值说明了一个类的多个对象拥有各自的实例成员变量。
类图:
程序代码:
//package number;
public class Number {
public static void main(String[] args) {
System.out.println("Create two numbers!");
Number number1 = new Number(5);
System.out.println("After create the first number,countnumber is "
+ number1.countnumbers);
Number number2 = new Number(10);
System.out.println("After create the second number,countnumber is "
+ number2.countnumbers);
System.out.println("The two numbers is "
+ number1.num + " and " + number2.num);
System.out.println("The sum of two numbers is "
+ numberofsum(number1.num, number2.num));
}
static int countnumbers = 0;
int num;
Number(int a) {
num = a;
countnumbers++;
}
static int numberofsum(int a, int b) {
int sum = a + b;
return sum;
}
}
测试结果:
2.编写一个表示人的类Person,以及另外一个类:TestPerson。具体要求见实验内容。
设计思路:定义两个类Person和TestPerson,TestPerson类中有public static void sortPerson(Person[] personList)来对创建的十个对象进行年龄大小排序。
类图:
程序代码:
//package testperson;
import java.util.Scanner;
public class TestPerson {
public static void main(String[] args) {
final int number = 10;
Scanner input = new Scanner(System.in);
Person[] personArray = new Person[number];
for (int i = 0; i < personArray.length; i++) {
System.out.print("Please enter the name of person " + (i + 1) + ":");
String personName = input.next();
int personAge = (int) (Math.random() * 100);
personArray[i] = new Person(personAge, personName);
System.out.println("The " + (i + 1) + " person's name is "
+ personArray[i].getName()
+ " and the age is " + personArray[i].getAge());
}
sortPerson(personArray);
}
public static void sortPerson(Person[] personList) {
Person t;
for (int i = 0; i < personList.length - 1; i++) {
for (int j = i + 1; j < personList.length; j++) {
if (personList[i].older(personList[j])) {
t = personList[i];
personList[i] = personList[j];
personList[j] = t;
}
}
}
System.out.println("The age from young to old order is:");
for (int k = 0; k < personList.length; k++) {
System.out.println((k + 1) + ", name: " + personList[k].getName()
+ ", age: " + personList[k].getAge());
}
}
}
class Person {
private int age;
private String name;
Person(int getAge, String getName) {
age = getAge;
name = getName;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int setage) {
age = setage;
}
public void setName(String setname) {
name = setname;
}
public boolean older(Person r) {
if (this.age > r.age) {
return true;
} else {
return false;
}
}
}
测试结果: