面向对象设计:模拟声音设备系统

类图:

[图片]

Java 代码:

interface Soundable {
    void play();
    void changeVolume();
    void stop();
}

class MP3 implements Soundable {
    @Override
    public void play() {
        System.out.println("MP3 播放音乐...");
    }

    @Override
    public void changeVolume() {
        System.out.println("MP3 调整音量...");
    }

    @Override
    public void stop() {
        System.out.println("MP3 关机...");
    }
}

class Phone implements Soundable {
    @Override
    public void play() {
        System.out.println("手机 播放铃声...");
    }

    @Override
    public void changeVolume() {
        System.out.println("手机 调整铃声音量...");
    }

    @Override
    public void stop() {
        System.out.println("手机 关机...");
    }
}

class SmartPhone extends Phone {
    @Override
    public void play() {
        System.out.println("智能手机 播放音乐...");
    }
}

class SampleDisplay {
    public void display(Soundable sound) {
        sound.play();
        System.out.print("是否调整音量(1:是,2:否):");
        int input = Scanner.nextInt();
        if (input == 1) {
            sound.changeVolume();
        }
        System.out.print("是否关机(1:是,2:否):");
        input = Scanner.nextInt();
        if (input == 1) {
            sound.stop();
        }
    }
}

public class Main {
    public static void main(String[] args) {
        SampleDisplay display = new SampleDisplay();
        System.out.print("选择设备(1:MP3,2:手机,3:智能手机):");
        int input = Scanner.nextInt();
        Soundable sound;
        switch (input) {
            case 1:
                sound = new MP3();
                break;
            case 2:
                sound = new Phone();
                break;
            case 3:
                sound = new SmartPhone();
                break;
            default:
                System.out.println("无效输入。");
                return;
        }
        display.display(sound);
    }
}
java 文件大小:2.21KB