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.         运行结果

upfile

【案例目标】

l  学会分析“发声接口程序设计”实现的逻辑思路。

l  能够独立完成“发声接口程序设计”的源代码编写、编译及运行。

l  掌握接口的实现方式。

【案例分析】

1)通过任务的描述可知,此程序包含了一个发声接口SoundableSoundable接口的有三个声音设备实现类实现了Soundable接口,分别是收音机类Radio,随身听类Walkman和手机类Mobilephon

2RadioWalkmanMobilePhon这三个声音设备实现类需要分别实现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()方法并传入声音设备对象,模拟使用声音设备相关的功能。


点赞 0

文章评论

欢迎您:

阿文博客

人生的价值,并不是用时间,而是用深度量去衡量的。——列夫·托尔斯泰

69 文章 1879 浏览 0 评论