面向对象程序设计和常用类 声音设备模拟:根据下图所描述的运输货物场景下的类的体系结构,请用面向对象的类、继承、接口等概念用Java程序实现该体系结构,并按如下要求编写主方法测试你的实现:
(1) Soundable是一个接口,包含三个抽象方法:play()表示音响设备发声,changeVolume()表示音响设备调整声音,stop()表示设备关机。
interface Soundable{
abstract void play();
abstract void changeVolume();
abstract void stop();
}
(2) MP3和Phone是Soundable的实现类.实现类的方法中只需要显示对应的音响设备对应上面(1)的行为说明。
import java.util.Scanner;
class MP3 implements Soundable{
@Override
public void play() {
// TODO Auto-generated method stub
System.out.println("mp3开机");
}
@Override
public void changeVolume() {
// TODO Auto-generated method stub
System.out.println("确认音量调整");
}
@Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("mp3关机");
}
}
(3) SmartPhone是Phone的子类。
import java.util.Scanner;
class Phone implements Soundable{
@Override
public void play() {
// TODO Auto-generated method stub
System.out.println("开机");
}
@Override
public void changeVolume() {
// TODO Auto-generated method stub
System.out.println("确认音量调整");
}
@Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("关机");
}
}
class SmartPhone extends Phone {
}
(4) SampleDisplay是一个类,只包含一个display)方法,这个方法中先开启音响设备;然后提示用户是否需要调整音量(1:是,2∶否),根据用户的键盘输入在输入1时调用音响的changeVolume()方法;最后提示用户是否需要关机(1:是,2:否),根据用户的键盘输入在输入1时调用音响的stop()方法。
import java.util.Scanner;
public class SampleDisplay {
public void display(Soundable soundable) {
soundable.play();
System.out.println("是否需要调整音量(1:是,2:否)");
Scanner on_off = new Scanner(System.in);
int turn1 = on_off.nextInt();
if(turn1 == 1) {
soundable.changeVolume();
}else
if(turn1 == 2) {
System.out.println("取消音量调整");
}else {
System.out.println("输入无效");
}
System.out.println("是否需要关机(1:是,2:否)");
Scanner cv = new Scanner(System.in);
int turn2 = cv.nextInt();
if(turn2 == 1) {
System.out.println("确认关机");
soundable.stop();
}else
if(turn2 == 2) {
System.out.println("取消关机");
}else {
System.out.println("输入无效");
}
}
}
(5)在测试类的主方法中提示用户选择MP3、手机、智能手机,然后根据用户的选择调用所选择音响的display(方法,模拟音响设备的发声、调整音量、关机过程。
import java.util.Scanner;
public class SoundEquipments {
public static void main(String[] args) {
SampleDisplay yl = new SampleDisplay();
System.out.println("请选择设备(1:MP3,2:手机,3:智能手机):");
Scanner ch = new Scanner(System.in);
int choice = ch.nextInt();
switch(choice){
case (1):{
MP3 mp3 = new MP3() ;
yl.display(mp3);
break;
}
case (2):{
Phone phone = new Phone();
yl.display(phone);
break;
}
case (3):{
SmartPhone smartPhone = new SmartPhone();
yl.display(smartPhone);
break;
}
}
ch.close();
}
}