房产网站建设网站推广html网站标签
要求:某智能家居系统,可以让用户选择要控制的家用设备(电视机,空调...),并对他们进行打开和关闭的操作。
可以复习接口,多态,单例等等知识
步骤:
目标:面向对象编程实现智能家居控制系统(开和关的功能)
谁控制它们:智能控制系统(单例对象),控制调用设备的状态
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;@Overridepublic 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