首页 > 编程语言 >每日一练编程题:今天是【接口,多态】

每日一练编程题:今天是【接口,多态】

时间:2024-05-31 21:33:32浏览次数:23  
标签:Usb interfaceNum void 编程 多态 接口 public usbs

设计程序 :

  • 电脑类的属性USB接口数组 : 有3个usb插口
  • 电脑类的功能 :
  1. 通过接口插入外设 (u盘,麦克风,键盘等)
    addUSB(USB usb) {
    }
  2. 开机
    要求: 电脑开机前,先启动外设
  3. 关机
    要求: 电脑关机前,先关闭外设
  • 外设类(u盘,麦克风,键盘等)
    功能 : 启动 关闭
    USB接口
    定义usb设备的统一功能
    开启() 关闭()
  • 效果 :
    创建电脑对象,能插入外设,调用方法电脑开机,电脑开机前 外设启动,
    电脑关机前,外设先关闭

UML类图

在这里插入图片描述

参考代码

Usb接口
package day529.homework;
/**
* Description: Usb接口
* date: 2024/5/29 20:51
* @author: LiCoffee
* @since JDK 1.8
*/

public interface Usb {
    void open(); //打开外接设备
    void close(); //关闭外接设备
}
UDisk 类实现 Usb 接口
package day529.homework;

public class UDisk implements Usb{
    @Override
    public void open() {
        System.out.println("打开U盘");
    }

    @Override
    public void close() {
        System.out.println("关闭U盘");
    }
}
Keyboard 类实现 Usb 接口
package day529.homework;

public class Keyboard implements Usb{
    @Override
    public void open() {
        System.out.println("打开键盘");
    }

    @Override
    public void close() {
        System.out.println("关闭键盘");
    }
}

Keyboard 类实现 Usb 接口
package day529.homework;

public class Microphone implements Usb{
    @Override
    public void open() {
        System.out.println("打开麦克风");
    }

    @Override
    public void close() {
        System.out.println("关闭麦克风");
    }
}

Computer 类
package day529.homework;
/**
* Description: 电脑类
* date: 2024/5/29 20:44
* @author: LiCoffee
* @since JDK 1.8
*/

public class Computer {
    private int interfaceNum; //电脑接口数量
    private Usb[] usbs;      //接口数组
    /**
     * @descriptions 无参构造方法,默认为三个接口
     * @author LiCoffee
     * @date 2024/5/29 20:43
     **/

    public Computer() {
        this(3);
        usbs = new Usb[interfaceNum];//定义接口数量

    }
    /**
     * @descriptions 有参构造方法,个性化定制接口数量
     * @author LiCoffee
     * @date 2024/5/29 20:47
     * @param interfaceNum - 传入接口数量
     **/

    public Computer(int interfaceNum) {
        this.interfaceNum = interfaceNum;
        usbs = new Usb[interfaceNum];
    }

    public int getInterfaceNum() {
        return interfaceNum;
    }

    public void setInterfaceNum(int interfaceNum) {
        this.interfaceNum = interfaceNum;
    }
    /**
     * @descriptions 插入设备
     * @author LiCoffee
     * @date 2024/5/29 20:48
     * @param usb -插入设备类型
     **/
    public void addUsb(Usb usb){
        for (int i = 0; i < usbs.length; i++) {
            if (usbs[i] == null) {
                usbs[i] = usb;
                break;
            }
        }
    }
    /**
     * @descriptions 打开电脑
     * @author LiCoffee
     * @date 2024/5/29 20:50
     **/

    public void open(){
        System.out.println("电脑打开");
        for (int i = 0; i < usbs.length; i++) {
            if (usbs[i] == null) {  //防止空指针异常
                break;
            }
            usbs[i].open();
        }

    }
    /**
     * @descriptions 关闭电脑
     * @author LiCoffee
     * @date 2024/5/29 20:50
     **/

    public void close(){
        for (int i = 0; i < usbs.length; i++) {
            if (usbs[i] == null) {  //防止空指针异常
                break;
            }
            usbs[i].close();
        }
        System.out.println("电脑关闭");
    }
}

