Java零基础学习Day11——智能家居控制系统

案例

要求制作一款某智能家居系统,可以让用户选择要控制的家用设备(吊灯,电视机,洗衣机,落地窗),并可以对他们进行打开or关闭操作

package com.iteheima.interface1.demo;

public interface Switch {
    void press();//按压
}

Switch.java

package com.iteheima.interface1.demo;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        //目标:面向对象编程实现智能家居系统
        //角色:各种设备
        //功能:开和关
        //谁来控制:智能控制系统(单例对象)
        //1.定义设备类:创建设备对象代表家里的设备
        //2.准备这些设备对象,放到数组中,代表整个家庭的设备
        //3.为每个设备指定一个开关功能,定义一个接口,让JD实现开关功能
        //4.创建智能控制类,控制设备开关

        JD[] jds = new JD[4];
        jds[0] = new TV("小米电视",true);
        jds[1] = new WashMachine("美的洗烘一体机",true);
        jds[2] = new Lamp("Philips灯泡",true);
        jds[3] = new Air("美的空调",true);

        SmartHomeControl shc = new SmartHomeControl();
        //5.控制电视机
        SmartHomeControl.control(jds[0]);

        //6.提示用户操作:展示全部设备的当前情况;让用户选择设备进行操作
        System.out.println("请选择设备进行操作:");
        Scanner sc = new Scanner(System.in);
        String command = sc.next();
        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":
                SmartHomeControl.control(jds[4]);
        }

    }
}

Text.java

package com.iteheima.interface1.demo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class JD implements  Switch{
    private String name;
    //状态:控制开和关
    private boolean isOpen;

    @Override
    public void press() {
        //状态取反,控制设备开和关
        isOpen = !isOpen;
    }
}

JD.java

package com.iteheima.interface1.demo;

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

WashMachine.java

package com.iteheima.interface1.demo;

public class TV extends JD{
    public TV(String name, boolean isOpen) {
        super(name, isOpen);//调用父类的构造方法
    }
}

TV.java

package com.iteheima.interface1.demo;

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

Air.java

package com.iteheima.interface1.demo;

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

Lamp.java

package com.iteheima.interface1.demo;
//智能控制系统
public class SmartHomeControl {
    //多态
    public static void control(JD jd){
        System.out.println("按下了"+jd.getName()+(jd.isOpen()?"关":"开"));
        System.out.println("开始您的操作");
        jd.press();
        System.out.println("按下了已经是"+jd.getName()+(jd.isOpen()?"关":"开"));
    }

    public  void  printAllStatus(JD[] jds){
        for (int i = 0; i < jds.length; i++) {
            System.out.println("名称:"+jds[i].getName()+"  状态:"+jds[i].isOpen());
        }
    }
}
SmartHomeControl.java

总结

通过面向对象编程控制家用设备的开关状态。系统定义了Switch接口和JD基类,创建了电视机、洗衣机、灯泡和空调等具体设备类。智能控制类SmartHomeControl通过多态方式统一管理设备开关操作,用户可通过命令行选择设备进行控制。各设备状态通过isOpen属性维护,press()方法实现状态切换。系统采用单例模式管理控制中心,并支持查看所有设备状态,实现了基本的智能家居控制功能。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值