欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1 題目

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

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

2 思路分析

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

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

2.3 重寫turnOn和turnOff需要打印相應(yīng)的對象信息

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

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

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

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

2.8 如果開機前和關(guān)機前都沒有設(shè)備需要加載或彈出的話,會輸出開機前沒有需要加載的設(shè)備或關(guān)機前沒有需要彈出的設(shè)備

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+"麥克風(fēng)加載了");
? ? }

? ? @Override
? ? public void turnOff() {
? ? ? ? System.out.println(name+"麥克風(fēng)彈出了");
? ? }

}

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+"鼠標(biāo)加載了");
? ? }

? ? @Override
? ? public void turnOff() {
? ? ? ? System.out.println(name+"鼠標(biāo)彈出了");
? ? }
}

Computer類

package Work4;
public class Computer {
? ? //弄一個USB接口,里面的默認(rèn)都為null
? ? private USB[] usbs=new USB[4];
? ? public Computer() {
? ? }
? ? //每次只能增加一個設(shè)備
? ? public void addUSB(USB usb){
? ? ? ? for (int i = 0; i <usbs.length; i++) {
? ? ? ? ? ? //如果為空,則代表可以插入設(shè)備,否則就插入不了的
? ? ? ? ? ? if(usbs[i]==null){
? ? ? ? ? ? ? ? usbs[i]=usb;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? public void powerOn(){
? ? ? ? boolean flag=false;
? ? ? ? //判斷是否插入了設(shè)備,只要有就為false
? ? ? ? for (int i = 0; i <usbs.length; i++) {
? ? ? ? ? ? if(usbs[i]!=null){
? ? ? ? ? ? ? ? //如果USB接口不為空,則代表有設(shè)備,需要啟動的
? ? ? ? ? ? ? ? usbs[i].turnOn();
? ? ? ? ? ? ? ? flag=true;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if(!flag){
? ? ? ? ? ? System.out.println("開機前沒有需要加載的設(shè)備");
? ? ? ? }
? ? ? ? ? ? System.out.println("開機成功!!!!");
? ? }
? ? public void powerOff(){
? ? ? ? boolean flag=false;
? ? ? ? //判斷是否還有設(shè)備沒有設(shè)備被彈出,只要有就為false
? ? ? ? for (int i = 0; i <usbs.length; i++) {
? ? ? ? ? ? if(usbs[i]!=null){
? ? ? ? ? ? ? ? //如果USB接口不為空,則代表有設(shè)備,關(guān)機前需要彈出這些設(shè)備的
? ? ? ? ? ? ? ? usbs[i].turnOff();
? ? ? ? ? ? ? ? usbs[i]=null;
? ? ? ? ? ? ? ? flag=true;
? ? ? ? ? ? ? ? //彈出設(shè)備后,對應(yīng)的接口上面就沒有東西了,理應(yīng)設(shè)置為null
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if(!flag){
? ? ? ? ? ? System.out.println("關(guān)機前沒有需要彈出的設(shè)備");
? ? ? ? }
? ? ? ? ? ? System.out.println("關(guān)機成功!!!!");
? ? }
}

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();
? ? ? ? //沒有插入設(shè)備時測試
? ? ? ? c.powerOn();
? ? ? ? c.powerOff();
? ? }
}

4 代碼運行截圖

 到此這篇關(guān)于java實現(xiàn)模擬USB接口的功能的文章就介紹到這了,更多相關(guān)java 模擬USB接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Java集合框架面試題(含答案)上

    關(guān)于Java集合框架面試題(含答案)上

    Java集合框架為Java編程語言的基礎(chǔ),也是Java面試中很重要的一個知識點。這里,我列出了一些關(guān)于Java集合的重要問題和答案。
    2015-12-12
  • Spring深入刨析聲明式事務(wù)注解的源碼

    Spring深入刨析聲明式事務(wù)注解的源碼

    在spring注解中,使用聲明式事務(wù),需要用到兩個核心的注解:@Transactional注解和@EnableTransactionManagement注解。將@Transactional注解加在方法上,@EnableTransactionManagement注解加在配置類上
    2022-07-07
  • RocketMQ?Broker實現(xiàn)高可用高并發(fā)的消息中轉(zhuǎn)服務(wù)

    RocketMQ?Broker實現(xiàn)高可用高并發(fā)的消息中轉(zhuǎn)服務(wù)

    RocketMQ消息代理(Broker)是一種高可用、高并發(fā)的消息中轉(zhuǎn)服務(wù),能夠接收并存儲生產(chǎn)者發(fā)送的消息,并將消息發(fā)送給消費者。它具有多種消息存儲模式和消息傳遞模式,支持水平擴展和故障轉(zhuǎn)移等特性,可以為分布式應(yīng)用提供可靠的消息傳遞服務(wù)
    2023-04-04
  • Gradle build 報錯:Received status code 400 from server

    Gradle build 報錯:Received status code 400 from server

    這篇文章主要介紹了Gradle build 報錯:Received status code 400 from server,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • java測試框架的方法

    java測試框架的方法

    這篇文章主要介紹了java測試框架的方法,文中代碼非常詳細(xì),供大家學(xué)習(xí)和參考,感興趣的朋友可以了解下
    2020-06-06
  • 詳解用maven將dubbo工程打成jar包運行

    詳解用maven將dubbo工程打成jar包運行

    這篇文章主要介紹了詳解用maven將dubbo工程打成jar包運行,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解基于Spring Cloud幾行配置完成單點登錄開發(fā)

    詳解基于Spring Cloud幾行配置完成單點登錄開發(fā)

    這篇文章主要介紹了詳解基于Spring Cloud幾行配置完成單點登錄開發(fā),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 基于Freemarker和xml實現(xiàn)Java導(dǎo)出word

    基于Freemarker和xml實現(xiàn)Java導(dǎo)出word

    這篇文章主要介紹了基于Freemarker和xml實現(xiàn)Java導(dǎo)出word,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • SpringCloud客戶端報錯:- was unable to send heartbeat!的解決

    SpringCloud客戶端報錯:- was unable to send&nb

    這篇文章主要介紹了SpringCloud客戶端報錯:- was unable to send heartbeat!的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • SpringBoot實現(xiàn)quartz定時任務(wù)可視化管理功能

    SpringBoot實現(xiàn)quartz定時任務(wù)可視化管理功能

    這篇文章主要介紹了SpringBoot實現(xiàn)quartz定時任務(wù)可視化管理功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08

最新評論