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

Java 简单家居开关系统

1.需求:

面向对象编程实现智能家居控制系统(简单的开关)

2.实现思路

1.定义设备类:创建设备对象代表家里的设备

JD类:

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

@Data
@AllArgsConstructor
@NoArgsConstructor

//家电类
public class JD {
    private String name;
    private boolean status;//状态

}

Air类:

// 空调
public class Air extends JD {
    public Air(String name, boolean b) {
        super(name, b);
    }
}

 TV类:

// 电视
public class TV extends JD {
    public TV(String name, boolean b) {
        super(name, b);
    }
}

Light类:

// 灯
public class Light extends JD {
    public Light(String name, boolean b) {
        super(name, b);
    }
}

赋值:

        JD[] jds = new JD[3];
        jds[0] = new TV ("小米电视", true);
        jds[1] = new Air ("小米空调", false);
        jds[2] = new Light ("小米台灯", false);

 

 

2.创建开关接口 press() ,并在 JD 类中实现

开关接口:

// 接口
public interface Switch {
     void press();// 开关抽象方法
}

实现:

    @Override//实现按钮
    public void press() {
        status = !status;
    }

3.创建智能控制类和对象,进行开关操作(操作具体实现类)

Smart类:打印状态和进行开关操作

public class Smart {

    public void control(JD jd) {//控制开关
        System.out.println(jd.getName() + " 当前的状态: "+(jd.isStatus()?"开":"关"));
        System.out.println("按下开关");
        jd.press();//调用接口
        System.out.println(jd.getName() + " 当前的状态: "+(jd.isStatus()?"开":"关"));
    }

    public void print(JD[] jds) {//打印所有开关的状态
        for (int i = 0; i < jds.length; i++) {
            System.out.println((i+1) + jds[i].getName() + " 当前的状态: "+(jds[i].isStatus()?"开":"关"));
        }
            System.out.println("=======================");
    }
}

4.提示用户操作:使用循环,让用户输入设备编号,然后根据编号找到设备对象,调用开关方法

        Smart s = new Smart();
        while (true){
            //打印所有设备信息
            s.print(jds);
            System.out.println("请输入序号选择要控制的设备(exit 退出系统)");
            Scanner sc = new Scanner(System.in);
            String n = sc.next();
            switch (n) {
                case "1":
                    s.control(jds[0]);
                    break;
                case "2":
                    s.control(jds[1]);
                    break;
                case "3":
                    s.control(jds[2]);
                    break;
                case "exit":
                    System.out.println("退出系统");
                    return;
                default:
                    System.out.println("输入有误,请重新输入");
            }
        }

 3.结果输出

 4.完整代码

Test类:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

        JD[] jds = new JD[3];
        jds[0] = new TV ("小米电视", true);
        jds[1] = new Air ("小米空调", false);
        jds[2] = new Light ("小米台灯", false);

        Smart s = new Smart();
        while (true){
            //打印所有设备信息
            s.print(jds);
            System.out.println("请输入序号选择要控制的设备(exit 退出系统)");
            Scanner sc = new Scanner(System.in);
            String n = sc.next();
            switch (n) {
                case "1":
                    s.control(jds[0]);
                    break;
                case "2":
                    s.control(jds[1]);
                    break;
                case "3":
                    s.control(jds[2]);
                    break;
                case "exit":
                    System.out.println("退出系统");
                    return;
                default:
                    System.out.println("输入有误,请重新输入");
            }
        }
    }
}

JD类:

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

@Data
@AllArgsConstructor
@NoArgsConstructor

//家电类
public class JD implements Switch {
    private String name;
    private boolean status;//状态

    @Override//实现按钮
    public void press() {
        status = !status;
    }
}

 Air类:

// 空调
public class Air extends JD {
    public Air(String name, boolean b) {
        super(name, b);
    }
}

Light类:

// 灯
public class Light extends JD {
    public Light(String name, boolean b) {
        super(name, b);
    }
}

TV类:

// 电视
public class TV extends JD {
    public TV(String name, boolean b) {
        super(name, b);
    }
}

Switch接口:

// 接口
public interface Switch {
     void press();// 开关抽象方法
}

Smart类:

public class Smart {

    public void control(JD jd) {//控制开关
        System.out.println(jd.getName() + " 当前的状态: "+(jd.isStatus()?"开":"关"));
        System.out.println("按下开关");
        jd.press();//调用接口
        System.out.println(jd.getName() + " 当前的状态: "+(jd.isStatus()?"开":"关"));
    }

    public void print(JD[] jds) {//打印所有开关的状态
        for (int i = 0; i < jds.length; i++) {
            System.out.println((i+1) + jds[i].getName() + " 当前的状态: "+(jds[i].isStatus()?"开":"关"));
        }
            System.out.println("=======================");
    }
}


http://www.kler.cn/a/397461.html

相关文章:

  • 不用来回切换,一个界面管理多个微信
  • 自存 关于RestController请求传参数 前端和后端相关
  • 查询DBA_FREE_SPACE缓慢问题
  • Spring整合Redis
  • STM32 学习笔记-----STM32 的启动过程
  • 高亚科技签约美妥维志化工,提升业务协同与项目运营效率
  • HTML之表格学习记录
  • fine_tune_tansat2
  • 如何利用知识中台实现客户服务自动化?
  • SpringCloud-使用FFmpeg对视频压缩处理
  • WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇
  • STM32G4的数模转换器(DAC)的应用
  • 从客户需求视角去认识ZLG | 边缘计算网关多种应用
  • 2019计挑赛c语言
  • python的matplotlib实现数据分析绘图
  • 算法---找出一组序列中的第k小(大)的元素
  • 每日算法一练:剑指offer——栈与队列篇(1)
  • OTX 架构开发需求分析
  • JAVA_单例模式
  • 安全生产管理的重要性:现状、痛点与改进之路
  • Android 12.0 第三方app授予DeviceOwner权限调用系统reboot,显示隐藏app,锁屏,禁用app等功能系统层部分实现
  • Java中的HTML元素设置:背景、列表与超链接
  • Docker占用空间太大磁盘空间不足清理妙招
  • 深度学习在边缘检测中的应用及代码分析
  • 保存数据到Oracle时报错ORA-17004: 列类型无效: 1111
  • 【第四期书生大模型实战营基础岛】L1G4000——LlamaIndex+InternLM RAG 实践