当前位置: 首页 > news >正文

Java-智能家居系统小案例

要求:某智能家居系统,可以让用户选择要控制的家用设备(电视机,空调...),并对他们进行打开和关闭的操作。

可以复习接口,多态,单例等等知识

步骤:

目标:面向对象编程实现智能家居控制系统(开和关的功能)
谁控制它们:智能控制系统(单例对象),控制调用设备的状态
1.定义设备类(JD),创建对象用来存储智能家居设备对象
2.准备这些对象,放到数组中。
3.为每一个设备创建一个开关的功能,定义一个接口,让JD实现接口
4.创建智能控制系统对象,控制开关功能
5.提示用户操作,a.展示所有设备状态,b.选择设备,c.选择开关
打印全部设备的开和关状态

1. 定义设备类(JD)

package com.itheima.demo3;

public class JD implements  Switch{
    private String name;
    private boolean status;

    @Override
    public void press() {
        status=!status;
    }

    public JD() {
    }
    public JD(String name, boolean status) {
        this.name = name;
        this.status = status;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isStatus() {
        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }

}

2.准备这些对象,放到数组中。 

package com.itheima.demo3;

public class Lamp extends JD{
    public Lamp(String name, boolean status) {
        super(name,status);
    }
}




package com.itheima.demo3;

public class Tv extends JD{
    public Tv(String name, boolean status) {
        super(name,status);
    }
}



package com.itheima.demo3;

public class WashMachine extends JD{
    public WashMachine(String name, boolean status) {
        super(name,status);
    }
}



package com.itheima.demo3;

public class Air extends JD{
    public Air(String name, boolean status) {
        super(name, status);
    }
}

3.为每一个设备创建一个开关的功能,定义一个接口,让JD实现接口 

package com.itheima.demo3;

public interface Switch {
    public void press();
}

4.创建智能控制系统对象,控制开关功能 

package com.itheima.demo3;
//智能控制系统类
public class SmartHomeControl {
    private static final SmartHomeControl SmartHomeControl=new SmartHomeControl();
    private SmartHomeControl() {}

    public static SmartHomeControl getInstance() {
        return SmartHomeControl;
    }
    public static void printAllStatus(JD[] jds) {
        System.out.println("当前智能控制系统状态为:");
        for(int i=0;i<jds.length;i++)
            System.out.println((i+1)+","+jds[i].getName()+" 现在的状态是 "+((jds[i].isStatus())?"开":"关"));
    }

    //多态
    public void control(JD jd) {
        System.out.println(jd.getName()+" 现在的状态是 "+((jd.isStatus())?"开":"关"));
        System.out.println("开始您的操作......");
        jd.press();
        System.out.println(jd.getName()+" 现在的状态是 "+((jd.isStatus())?"开":"关"));
    }
}

5.提示用户操作,a.展示所有设备状态,b.选择设备,c.选择开关 打印全部设备的开和关状态  

Test类:

package com.itheima.demo3;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        //目标:面向对象编程实现智能家居控制系统(开和关的功能)
        // 谁控制它们:智能控制系统(单例对象),控制调用设备的状态
        // 1.定义设备类(JD),创建对象用来存储智能家居设备对象
        // 2.准备这些对象,放到数组中。

        JD[] jds=new JD[4];
        jds[0]=new WashMachine("美的洗衣机",true);
        jds[1]=new Lamp("LED灯泡",true);
        jds[2]=new Tv("海信电视",true);
        jds[3]=new Air("格力空调",true);

