接口基础-智能家居控制系统

目录

案例要求

实现思路

代码

Main

JD

TV

Lamp

WashMachine

Air

Switch

OperateStatus

总结:


案例要求(融合单例模式)

实现思路

实体类,按按钮设置接口,JD设置家电父类,子类有灯,空调,电视,洗衣机继承JD,JD实现按钮,便于子类能实现控制开关的功能,设置一个实现类,实现展示所有电子设备和开关的功能

代码

Main

import java.io.IOException;
import java.util.Scanner;//TIP 要<b>运行</b>代码,请按 <shortcut actionId="Run"/> 或
// 点击装订区域中的 <icon src="AllIcons.Actions.Execute"/> 图标。
public class Main {static Scanner sc = new Scanner(System.in);public static void main(String[] args) throws IOException, InterruptedException {JD [] jds= new JD[4];jds[0]=new Air("空调",true);jds[1]=new WashMachine("洗衣机",true);jds[2]=new Lamp("灯泡",true);jds[3]=new TV("电视机",true);OperateStatus os = OperateStatus.getInstance();while (true) {os.printAllStatus(jds);System.out.println("请选择你要操作的电器:1.空调 2.洗衣机 3.灯泡 4.电视机 exit.退出");String choice= sc.next();switch (choice){case "1":os.control(jds[0]);break;case "2":os.control(jds[1]);break;case "3":os.control(jds[2]);break;case "4":os.control(jds[3]);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;@Overridepublic void opress() {status=!status;}
}

TV

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

Lamp

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

WashMachine

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

Air

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

Switch

public interface Switch {public void opress();
}

OperateStatus

public class OperateStatus {public  static final OperateStatus os = new OperateStatus();private  OperateStatus(){}public static OperateStatus getInstance(){return os;}public void printAllStatus(JD[] jds){for (JD jd:jds){System.out.println("当前设备为: "+jd.getName()+"开关状态:"+(jd.isStatus()?"开着":"关着"));}}public void control(JD jd) {System.out.println("当前设备状态为"+((jd.isStatus())?"开着":"关着"));System.out.println("开始您的操作...");jd.opress();System.out.println("当前设备状态为"+((jd.isStatus())?"开着":"关着"));System.out.println("操作结束...");}
}

总结:

摘要:该程序实现了一个家电控制系统,采用面向对象设计。JD类作为家电父类实现了Switch接口的开关功能,被子类Air(空调)、WashMachine(洗衣机)、Lamp(灯泡)和TV(电视机)继承。OperateStatus类负责展示设备状态和开关控制。主程序Main创建家电数组,通过循环菜单让用户选择设备进行开关操作。系统使用Lombok简化代码,实现了设备状态的实时显示和切换功能。该设计体现了继承、接口和多态等面向对象特性,提供了简洁的家电控制解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/120365.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用el-table实现的可编辑的动态表格组件

用el-table实现的可编辑的动态表格组件需求说明实现效果代码需求 点击单元格可编辑内容右键单元格可选择"向下合并"或"拆分"点击"新增行"按钮添加新行点击"删除"按钮删除行&#xff08;不能删除被合并的行&#xff09; 说明 仅选择…

动手学习深度学习-深度学习知识大纲

使用数据集训练一个模型的过程&#xff1a;1、构造随机初始化参数的模型2、获取数据集3、构造损失和优化器用于调整参数&#xff0c;使模型在数据样本中表现更好4、重复第2步和第3步1、机器学习组件1.1、数据处理&#xff08;包含一定数学知识&#xff09;数据样本/数据点/数据…

选择跨网文件交换系统的核心因素有哪些?

在数字化进程加速的今天&#xff0c;企业常面临办公网、生产网、研发网等多网络环境并存的情况。传统的U盘拷贝或FTP传输方式&#xff0c;不仅效率低下&#xff0c;更存在严重的安全与管理隐患——例如明文传输导致的数据泄露、缺乏审计日志引发合规风险&#xff0c;以及面对TB…

中兴通讯联合深兰科技发布“AI问诊助手智能体”全场景解决方案

2025年7月26日&#xff0c;2025世界人工智能大会(WAIC2025)在上海开幕。全球领先的ICT解决方案提供商中兴通讯以“算力普惠 AI向实”为主题参展&#xff0c;围绕AI与产业深度融合&#xff0c;突出智算基础设施、行业大模型、全场景AI应用三大领域的创新&#xff0c;强调通过“连…

【AI大模型】披着羊皮的狼--自动化生成越狱提示的系统(ReNeLLM)

南京大学 & 美团联合团队发表了一篇 NAACL 2024 论文《A Wolf in Sheep’s Clothing: Generalized Nested Jailbreak Prompts can Fool Large Language Models Easily》&#xff08;披着羊皮的狼&#xff09;。非常有意思的名字&#xff0c;他们提出了一套名叫 ReNeLLM 的自…

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | VerifyAccountUi(验证码组件)

&#x1f4c5; 我们继续 50 个小项目挑战&#xff01;—— VerifyAccountUi组件 仓库地址&#xff1a;https://github.com/SunACong/50-vue-projects 项目预览地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 <script setup> 语法结合 Tailwind CS…

Solana新手上路:完成第一笔SOL转账

大家好&#xff01;如果大家正对Solana生态系统充满好奇&#xff0c;渴望在代码层面与这个高性能区块链进行第一次“亲密接触”&#xff0c;那么来对地方了。今天&#xff0c;我们将一起完成一件激动人心的事情&#xff1a;通过编写一段简单的JavaScript代码&#xff0c;在Sola…

jangow-01-1.0.1靶机教程攻略

第一步搭建环境 靶机下载地址&#xff1a;https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 下载好了直接用VM打开 右击虚拟机设置&#xff0c;网络连接改成nat模式 第二步信息收集 开启虚拟机&#xff0c;右击编辑查看一下靶机的网段 用cali的nmap扫一下 nmap 1…

Linux和shell

最快入门的方式是使用苹果系统。此外&#xff0c;累计补充学习&#xff1a;一、目录结构/bin&#xff0c;二进制文件 /boot&#xff0c;启动文件 /dev&#xff0c;设备文件 /home&#xff0c;主目录&#xff0c;一般外接包、安装包放在这里 /lib&#xff0c;库文件 /opt&#x…

机器学习之逻辑回归(Logistic Regression)

一、什么是逻辑回归 逻辑回归也称作logistic回归分析&#xff0c;是一种由线性回归衍生出来的分析模型&#xff0c;属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程&#xff0c;但实际上主要是用来解决二分类问题&#xff08;也可以解决多分类问题&#x…

mac环境配置rust

rustup 是一个命令行工具&#xff0c;用于管理 Rust 编译器和相关工具链 sh 体验AI代码助手 代码解读复制代码curl --proto ‘https’ --tlsv1.2 -sSf https://sh.rustup.rs | sh使得 Rust 的安装在当前 shell 环境中生效 如果你使用的是 bash, zsh 或其他类似的 shell&#xf…

LPC2132GPIO

LPC2132具有多达47个通用I/O口&#xff08;GPIO&#xff0c;General I/O port&#xff09;&#xff0c;分别为P0[31:0]、P1[31:16]&#xff0c;其中&#xff0c;P0.24未用&#xff0c;P0.31仅为输出口。由于口线与其它功能复用&#xff0c;需要进行相关的管脚连接模块&#xff…

【AlphaFold3】网络架构篇(2)|Input Embedding 对输入进行特征嵌入

博主简介&#xff1a;努力学习的22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a; Yaoyao2024往期回顾&#xff1a;【AlphaFold3】网络架构篇&#xff08;1&#xff09;|概览预测算法每日一言&#x1f33c;: 去留无意&#xff0c;闲看庭前花开花落&#xff1b…

【传奇开心果系列】Flet框架左右两边堆叠图片前移补位轮播组件自定义模板

一、效果展示GIF动图二、使用场景介绍 Flet左右两边堆叠图片前移补位轮播组件 是一个基于 Flet 框架的自定义组件&#xff0c;适用于需要展示多张图片并实现动态轮播效果的应用场景。该组件特别适合用于以下场景&#xff1a; 产品展示&#xff1a;在电商网站或应用中&#xff0…

【Kubernetes 指南】基础入门——Kubernetes 201(三)

三、资源限制- Kubernetes 通过 cgroups 提供容器资源管理的功能&#xff0c;可以限制每个容器的 CPU 和内存使用&#xff0c;比 如对于上一讲创建的 deployment&#xff1b;- 可以通过下面的命令限制 nginx 容器最多只用 50% 的 CPU 和 128MB 的内存&#xff1a;- 这等同于在每…

【目标检测】d-fine模型部署

官网介绍显示&#xff0c;d-fine模型效果很好&#xff0c;例如下图中&#xff0c;非常模糊的人也能被识别出来。官网教程有些细节没写&#xff0c;这里补充一下。1.数据格式 数据长这样&#xff08;图中的unrrelated_pic无用&#xff09;。具体的格式可以由大模型生成。我这里有…

用 AI 解析采购订单,从上传到自动生成 Draft 订单全流程实战

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

远程仓库地址发生变化

代码写着写着&#xff0c;组长突然说git地址迁移了&#xff0c;让我把自己的代码也迁移过去。以前没遇到过&#xff0c;今天试了试&#xff0c;迁移成功了&#xff0c;值得记录一下。一、场景1首先是最简单的场景&#xff0c;新建的仓库是空的&#xff0c;然后本地代码在master…

【硬件-笔试面试题】硬件/电子工程师,笔试面试题-48,(知识点:BUCK电路的损耗,开关损耗,导通损耗,电感损耗、驱动损耗)

目录 1、题目 2、解答 一、开关损耗&#xff08;Switching Losses&#xff09; &#xff1a;与开关频率成正比&#xff0c;但提高频率&#xff0c;可减小所需电感电容的体积&#xff0c;需平衡 二、导通损耗&#xff08;Conduction Losses&#xff09;&#xff1a;与导通时…

机械零件深凹槽检测方法的探究 - 激光频率梳 3D 轮廓检测

一、引言在机械制造领域&#xff0c;机械零件深凹槽的检测质量直接影响设备的性能与可靠性。以航空发动机止动螺母为例&#xff0c;其矩形凹槽深度公差通常在微米级&#xff0c;传统检测方法面临诸多挑战。平台推表检测法因基准不重合导致误差较大&#xff0c;工作型三坐标测量…