实验四
【4-1】对象数组和访问权限
设计一个Student类,包含学号、姓名、2门课程和总成绩,所有成员变量都为private,其中包含多个方法,其中getNumber、getName和getTotal为public,如UML图所示。要求在主类中定义一个student对象数组,表示一个讨论小组3名同学,输入他们的学号、姓名以及两门课程成绩,输出他们的学号、姓名和总成绩。
Student
-number:String
-name:String
-math:int
-computer:int
-total:int
Student()
Student(String, String)//赋值学号和姓名
setNumber(String) : void
setName(String) : void
+getNumber() : String
+getName() : String
setMathScore(int) : void
setcomputerScore(int) : void
computeTotalScore() : void
+getTotal(): int
【4-2】水井共享问题(类变量和类方法)
编写程序模拟两个村庄共用同一口井水。一个Village类,该类有一个静态的int型成员变量waterAmount,用于模拟井水的水量。在主类Prog1的main()方法中创建两个村庄,一个村庄改变了waterAmount的值,另一个村庄查看waterAmount的值。
Village
waterAmount : int; //static模拟水井的水量
peopleNumber : int; //村庄的人数
name : String; //村庄的名字
setWaterAmount(int) : void //static
drinkWater(int) : void
lookWaterAmount() : int //static
setPeopleNumber(int n) : void
getPeopleNumber() : int
【4-3】编写一个Java应用程序,该程序有两个类:Vehicle(用于刻画机动车)和Prog1(主类)。
具体要求如下:
Vehicle
speed:double
power:int
speedup(int):void
speeddown(int):void
getSpeed():double
setPower(int):void
getPower():int
Vehicle类有一个double类型的变量speed,用于表示机动车的速度,一个int类型变量power,用于表示激动剂的功率。方法speedUp(int s),体现机动车的加速功能;方法speedDown(int),体现机动车的减速功能。方法setPower(int p),用于设置机动车的功率。定义了getPower()方法,用于获取机动车的功率。
【4-4】在【4-3】的基础上,进行如下改进。
(1) 改进speedUp()方法,使得Vehicle类的对象加速时不能将speed值超过200;
(2) 改进speedDown()方法,使得Vehicle类的对象减速时不能将speed值小于0;
(3) 增加一个刹车方法void brake(),Vehicle类的对象调用它能将speed的值变为0。
【4-5】编写一个Java应用程序,模拟家庭买一台电视。
具体要求如下:
创建TV.java、Family.java和Prog1.java,其中TV.java中的TV类负责创建“电视”对象,Family.java中的Family类负责创建“家庭”对象,Prog1是主类。
在主类Prog1的main()方法中使用TV类创建一个对象haierTV,然后使用Familiy类再创建一个对象zhangSanFamily,并将先前TV类的实例haierTV的引用传递给zhangSanFamily对象的成员变量homeTV。
Family
homeTV:TV
buyTV(TV):void
remoteControl(int):void
seeTV():void
TV
channel:int
SetChannel(int):void
getChannel():int
showProgram():void
【4-6】编写一个三角形类,该类的UML图如下,其方法功能请根据类Prog1的主方法和输出的结果编写。
Triangle
side1,side2,side3:int
area, perimeter:float
Triangle()
Triangle(int , int , int )
Triangle(Triangle)
isTriangle() : int
isTriangle(Triangle) : int
setSides(int, int, int) : void
computerArea():void
computerPerimeter() :void
getArea():float
getPerimeter():float
【4-7】继承的应用
1)声明一个图形抽象类(Shape),含有一个成员变量color(字符串类型),一个无参构造方法,一个有一个字符串参数的构造方法用于初始化颜色变量,一个getColor方法返回颜色值,一个抽象方法getArea获取图形面积,一个toString()方法显示图形的详细信息。
2)声明一个圆形类(Circle)继承自图形类,含有一个成员变量半径r;有一个有两个参数的构造方法用于初始化颜色和半径;一个getArea方法获取圆的面积;一个toString()方法显示圆形的详细信息。
3)声明一个矩形类(Rectangle)继承自图形,含有两个double类型的成员变量长a和宽b;有一个有三个参数的构造方法用于初始化颜色、长和宽;一个getArea方法获取矩形的面积;一个toString()方法显示矩形的详细信息。
4)声明一个图形工厂类型,内含一个createShape方法,根据用户输入的图形类型的名称,进而提示输入相应信息生成图形对象。
5)声明一个测试类(TestShape):不断询问用户欲生成图形类型的名称,由图形工厂创建相应图形类型,并打印相应图形的详细,直到用户输入quit为止。
实验五
【5-1】要求:自定义异常类,并在方法中抛出异常和处理异常。
ExceptionExample.java
【代码1】 // 类声明,声明一个Exception的子类NoLowerLetter
{
public void print() {
System.out.printf("%c",'#');
}
}
【代码2】 // 类声明,声明一个Exception的子类NoDigit
{
public void print() {
System.out.printf("%c",'*');
}
}
class People {
void printLetter(char c) throws NoLowerLetter {
if(c<'a'||c>'z') {
NoLowerLetter noLowerLetter=【代码3】 // 创建NoLowerLetter类型对象
【代码4】 // 抛出noLowerLetter
}
else {
System.out.print(c);
}
}
void printDigit(char c) throws NoDigit {
if(c<'1'||c>'9') {
NoDigit noDigit=【代码5】 // 创建NoDigit()类型对象
【代码6】 // 抛出noDigit
}
else {
System.out.print(c);
}
}
}
public class ExceptionExample {
public static void main (String args[ ]){
People people=new People( );
for(int i=0;i<128;i++) {
try
{
people.printLetter((char)i);
}
catch(NoLowerLetter e)
{
e.print();
}
}
for(int i=0;i<128;i++) {
try
{
people.printDigit((char)i);
}
catch(NoDigit e)
{
e.print( );
}
}
}
}
【5-2】自定义异常的定义、拋出和捕获:
(1) 自定义两个异常类:非法姓名异常IllegaNameException和非法地址异常IllegalAddressException。
(2) 定义Student类包含Name和Address属性,和setName、setAddress方法,当姓名长度小于1或者大于5时抛出IllegaNameException,当地址中不含有“省”或者“市”关键字时抛出IllegalAddressException。
(3) 编写程序抛出这两种异常,在main方法中进行捕获并合理地处理。
【5-3】】编写一个应用程序,要求从键盘输入一个double型的圆的半径,计算并输出其面积。测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。(提示:需要捕获NumberFormatException异常)
实验六
【6-1】职工管理
-
有一个抽象类,职工类(Employee),包含保护成员: 工号(empId int),姓名 (empName String) , 年龄 (empAge int) 包含一个公有抽象方法 void show(),其作用为将信息打印到屏幕上
-
建立一个接口 interfaceEmp,包含一个公有方法void showName();其作用为将姓名信息打印到屏幕上
-
建立一个老师类(Teacher)继承职工类,实现interfaceEmp接口。增加一个私有属性所教班级编号 (classId String) ,覆盖show 方法,将所有信息打印出来。并实现showName方法,将其对象的名字打印出来。创建此教师类的构造函数,接收所有属性参数,进行构造赋值。
-
建立一个经理类(Manager) 继承职工类,实现interfaceEmp接口。增加一个私有属性经理编号 (managerId int) ,覆盖show 方法,将所有信息打印出来。和实现showName方法,将其对象的名字打印出来。创建此经理类的构造函数,接收所有属性参数,进行构造赋值
-
建立一个Demo类,包含main函数进行相应测试。创建一个Employee的引用,将他指向一个Teacher的对象。调用其show()方法;将此引用指向一个Manager对象,调用其show()方法。
【6-2】动物世界
子任务一:创建Animal类
- 创建Animal类,它是所有动物的抽象父类。
- 声明一个受保护的整数类型属性legs,它记录动物的腿的数目。
- 定义一个受保护的构造器,用来初始化legs属性。
- 声明抽象方法eat。
- 声明具体方法walk来打印动物是如何行走的(包括腿的数目)。
子任务二:Spider类
- Spider继承Animal类。
- 定义默认构造器,它调用父类构造器来指明所有蜘蛛都是8条腿。
- 实现eat方法
子任务三:创建pet(宠物)接口
- 提供getName() 返回该宠物的名字
- 提供setName(String name) 为该宠物命名
- 提供 play()方法
子任务四:创建猫类
- 该类必须包含String属性来存宠物的名字。
- 定义一个构造器,它使用String参数指定猫的名字;该构造器必须调用超类构造器来指明所有的猫都是四条腿。
- 另定义一个无参的构造器。该构造器调用前一个构造器(用this关键字)并传递一个空字符串作为参数
- 实现Pet接口方法。
- 实现eat方法。
子任务五:创建Fish类
- 创建Fish类,它继承Animal类
- 重写Animal的walk方法以表明鱼不能走且没有腿。
- 实现Pet接口
- 无参构造方法
- 提供一个private 的name属性
这里收录的去年期末考试的编程题,要仔细找哦,有代码的地方就有可能,得到了好处可别藏私哦!收纳不易,还请点赞收藏,听说一键三连的小伙伴都能顺利通过考试哦!
2019年期末考试编程题