Test 测试类
package day529.homework;

public class Test {
    public static void main(String[] args) {
        Computer computer = new Computer(); //创建电脑
        computer.addUsb(new Keyboard());    //插入接口
        computer.addUsb(new Microphone()); //插入接口
        computer.addUsb(new UDisk());     //插入接口
        computer.open();    //打开电脑
        computer.close();   //关闭电脑

    }

}

最后

如果感觉有收获的话,点个赞

标签:Usb,interfaceNum,void,编程,多态,接口,public,usbs
From: https://blog.csdn.net/m0_73940426/article/details/139305616

相关文章

  • 程序分享--大厂常见算法/编程面试题:O(1) 时间插入、删除和获取随机元素
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。或关注博主免费专栏【程序......
  • 系统编程POSIX信号量题
    系统编程POSIX信号量题目设计一个程序,主线程需要创建2个子线程之后主线程终止,此时进程中有2个子线程A和B,此时进程中有一个临界资源flag,子线程A获取触摸屏坐标并判断坐标值是否在LCD屏的左上角,如果坐标范围满足左上角,则利用条件量和互斥锁来唤醒子线程B,子线程B的任务是判断flag......
  • 系统编程练习题----利用条件量和互斥锁,实现两个线程之间的同步与互斥
    目录题目解析代码结果展示题目解析​ 该题主要依靠条件量和互斥锁来实现线程之间的同步与互斥,分析主线程、线程A和线程B的任务如下:主线程:打开LCD屏和触摸屏的硬件文件,并分别存储两个文件的文件描述符,方便后面进行条件判断。开启线程A和线程B。定义并初始化条件量和互斥......
  • 系统编程
    系统编程目录系统编程1.管道通信1.1匿名管道(pipe)1.2命名管道(fifo)2.消息队列3.共享内存4.信号量1.管道通信1.1匿名管道(pipe)//创建子线程pid_tfork(void);/****************************************返回值 成功(父进程)>0/(子进程)0 失败 -1(父进程,不创建子......
  • 系统编程——信号通信
    信号通信信号(英文翻译为signal)是Unix系统、类Unix系统(比如Linux系统)以及其他POSIX兼容的操作系统中用于实现进程间通信的一种方式。信号是一种异步通信机制。信号的发生1.按键触发按键触发指的是用户按下某个快捷键,然后由内核发送指定的信号给进程,比如用户准备在Linux系统的......
  • 一个生动的例子——通过ERC20接口访问Tether合约
    生动的例子USDT:符合ERC20标准的美元稳定币,Tether合约获得测试网上Tether合约地址通过自己写的ERC20接口访问这个合约Tether合约地址:0xdAC17F958D2ee523a2206206994597C13D831ec7IERC20.sol//SPDX-License-Identifier:GPL-3.0pragmasolidity>=0.8.2<0.9.0;inter......
  • Java的JDBC编程
     博主主页: 码农派大星.  数据结构专栏:Java数据结构 数据库专栏:MySQL数据库关注博主带你了解更多数据结构知识1.Java的数据库编程:JDBC数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包mysql-connector-java,需......
  • java多态——向下转型
    引入前面我尝试了一下这个代码packageb;publicclassmain_{ publicstaticvoidmain(String[]args){ //向上转型,父类的引用转向了子类的 father_animal=newgraduate(); Objectobj=newgraduate(); System.out.println(animal.name); System.out.print......
  • 《Java练习题》Java编程题合集(全)
    《Java练习题》Java编程题合集(全) 前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题。初学者:《Java练习题》习题集一  https://www.cnblogs.com/jssj/p/11147566.html《Java练习题》习题集二  https://www.cnblogs.com/jssj/p/1122235......
  • 什么是机器人离线编程? 衡祖仿真
    一、什么是机器人离线编程?机器人离线编程是自动化生产的重要一环。离线编程指,在建立了机器人的三维模拟场景后,经由软件仿真计算,生成控制机器人运动轨迹,进而生成机器人的控制指令。工程师可以由此来控制物理环境中的机器人。与普通机器人示教编程不同,在离线编程过程中,机器人等生......