• 解析java实现模拟USB接口的功能


    解析java实现模拟USB接口的功能

    1 题目

    模拟USB接口的功能
    我们在使用计算机的时候经常会用到USB接口,鼠标、键盘等都是带USB接口的设备,我们只需要将鼠标、键盘插入到计算机的USB接口中就能正常使用这些带USB接口的外设。
    通过JAVA程序的面向接口编程的设计思想,模拟计算机使用USB接口驱动鼠标和键盘的过程。
    要求:
    ① 定义USB接口,接口中有turnOn()启动USB设备的方法,和turnOff()关闭设备的方法;
    ②定义Mouse鼠标、KeyBoard键盘、MicroPhone麦克风类实现USB接口;
    ③定义计算机ComputerpowerOn()开机,开机前需要加载所有的USB设备;
    powerOff()关机,关机前需要弹出所有的USB设备。
    注意:开机的时候鼠标等设备可以没有插进去    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2 思路分析

    2.1 写一个接口USB,里面有turnOn方法和turnOff方法

    2.2 写Mouse(鼠标)、KeyBoard(键盘)、MicroPhone(麦克风)类实现USB接口

    2.3 重写turnOn和turnOff需要打印相应的对象信息

    2.4 Computer类建立一个接口数组,用来存放每个实现接口的的子类的实例化对象

    2.5 Computer类中创建一个单次添加设备方法addUSB(USB usb),使得每次调用该方法时,该电脑会在接口数组对象不为null的位置插上一个设备

    2.6 Computer中的powerOn是遍历完所有的USB接口,若接口对象不为null,就调用该设备的重写的turnOn方法,当遍历完所有的后会打印电脑启动成功。

    2.7 Computer中的powerOff是遍历完所有的USB接口,若接口对象不为null,则调用该设备的被重写的turnOff方法,然后把该接口对象赋值为null,当遍历完成所有的后会打印电脑关闭成功。

    2.8 如果开机前和关机前都没有设备需要加载或弹出的话,会输出开机前没有需要加载的设备或关机前没有需要弹出的设备

    3 代码实现

    USB 接口

    package Work4;
    public interface USB {
        //接口里面的方法都是抽象方法,那个public abstract可以省略不写的!!!
        void turnOn();
        void turnOff();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    KeyBoard类

    package Work4;
    
    public class KeyBoard implements USB{
        private String name;
    
        public KeyBoard() {
        }
    
        public KeyBoard(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public void turnOn() {
            System.out.println(name+"键盘加载了");
        }
    
        @Override
        public void turnOff() {
            System.out.println(name+"键盘弹出了");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    MicroPhone类

    package Work4;
    
    public class MicroPhone implements USB{
        private String name;
        public MicroPhone() {
        }
    
        public MicroPhone(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public void turnOn() {
            System.out.println(name+"麦克风加载了");
        }
    
        @Override
        public void turnOff() {
            System.out.println(name+"麦克风弹出了");
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    Mouse类

    package Work4;
    
    public class Mouse implements USB{
        private String name;
    
        public Mouse() {
        }
    
        public Mouse(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public void turnOn() {
            System.out.println(name+"鼠标加载了");
        }
    
        @Override
        public void turnOff() {
            System.out.println(name+"鼠标弹出了");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    Computer类

    package Work4;
    public class Computer {
        //弄一个USB接口,里面的默认都为null
        private USB[] usbs=new USB[4];
        public Computer() {
        }
        //每次只能增加一个设备
        public void addUSB(USB usb){
            for (int i = 0; i <usbs.length; i++) {
                //如果为空,则代表可以插入设备,否则就插入不了的
                if(usbs[i]==null){
                    usbs[i]=usb;
                    break;
                }
            }
        }
        public void powerOn(){
            boolean flag=false;
            //判断是否插入了设备,只要有就为false
            for (int i = 0; i <usbs.length; i++) {
                if(usbs[i]!=null){
                    //如果USB接口不为空,则代表有设备,需要启动的
                    usbs[i].turnOn();
                    flag=true;
                }
            }
            if(!flag){
                System.out.println("开机前没有需要加载的设备");
            }
                System.out.println("开机成功!!!!");
        }
        public void powerOff(){
            boolean flag=false;
            //判断是否还有设备没有设备被弹出,只要有就为false
            for (int i = 0; i <usbs.length; i++) {
                if(usbs[i]!=null){
                    //如果USB接口不为空,则代表有设备,关机前需要弹出这些设备的
                    usbs[i].turnOff();
                    usbs[i]=null;
                    flag=true;
                    //弹出设备后,对应的接口上面就没有东西了,理应设置为null
                }
            }
            if(!flag){
                System.out.println("关机前没有需要弹出的设备");
            }
                System.out.println("关机成功!!!!");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    TestComputer

    package Work4;
    public class TestComputer {
        public static void main(String[] args) {
            Computer c=new Computer();
            c.addUSB(new Mouse("罗技"));
            c.addUSB(new KeyBoard("双飞燕"));
            c.addUSB(new MicroPhone("铁三角"));
            c.powerOn();
            c.powerOff();
            //没有插入设备时测试
            c.powerOn();
            c.powerOff();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    4 代码运行截图

    在这里插入图片描述

  • 相关阅读:
    MapReduce Shuffle源码解读
    【手写Mybatis】step02:实现映射器的注册和使用
    从李佳琦到背后的商业逻辑再到游戏行业
    Spark on Yarn With K8s
    JDBC详解
    总结 Thread 类的基本用法
    【广州华锐互动】煤矿设备AR远程巡检系统实现对井下作业的远程监控和管理
    k8s.8-使用sealos部署kubernetes集群并实现集群管理
    docker高级网络配置、高级数据卷机制和Dockerfile说明
    【限免】杂波环境下线性调频脉冲、巴克码、频率步进脉冲雷达MTI、脉冲压缩【附MATLAB代码】
  • 原文地址:https://blog.csdn.net/SSS4362/article/details/125904253