最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)模擬USB接口的功能

 更新時間:2022年07月21日 16:44:32   作者:SSS4362  
本文主要介紹了java實現(xiàn)模擬USB接口的功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1 題目

模擬USB接口的功能
我們在使用計算機的時候經常會用到USB接口,鼠標、鍵盤等都是帶USB接口的設備,我們只需要將鼠標、鍵盤插入到計算機的USB接口中就能正常使用這些帶USB接口的外設。
通過JAVA程序的面向接口編程的設計思想,模擬計算機使用USB接口驅動鼠標和鍵盤的過程。

要求:
① 定義USB接口,接口中有turnOn()啟動USB設備的方法,和turnOff()關閉設備的方法;
②定義Mouse鼠標、KeyBoard鍵盤、MicroPhone麥克風類實現(xiàn)USB接口;
③定義計算機Computer類
powerOn()開機,開機前需要加載所有的USB設備;
powerOff()關機,關機前需要彈出所有的USB設備。
注意:開機的時候鼠標等設備可以沒有插進去    

2 思路分析

2.1 寫一個接口USB,里面有turnOn方法和turnOff方法

2.2 寫Mouse(鼠標)、KeyBoard(鍵盤)、MicroPhone(麥克風)類實現(xiàn)USB接口

2.3 重寫turnOn和turnOff需要打印相應的對象信息

2.4 Computer類建立一個接口數(shù)組,用來存放每個實現(xiàn)接口的的子類的實例化對象

2.5 Computer類中創(chuàng)建一個單次添加設備方法addUSB(USB usb),使得每次調用該方法時,該電腦會在接口數(shù)組對象不為null的位置插上一個設備

2.6 Computer中的powerOn是遍歷完所有的USB接口,若接口對象不為null,就調用該設備的重寫的turnOn方法,當遍歷完所有的后會打印電腦啟動成功。

2.7 Computer中的powerOff是遍歷完所有的USB接口,若接口對象不為null,則調用該設備的被重寫的turnOff方法,然后把該接口對象賦值為null,當遍歷完成所有的后會打印電腦關閉成功。

2.8 如果開機前和關機前都沒有設備需要加載或彈出的話,會輸出開機前沒有需要加載的設備或關機前沒有需要彈出的設備

3 代碼實現(xiàn)

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實現(xiàn)模擬USB接口的功能的文章就介紹到這了,更多相關java 模擬USB接口內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決Hibernate4執(zhí)行save()或update()無效問題的方法

    解決Hibernate4執(zhí)行save()或update()無效問題的方法

    這篇文章主要為大家詳細介紹了解決Hibernate4執(zhí)行save()或update()無效問題的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • springboot框架的全局異常處理方案詳解

    springboot框架的全局異常處理方案詳解

    這篇文章主要介紹了springboot框架的全局異常處理方案,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • SpringBoot JSON全局日期格式轉換器實現(xiàn)方式

    SpringBoot JSON全局日期格式轉換器實現(xiàn)方式

    這篇文章主要介紹了SpringBoot JSON全局日期格式轉換器,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 利用spring?boot+WebSocket實現(xiàn)后臺主動消息推送功能

    利用spring?boot+WebSocket實現(xiàn)后臺主動消息推送功能

    目前對于服務端向客戶端推送數(shù)據(jù),常用技術方案有輪詢、websocket等,下面這篇文章主要給大家介紹了關于利用spring?boot+WebSocket實現(xiàn)后臺主動消息推送功能的相關資料,需要的朋友可以參考下
    2022-04-04
  • String類型轉localDate,date轉localDate的實現(xiàn)代碼

    String類型轉localDate,date轉localDate的實現(xiàn)代碼

    這篇文章主要介紹了String類型轉localDate,date轉localDate的實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Spring為IOC容器注入Bean的五種方式詳解

    Spring為IOC容器注入Bean的五種方式詳解

    這篇文章主要介紹了Spring為IOC容器注入Bean的五種方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • RabbitMQ在Spring Boot中的使用步驟

    RabbitMQ在Spring Boot中的使用步驟

    在Spring Boot中使用RabbitMQ涉及多個步驟,包括配置、創(chuàng)建監(jiān)聽器和發(fā)送消息,下面給大家分享RabbitMQ在Spring Boot中的使用步驟,感興趣的朋友一起看看吧
    2024-07-07
  • SpringMVC配置404踩坑記錄

    SpringMVC配置404踩坑記錄

    本文主要介紹了SpringMVC配置404踩坑記錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-03-03
  • Springboot集成graylog及配置過程解析

    Springboot集成graylog及配置過程解析

    這篇文章主要介紹了Springboot集成graylog及配置過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • Mybatis插件擴展及與Spring整合原理分析

    Mybatis插件擴展及與Spring整合原理分析

    這篇文章主要介紹了Mybatis插件擴展及與Spring整合原理,本文通過實例文字相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07

最新評論

阿拉善盟| 桦甸市| 东乡| 梓潼县| 清丰县| 沂南县| 敖汉旗| 仙居县| 双辽市| 达拉特旗| 江津市| 五常市| 惠水县| 威海市| 靖远县| 芜湖市| 托里县| 绩溪县| 苏州市| 衢州市| 得荣县| 大城县| 清徐县| 汶上县| 西昌市| 三亚市| 咸阳市| 常山县| 大庆市| 九台市| 顺义区| 高平市| 陕西省| 维西| 镇平县| 辽宁省| 新泰市| 彰化市| 祁门县| 安西县| 谢通门县|