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 代码运行截图
相关文章