概述
1. 简单多态问题 问题描述 编程实现下图的类图,并编写一段程序来测试。
(1)可自行添加其他的成员变量和成员方法
(2) 各个子类的introduceSelf方法打印出子类的类名。
(3)本题的重点是测试程序的编写,需要测试各种情形,如单个对象、数组化(即定义一个数组,包含不同子类的对象)和参数化(定义一个函数,它的实参可以是不同子类的对象)
注: 编写测试类 Test,针对单个对象(Person),数组化(Person[])分别调用 introduceSelf()函数。
import java.util.Scanner;
class Person{
String name;
String job;
public Person(){System.out.println("Please Enter Your Name:");}
void GetSelf(String s1){}
void introduceSelf(){System.out.println("My name is "+name+" and my job is "+job);}
}
class Student extends Person{
void GetSelf(String s1){name = s1; job = "Student";}
}
class Employee extends Person{
void GetSelf(String s1){name = s1; job = "Employee";}
}
class Retired extends Person{
void GetSelf(String s1){name = s1; job = "Retired";}
}
public class PersonTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Please Enter The Number Of People:");
String s;
int num = 0;
num = in.nextInt();
int cho=0;
Person[] pr = new Person[num];
for (int i = 0; i < num; i++) {
System.out.println("Please choose the number to record the message");
System.out.println("1.Student 2.Employee 3.Retired ");
cho = in.nextInt();
switch (cho) {
case 1:
pr[i]= new Student();
s = in.next();
pr[i].GetSelf(s);
break;
case 2:
pr[i] = new Employee();
s = in.next();
pr[i].GetSelf(s);
break;
case 3:
pr[i] = new Retired();
s = in.next();
pr[i].GetSelf(s);
break;
default:
System.out.println("Your Enter Is Wrong , PLease Again");
break;
}
}
System.out.println("Each person's self-introduction:");
for (int i = 0; i < num; i++) {
pr[i].introduceSelf();
}
}
}
2. Shape 多态问题 问题描述 编程实现右图的类图,并编写一段程序来测试。
(1)对于Shape类的getArea方法,可以是空函数,而对于 Rectangle 和 Circle 类的 getArea 方法,需要真正实现其功能,即计算相应图形的面积
(2)Rectangle 和 Circle 类的构造函数需要实现
(3)需要测试各种情形,如单个对象、数组化(即定义一个数组,包含不同子类的对象)和参数化(定义一个函数,它的实参可以是不同子类的对象)等情形。 注:要求同上题,分别调用 getArea()函数。
import java.awt.geom.Area;
import java.util.Scanner;
class Shape{
Scanner in = new Scanner(System.in);
double area;
double GetArea(){return area;}
}
class Rectangle extends Shape{
double len; double wid;
public Rectangle() {
System.out.println("Please enter length and width:");
len = in.nextDouble(); wid = in.nextDouble();
}
double GetArea(){
area = len*wid;
return area;
}
}
class Circle extends Shape{
static final double t = 3.1415926;
double rad;
public Circle() {
System.out.println("Please enter the radius");
rad = in.nextDouble();
}
double GetArea(){
area = 0.5*t*Math.pow(rad, 2);
return area;
}
}
public class ShapeTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Please Enter The Number Of Graph:");
int num = 0;
num = in.nextInt();
int cho=0;
Shape[] sp = new Shape[num];
System.out.println("start——————————————————————————————————————————————————");
for (int i = 0; i < num; i++) {
System.out.println("Please choose the number to record the Shape");
System.out.println("1.Rectangle 2.Circle ");
cho = in.nextInt();
switch (cho) {
case 1:
sp[i]= new Rectangle();
System.out.println("The Number "+i+1+"'s area is "+sp[i].GetArea());
break;
case 2:
sp[i] = new Circle();
System.out.println("The Number "+i+"'s area is"+sp[i].GetArea());
break;
default:
System.out.println("Your Enter Is Wrong , PLease Again");
break;
}
}
System.out.println("End————————————————————————————————————————————————————");
}
}
3、 设计题目:模拟简单的信息录入系统。设计书、CD、磁带三个类,每个类含有名字、作者或演唱者、出版社或唱片社、价格、出版日期等相关信息。根据系统提示从键盘输入相关内容。
设计要求:可以使用类似命令行的方式来实现。程序运行后提示用户可以执行的操作类型,并要求用户输入一种选择。根据用户的选择,提示用户输入相关的信息(根据不同选择,输入不同的信息),最后在屏幕上输出这些信息。
可以使用循环来完成,以接受用户的多次输入。当用户选择退出,程序结束。对于不合要求的输入,给出提示,允许再重新输入。对于不同类型的输入信息,需要使用分支结构判别。
提示:由于书、CD、磁带有共同的内容,可以设计一个父类,父类中包含公共信息。
class MyMedia{
String mediaName; //出版物名称
float price; //出版物价格
String press; //出版社(磁带发行商)
String artist; //作者(演唱者)
void mediaNameInput(){} //出版物名称输入成员函数
void mediaPriceInput(){} //价格输入成员函数
void mediaPressInput(){} //出版社(磁带发行商)输入成员函数
void artistInput(){} //作者(演唱者)输入成员函数
}
然后分别定义三个相应子类,继承扩展父类的成员。参考界面如下图所示:
import java.util.Scanner;
import com.sun.xml.internal.bind.v2.runtime.Name;
class MyMedia{
Scanner in = new Scanner(System.in);
String mediaName; //出版物名称
float price; //出版物价格
String press; //出版社(磁带发行商)
String artist; //作者(演唱者)
String name;
void mediaNameInput(){} //出版物名称输入成员函数
void mediaPriceInput(){} //价格输入成员函数
void mediaPressInput(){} //出版社(磁带发行商)输入成员函数
void artistInput(){} //作者(演唱者)输入成员函数
void Input(){
mediaNameInput();
mediaPriceInput();
mediaPressInput();
artistInput();
}
void Print(){
System.out.println(name+"的名字是:"+mediaName);
System.out.println(name+"的价格是:"+price);
System.out.println(name+"的出版社是:"+press);
System.out.println(name+"的作者是:"+artist);
System.out.println("nn");
}
}
class Book extends MyMedia{
void mediaNameInput(){
name = "书";
System.out.println("请输入书的名字:");
mediaName = in.next();
}
void mediaPriceInput(){
System.out.println("请输入书的价格:");
price = in.nextInt();
}
void mediaPressInput(){
System.out.println("请输入书的出版社:");
press = in.next();
}
void artistInput(){
System.out.println("请输入书的作者:");
artist = in.next();
}
}
class CD extends MyMedia{
void mediaNameInput(){
name = "CD";
System.out.println("请输入CD的名字:");
mediaName = in.next();
}
void mediaPriceInput(){
System.out.println("请输入CD的价格:");
price = in.nextInt();
}
void mediaPressInput(){
System.out.println("请输入CD的出版社:");
press = in.next();
}
void artistInput(){
System.out.println("请输入CD的作者:");
artist = in.next();
}
}
class Tape extends MyMedia{
void mediaNameInput(){
name = "磁带";
System.out.println("请输入磁带的名字:");
mediaName = in.next();
}
void mediaPriceInput(){
System.out.println("请输入磁带的价格:");
price = in.nextInt();
}
void mediaPressInput(){
System.out.println("请输入磁带的出版社:");
press = in.next();
}
void artistInput(){
System.out.println("请输入磁带的作者:");
artist = in.next();
}
}
class Vet{
public void show(MyMedia a) {
System.out.println("您输入的是以下信息:");
a.Print();
}
}
public class Media{
public static void main(String[] arg){
Scanner in = new Scanner(System.in);
String s = new String();
System.out.println("请选择你要进行的操作(请输入1——4中的任一数字):n");
int sgn = 0;
while(true){
Vet v = new Vet();
System.out.println("1: 输入书的信息n2: 输入CD的信息n3: 输入磁带的信息n4:退出系统");
sgn = in.nextInt();
if(sgn==4) break;
while(sgn>4||sgn<1){
System.out.println("Wrong Input. Please retype");
sgn = in.nextInt();
}
switch (sgn) {
case 1:
Book b = new Book();
b.Input();
v.show(b);
break;
case 2:
CD c = new CD();
c.Input();
v.show(c);
break;
case 3:
Tape t = new Tape();
t.Input();
v.show(t);
break;
default:
break;
}
}
}
}
最后
以上就是跳跃蜜粉为你收集整理的JAVA实验三的全部内容,希望文章能够帮你解决JAVA实验三所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复