Java案例分析
【案例4-3】多彩的声音
2024-10-25 14 0
简介 设计和实现一个Soundable发声接口,该接口具有发声功能,同时还能调节声音大小。 Soundable接口的这些功能将由有3种声音设备来实现,他们分别是收音机Radio、随身听Walkman、手机MobilePhone。最后还需设计一个应用程序类来使用这些实现Soundable接口的声音设备。程序运行时,先询问用户想哪个设备,用户选择设备后,程序按照该设备的工作方式打印发出的发音。
【案例4-3】多彩的声音
【案例介绍】
1. 案例描述
设计和实现一个Soundable发声接口,该接口具有发声功能,同时还能调节声音大小。
Soundable接口的这些功能将由有3种声音设备来实现,他们分别是收音机Radio、随身听Walkman、手机MobilePhone。最后还需设计一个应用程序类来使用这些实现Soundable接口的声音设备。程序运行时,先询问用户想哪个设备,用户选择设备后,程序按照该设备的工作方式打印发出的发音。
本案例要求使用抽象类实现。
2. 运行结果
【案例目标】
l 学会分析“发声接口程序设计”实现的逻辑思路。
l 能够独立完成“发声接口程序设计”的源代码编写、编译及运行。
l 掌握接口的实现方式。
【案例分析】
(1)通过任务的描述可知,此程序包含了一个发声接口Soundable,Soundable接口的有三个声音设备实现类实现了Soundable接口,分别是收音机类Radio,随身听类Walkman和手机类Mobilephon。
(2)Radio、Walkman和MobilePhon这三个声音设备实现类需要分别实现Soundable接口接口的相关功能。
(3)然后,还需设计一个应用程序类来使用这些实现Soundable接口的声音设备。
(4)最后编写测试类,在main()方法中,编写程序,使用户可以自主选择要使用的设备;创建使用设备的对象,根据用户选择的声音设备,调用相关方法,模拟使用声音设备对应的功能。
【案例实现】
Soundable.java
1 public interface Soundable {
2 // 发出声音
3 public void playSound() ;
4 // 降低声音
5 public void decreaseVolume();
6 // 停止声音
7 public void stopSound();
8 }
上述代码中,创建了一个Soundable接口,在接口中定义了三个方法playSound()、decreaseVolume()、stopSound()。
SampleDisplay.java
1 import java.util.Scanner;
2 public class SampleDisplay {
3 public void display(Soundable soundable) {
4 soundable.playSound();
5 System.out.println("您是否要降低音量?");
6 System.out.println("1-是 2-否");
7 Scanner in = new Scanner(System.in);
8 if(in.nextLine().equals("1")) {
9 soundable.decreaseVolume();
10 }
11 System.out.println("您是否要关机?");
12 System.out.println("1-是 2-否");
13 Scanner ins = new Scanner(System.in);
14 if(in.nextLine().equals("1")) {
15 soundable.stopSound();
16 }
17 }
18 }
上述代码中,创建了一个SampleDisplay类,在SampleDisplay类中编写了display(Soundable soundable)方法,根据传入的声音设备的对象,调用相关方法,模拟使用声音设备对应的功能。
Radio.java
1 public class Radio implements Soundable{
2 @Override
3 public void playSound() {
4 System.out.println("收音机播放广播:第八套小学生广播体操");
5 }
6 @Override
7 public void decreaseVolume() {
8 System.out.println("已降低收音机音量。");
9 }
10 @Override
11 public void stopSound() {
12 System.out.println("已关闭收音机。");
13 }
14 }
上述代码中,创建了一个Radio类并实现了Soundable接口,同时,实现了Soundable接口的三个方法:playSound()、decreaseVolume()、stopSound()。
Walkman.java
1 public class Walkman implements Soundable{
2 @Override
3 public void playSound() {
4 System.out.println("正在播放歌曲:七里香");
5 }
6 @Override
7 public void decreaseVolume() {
8 System.out.println("已降低随身听音量");
9 }
10 @Override
11 public void stopSound() {
12 System.out.println("已关闭随身听");
13 }
14 }
上述代码中,创建了一个Walkman类并实现了Soundable接口,同时,实现了Soundable接口的三个方法:playSound()、decreaseVolume()、stopSound()。
MobilePhone.java
1 public class MobilePhone implements Soundable{
2 @Override
3 public void playSound() {
4 System.out.println("手机发出来电铃声:叮当 、 叮当");
5 }
6 @Override
7 public void decreaseVolume() {
8 System.out.println("已降低手机音量");
9 }
10 @Override
11 public void stopSound() {
12 System.out.println("已关闭手机");
13 }
14 }
上述代码中,创建了一个MobilePhone类并实现了Soundable接口,同时,实现了Soundable接口的三个方法:playSound()、decreaseVolume()、stopSound()。
TestDemo.java
1 import java.util.Scanner;
2 public class TestDemo {
3 public static void main(String[] args) {
4 Scanner in = new Scanner(System.in);
5 System.out.println("你想听什么?请输入:");
6 System.out.println("0-收音机 1-随身听 2-手机");
7 int choice;
8 choice = in.nextInt();
9 SampleDisplay sampledisplay = new SampleDisplay();
10 if (choice == 0)
11 sampledisplay.display(new Radio());
12 else if(choice == 1)
13 sampledisplay.display(new Walkman());
14 else if(choice == 2)
15 sampledisplay.display(new MobilePhone());
16 else
17 System.out.println("您的输入有误,请重新输入!");
18 in.close();
19 }
20 }
上述代码中,首先创建了一个sampledisplay对象,然后,根据用户选择使用的声音设备,通过sampledisplay对象调用display()方法并传入声音设备对象,模拟使用声音设备相关的功能。