        // 3.为每一个设备创建一个开关的功能,定义一个接口,让JD实现接口
        // 4.创建智能控制系统对象,控制开关功能
        SmartHomeControl smartHomeControl=SmartHomeControl.getInstance();
        // 5.控制电视机
        // smartHomeControl.control(jds[2]);
        //6.提示用户操作,a.展示所有设备状态,b.选择设备,c.选择开关
        //打印全部设备的开和关状态
        while(true)
        {
            SmartHomeControl.printAllStatus(jds);
            System.out.println("请选择设备:");
            Scanner scanner=new Scanner(System.in);
            int command=scanner.nextInt();
            switch (command) {
                case 1:
                    smartHomeControl.control(jds[0]);
                    break;
                case 2:
                    smartHomeControl.control(jds[1]);
                    break;
                case 3:
                    smartHomeControl.control(jds[2]);
                    break;
                case 4:
                    smartHomeControl.control(jds[3]);
                    break;
                case 5:
                    System.out.println("欢迎下次使用");
                    System.exit(0);
                    return ;
                default:
                    System.out.println("输入有误,请重新输入");
                    break;
            }
        }
    }
}

 运行:

当前智能控制系统状态为:
1,美的洗衣机 现在的状态是 开
2,LED灯泡 现在的状态是 开
3,海信电视 现在的状态是 开
4,格力空调 现在的状态是 开
请选择设备:
1
美的洗衣机 现在的状态是 开
开始您的操作......
美的洗衣机 现在的状态是 关
当前智能控制系统状态为:
1,美的洗衣机 现在的状态是 关
2,LED灯泡 现在的状态是 开
3,海信电视 现在的状态是 开
4,格力空调 现在的状态是 开
请选择设备:
4
格力空调 现在的状态是 开
开始您的操作......
格力空调 现在的状态是 关
当前智能控制系统状态为:
1,美的洗衣机 现在的状态是 关
2,LED灯泡 现在的状态是 开
3,海信电视 现在的状态是 开
4,格力空调 现在的状态是 关
请选择设备:
1
美的洗衣机 现在的状态是 关
开始您的操作......
美的洗衣机 现在的状态是 开
当前智能控制系统状态为:
1,美的洗衣机 现在的状态是 开
2,LED灯泡 现在的状态是 开
3,海信电视 现在的状态是 开
4,格力空调 现在的状态是 关
请选择设备:
3
海信电视 现在的状态是 开
开始您的操作......
海信电视 现在的状态是 关
当前智能控制系统状态为:
1,美的洗衣机 现在的状态是 开
2,LED灯泡 现在的状态是 开
3,海信电视 现在的状态是 关
4,格力空调 现在的状态是 关
请选择设备:
5
欢迎下次使用

进程已结束,退出代码为 0

相关文章:

  • Linux: 网络,arp的数量为什么会对交换机/路由器有性能的影响
  • async/defer/preload性能优化
  • 基于SpringBoot和Vue的SQL TO API平台的设计与实现
  • SQL语言分类及命令详解(一)
  • Java面试黄金宝典20
  • Java 实现将Word 转换成markdown
  • 便携版:随时随地,高效处理 PDF 文件
  • 数据驱动的教育革命:让学习更智能、更个性化
  • BNB Chain 何以打造 AI 驱动链上应用新世界?
  • 【数据仓库】湖仓一体的核心建模理论
  • 如何用 Postman 进行高效的 Mock 测试?
  • 【区块链 + 文化版权】基于 FISCO BCOS 的方言大数据语料库 | FISCO BCOS 应用案例
  • Spring的SPEL(Spring Expression Language)的使用说明,包含语法、示例和常见场景
  • Android kill 进程的三种方式
  • Redis 中的过期策略和内存淘汰策略
  • Android SystemUI深度定制实战:QSPanel下拉状态栏动态日期显示全解析
  • Rust从入门到精通之精通篇:24.高级异步编程
  • 虚拟机与Docker与K8s的比较
  • firewall-cmd添加访问规则
  • AI写一个视频转图片帧工具(python)
  • 五一假期多地政府食堂对外开放:部分机关食堂饭菜“秒没”
  • 金科股份:因信披违规,公司及董事长、总裁、财务负责人等收到行政监管措施决定书
  • 国铁集团:5月1日全国铁路预计发送旅客2250万人次
  • 五一期间全国高速日均流量6200万辆,同比增长8.1%
  • 解放日报:让算力像“水电煤”赋能千行百业
  • 结婚这件事,年轻人到底怎么想的?