java实现模拟USB接口的功能
1 题目
模拟USB接口的功能
我们在使用计算机的时候经常会用到USB接口,鼠标、键盘等都是带USB接口的设备,我们只需要将鼠标、键盘插入到计算机的USB接口中就能正常使用这些带USB接口的外设。
通过JAVA程序的面向接口编程的设计思想,模拟计算机使用USB接口驱动鼠标和键盘的过程。
要求:
① 定义USB接口,接口中有turnOn()启动USB设备的方法,和turnOff()关闭设备的方法;
②定义Mouse鼠标、KeyBoard键盘、MicroPhone麦克风类实现USB接口;
③定义计算机Computer类
powerOn()开机,开机前需要加载所有的USB设备;
powerOff()关机,关机前需要弹出所有的USB设备。
注意:开机的时候鼠标等设备可以没有插进去
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(); }
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+"键盘弹出了"); } }
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+"麦克风弹出了"); } }
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+"鼠标弹出了"); } }
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("关机成功!!!!"); } }
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(); } }
4 代码运行截图
到此这篇关于java实现模拟USB接口的功能的文章就介绍到这了,更多相关java 模拟USB接口内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
原文出处:https://blog.csdn.net/SSS4362/article/details/125904253
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
c#检测usb设备拨插类库USBClassLibrary分享
这篇文章主要介绍了c#检测usb设备拨插类库USBClassLibrary的简单示例,需要的朋友可以参考下...2020-06-25- 这篇文章主要介绍了c# 三种方法调用WebService接口的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了vue接口请求加密实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-12
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
Java 8 Stream 的终极技巧——Collectors 功能与操作方法详解
这篇文章主要介绍了Java 8 Stream Collectors 功能与操作方法,结合实例形式详细分析了Java 8 Stream Collectors 功能、操作方法及相关注意事项,需要的朋友可以参考下...2020-05-20- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29
Java中lombok的@Builder注解的解析与简单使用详解
这篇文章主要介绍了Java中lombok的@Builder注解的解析与简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-06