概述
文章目录
- 一.编程要求
- 二.程序分析
- 1.接口类定义
- 2. 电视类的定义:
- 3.其余家电类定义:
- 风扇类:
- 空调类:
- 用户类:
- Demo类测试:
- 三.总结
- 1.接口实现
- 2.方法的覆盖
- 3.功能实现
一.编程要求
韩国某家电公司为本公司所有电器设计了一个通用的遥控器,遥控器能发送“on,off,up,down…”等信号给电器,所有电器均能接受该遥控器上的信号,并完成相应的操作。
现有一用户朝着电视按“开”,电视就开了,按“上”,电视音量就调大了…之后,用户朝着风扇按“开”,风扇就开了,按“上”,风扇转速就调大了…
编写:
家电接口(Appliance,方法:recive)、
电视类(Tv,属性:音量 volume,重写 recive)、
风扇类(Fan,属性:速度 speed,重写 recive)、
空调类(AirCond,属性:温度 tempe,重写 recive)、
用户类(User,属性:家电,方法:朝向 toward(Appliance app)、按 press(String key))、
Demo类,实现上述用户操作过程。
二.程序分析
1.接口类定义
-
- 家电接口作为一个接口,内部只能为常量和一些抽象的(即未被实现的)方法,根据题目要求,该接口中需要定义一个抽象方法:
public abstract void recive(String key);
2. 电视类的定义:
-
类名
public class Tv implements Appliance
-
属性:
private int volume;//音量 private boolean status;//状态 public int getVolume() { return volume; } public boolean isStatus() { return status; }
-
方法:
@Override public void recive(String key) { // TODO 自动生成的方法存根 if(key.equals("on")) { if(status!=false) System.out.println("电视当前为开启状态,请勿重复操作!"); else { System.out.println("电视已开启!"); status = true; } } else if(key.equals("off")){ if(status!=true) System.out.println("电视当前为关闭状态,请勿重复操作!"); else { System.out.println("电视已关闭!"); status = false; } } else if(key.equals("up")) { if(status!=true)//对电视状态进行判断,若为关闭,则无法进行操作 System.out.println("电视为关闭状态,无法操作!"); else { if(this.volume==100) System.out.println("电视音量已最大!"); else { this.volume+=10; System.out.println("当前音量为: "+this.volume); } } } else if(key.equals("down")) { if(status!=true) System.out.println("电视为关闭状态,无法操作!"); else { if(this.volume==0) System.out.println("电视音量已最小!"); else { this.volume-=10; System.out.println("当前音量为: "+this.volume); } } } }
3.其余家电类定义:
- 与电视类相似,直接给出代码:
风扇类:
-
public class Fan implements Appliance { private int speed; private boolean status; public int getSpeed() { return speed; } public boolean isStatus() { return status; } @Override public void recive(String key) { // TODO 自动生成的方法存根 if(key.equals("on")) { if(status!=false) System.out.println("风扇当前为开启状态,请勿重复操作!"); else { System.out.println("风扇已开启!"); status = true; } } else if(key.equals("off")){ if(status!=true) System.out.println("风扇当前为关闭状态,请勿重复操作!"); else { System.out.println("风扇已关闭!"); status = false; } } else if(key.equals("up")) { if(status!=true) System.out.println("风扇为关闭状态,无法操作!"); else { if(this.speed==100) System.out.println("风扇转速已最大!"); else { this.speed+=10; System.out.println("当前转速为: "+this.speed); } } } else if(key.equals("down")) { if(status!=true) System.out.println("风扇为关闭状态,无法操作!"); else { if(this.speed==0) System.out.println("风扇转速已最小!"); else { this.speed-=10; System.out.println("当前转速为: "+this.speed); } } } } }
空调类:
-
public class AirCond implements Appliance { private int tempe = 16; private boolean status; public int getTempe() { return tempe; } public boolean isStatus() { return status; } @Override public void recive(String key) { // TODO 自动生成的方法存根 if(key.equals("on")) { if(status!=false) System.out.println("空调当前为开启状态,请勿重复操作!"); else { System.out.println("空调已开启!"); status = true; } } else if(key.equals("off")){ if(status!=true) System.out.println("空调当前为关闭状态,请勿重复操作!"); else { System.out.println("空调已关闭!"); status = false; } } else if(key.equals("up")) { if(status!=true) System.out.println("空调为关闭状态,无法操作!"); else { if(this.tempe==30) System.out.println("空调温度已最大!"); else { this.tempe+=1; System.out.println("当前温度为: "+this.tempe); } } } else if(key.equals("down")) { if(status!=true) System.out.println("空调为关闭状态,无法操作!"); else { if(this.tempe==16) System.out.println("空调温度已最小!"); else { this.tempe-=1; System.out.println("当前温度为: "+this.tempe); } } } } }
用户类:
-
public class User{ private Appliance app; public Appliance getApp() { return app; } public void toward(Appliance app) { this.app = app; } public void press(String key) { this.app.recive(key); } }
Demo类测试:
-
import java.util.Scanner; public class Demo { static Tv tv = new Tv(); static Fan fan = new Fan(); static AirCond airCond = new AirCond(); public static void eleSelecMenu() { System.out.println("======================"+"n"+ "*******家电选择菜单*******"+"n"+ "======================"+"n"+ "1.电视t2.风扇t3.空调"+"n"+ "请输入你的选择:"); } public static void funSelecMenu() { System.out.println( "======================"+"n"+ "*******按键选择菜单*******"+"n"+ "======================"+"n"+ "1.ont2.offn"+ "3.upt4.down"+"n"+ "5.返回上一级菜单"+"n"+ "请输入你的选择:"); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); User xy = new User(); String[] function = {"","on","off","up","down"}; while(true) { int app,fun; eleSelecMenu(); app = sc.nextInt(); switch(app) { case 1: xy.toward(tv); while(true) { funSelecMenu(); fun = sc.nextInt(); if(fun!=5) xy.press(function[fun]); else break; } System.out.println("当前电视状态:"+(tv.isStatus()!=true?"关闭 ":"开启 ")+"音量为:"+tv.getVolume()); break; case 2: xy.toward(fan); while(true) { funSelecMenu(); fun = sc.nextInt(); if(fun!=5) xy.press(function[fun]); else break; } System.out.println("当前风扇状态:"+(fan.isStatus()!=true?"关闭 ":"开启 ")+"转速为:"+fan.getSpeed()); break; case 3: xy.toward(airCond); while(true) { funSelecMenu(); fun = sc.nextInt(); if(fun!=5) xy.press(function[fun]); else break; } System.out.println("当前空调状态:"+(airCond.isStatus()!=true?"关闭 ":"开启 ")+"温度音量为:"+airCond.getTempe()); break; } } } }
三.总结
1.接口实现
- 接口需要子类去实现,类似于继承关系
- 接口可以类似于父类一样作为引用变量,来指向自己方法所实现的子类对象
- 运用接口可以实现比多继承更强大的功能(统一规范)
2.方法的覆盖
- 用于子类对父类方法的覆盖,实现方式为:方法与父类相同(区别于重载)
- 子类对接口的实现,类似于覆盖(体现了多态性)
3.功能实现
- 电器的开关,利用一个状态变量status来确定,并给出相应的条件判断
- Demo 类中对对象的协调,体现了结构化设计
- 界面的友好性,是程序的一大特点
最后
以上就是轻松麦片为你收集整理的Java编程题之家电思路总结的全部内容,希望文章能够帮你解决Java编程题之家电思路总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复