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