专              班              姓              学号
……………………………密…………………………………………封……………………………………线…………………………………………
《Java 程序设计基础》期末考试试卷(武汉大学试题)
(闭卷)
一、简单编程题(共50分)
在考试文件夹中新建一个应用程序proj1(应用程序的文件夹名称为proj1),按照以下要求编写程序代码。
1. 在程序中定义Person 类,为该类编写如下字段、构造器、访问器、修改器和相应的其他方法。(20分)
(1)在Person 类中定义两个字段: 私有访问权限,类型为String 的name 字段; 私有访问权限,类型为int 的age 字段。 (2)在Person 类中定义构造器
构造器有两个参数,第一个参数的类型是String ,名字为name 。第二个的类型是int ,名字是age 。第一个参数的值赋给字段name ,第二个参数的值赋给字段age 。
(3)为Person 类的两个字段分别编写访问器方法,方法名称分别为getName 和getAge 。getName 方法返回类型为String 的name 字段的值;getAge 方法返回类型为int 的age 字段的值。
(4)为Person 类的两个字段分别编写修改器方法,方法名称分别为setName 和 setAge 。setName 方法有一个String 类型的参数,方法中用该参数来设置字段name 的值;setAge 方法有一个int 类型的参数,方法中用该参数来设置字段age 的值,并且保证age 字段的值不能为负数,如果要将age 设置为负数则给出错误提示。
(5)为Person 类写一个叫做toString 的方法,该方法不需要参数,有返回值。它返回一个字符串,字符串中包含name 字段和age 字段的值,如果name 字段的值是“Helen ”,age 字段的值是20,则返回字符串:“Name :Helen. Age :20”。
2. 在程序中定义Student 类,Student 类继承Person 类。(10分)
(1)在Student 类中除了继承其超类Person 的name 字段和age 字段外,它还有自己的字段String 类型的school ,该字段的访问权限为私有。
(2)Student 类的构造器有三个参数,第一个参数为name ,String 类型;第二个参数为age ,int 类型;第三个参数为school ,String 类型,这三个参数的值分别赋给三个字段name 、age 和school 。
(3)在Student 类中重写其超类Person 的toString 方法,要求该方法返回的字符串不仅包含超类Person 中的name 字段和age 字段的值,而且包含子类Student 中的school 字段的值。如果name 字段的值是“Helen ”,age 字段的值是20,school 字段的值是“山西大学商务学院”,则返回的字符串为“School :山西大学商务学院 Name :Helen. Age :20”。
3. 在程序中定义Test 类,在Test 类中定义一个main 方法,在main 方法中实现如下操作:(10分)
(1)创建一个Person 类的对象,它的name 为“John ”,age 为18,对象名为person1; (2)创建一
个Student 类的对象,它的name 为“Helen ”,age 为18,school 为“MIT ”,对象名为stuent1;
(3)分别输出这两个对象的相关信息(调用它们的toString 方法)。
4. 分别为Person 类和Student 类编写文档注释,并生成应用程序的类文档。要求如
下:(10分)
(1)类的文档注释,包括类名、类的作者及版本号,作者的名字用考生的姓名标注,版本号使用考试的日期;
(2)构造器和各个方法的文档注释,包括方法的名称、构造器和方法的功能说明,要求标注构造器和方法中的参数及返回值,并说明参数的类型、名称和返回值的类型。
(3)文档注释完成后要使用BlueJ 的JavaDOC 工具生成应用程序的类文档。
二、代码改错(共20分)
在考试文件夹中的proj2工程中有五个类,每个类的代码中都存在错误,请先在出错的代码处用行注释语句标出错误原因,然后修改程序代码中的错误。
专              班              姓              学号
……………………………密…………………………………………封……………………………………线…………………………………………
注意:如果只改错或者只标出错误原因都只给一半分数。
三、综合应用题(共30分)
考试文件夹下的proj3工程是一个关于俱乐部的应用程序,程序中有两个类:Club 和Membership ,分别代表俱乐部和俱乐部的会员。Membership 类已经完成,可以直接使用。请按照要求将Club 类的功能补充完整。
(1)在Club 类中,定义一个ArrayList 类型的字段members 。该字段是程序中用来保存俱乐部会员信息的容器,为此要为该容器选择正确的元素的类型。在Club 类的构造器中,创建一个容器对象并赋值给这个字段。
(2)俱乐部的会员是以Membership 类的对象来表达的,Membership 的对象包含了一个人的姓名和他加入俱乐部的年月。在Club 类中实现join 方法,一个Membership 对象通过Club 对象的join 方法加入到Club 对象的容器中去,这个join 方法的声明如下:
public void join(Membership member)
(3)在Club 类中实现numberOfMembers 方法,该方法能够返回俱乐部的会员人数,方法声明如下:
public int numberOfMembers()
(4)在Club 类里定义一个purge 方法,方法的声明如下: public ArrayList<Membership> purge(int month, int year)
purge 方法能够出俱乐部中指定年、月加入的会员,并将到的会员从当前容器中移动到一个新的容器中,同时将该容器作为返回值返回。如果month 参数超过了有效的范围(1~12),打印出一条错误信息,并返回一个空容器。
答案
(1)public class Person
{
private String name;    private int age;
public Person(String name,int age)    {
this.name = name;          this.age = age;              }
public String getName()    {
return name;    }
public int getAge()    {
return age;    }
public void setName(String newName)    {
name = newName;    }
public void setAge(int newAge)    {
if(newAge  > 0)        {
System.out.println(newAge);                      }        else        {
System.out.println("error");        }    }
public String gettoString()        {
return ("Name :" + name + "Age:" + age);
专              班              姓              学号            ……………………………密…………………………………………封……………………………………线……………………………………    }
(2)public class Student extends Person {
private String school;
public Student(String name,int age,String school)    {
super(name,age);
this.school = school;            }
public String getschool()    {
return school;    }
public String toString()    {
return ("school :" + school  +        "Name :" +  name  +          "Age:" + age);    } }
(3) public class Test {
public static void main(String[] args)      {
Person  person1 = new Person("John",18);
Student student1 = new Student("Helen",18,"MIT");          System.out.String());          System.out.String());      }
(4) /**
* 这是一个Person 类  * @author 白金  * @version 2011.12  */
public class Person {
protected String name;    protected int age;
public Person(String name,int age)    {
this.name = name;          this.age = age;              }
public String getName()    {
return name;    }
public int getAge()    {
return age;    }
public void setName(String newName)    {
name = newName;
专              班              姓              学号            ……………………………密…………………………………
………封……………………………………线……………………………………    public void setAge(int newAge)    {
if(newAge  > 0)        {java的tostring方法
System.out.println(newAge);                      }        else        {
System.out.println("error");        }    }
public String toString()        {
return ("Name :" +  name  +  "Age:" + age);        }          }
(5) import java.util.ArrayList; /**
* Store details of club memberships.  *
* @author (your name)
* @version (a version number or a date)  */
public class Club {
private ArrayList<Membership> members  ;    /**
* Constructor for objects of class Club      */
public Club()    {
members = new ArrayList<Membership>();
/**
* Add a new member to the club's list of members.      * @param member The member object to be added.      */
public void join(Membership member)    {
members.add(member);    }
public int numberOfMember()    {
return members.size();    }
public ArrayList<Membership>purge(int month,int year)    {
if(month >= 1 && month <= 12)        {
int num = 0;
for(Membership member:members)            {
Month() == month)                    num++;            }                    }
else
System.out.println("输入的月份无效!");            return null;
} }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。