已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器如下图(a)所示。该遥控器共有4今按钮,编号分别是0至3,按钮0和2能够遥控打开电器1和电器2,按钮1和3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如下图(b)所示。

图(b)中,类RomoteController的方法onPrcssButton(int button)表示当遥控器按键按下时调用的方法,参数为按键的编号;command接口中on和off方法分别用于控制电器的开与关;Light中turnLight(int degree)方法用于调整电灯灯光的强弱,参数 degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;TV中 sctChannel(int channel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。
【JAVA代码】
Command接口类:

interface Command {void on();void off();
}

Light 类:

class Light {public void turnLight(int degree){if(degree==0)System.out.println("关灯!");if(degree==100)System.out.println("开灯,且此时灯光亮度最大。");}
}

TV类:

class TV {public void setChannel(int channel){if(channel==0)System.out.println("关闭电视!");if(channel==1)System.out.println("打开电视,此时频道为1");}
}

LightCommand类:

class LightCommand implements Command{protected Light light;public void on(){light.turnLight(100);}public void off(){light.turnLight(0);}public LightCommand(Light light){this.light=light;}
}

TVCommand类:

class TVCommand implements Command{protected TV tv;protected int channel;public void on(){tv.setChannel(1);}public void off(){tv.setChannel(0);}public TVCommand(TV tv,int channel){this.tv=tv;this.channel=channel;}
}

RemoteController类:

class RemoteController {protected Command[] commands=new Command[4];public void onPressButton(int button){if(button % 2 == 0){    System.out.println("开");commands[button].on();}else {System.out.println("关");commands[button].off() ;}}public void setCommand(int button,Command command){commands[button]=command;}
}

Test测试类:

import java.util.Scanner;public class Test {public static void main(String [] args){System.out.println("-------遥控器-------");System.out.println("             开"+"   关");System.out.println("电灯        "+'0'+"  "+'1');System.out.println("电视        "+'2'+"  "+'3');@SuppressWarnings("resource")Scanner s=new Scanner(System.in);int x=s.nextInt();LightCommand lightCommand=new LightCommand(new Light());TVCommand tvCommand=new TVCommand(new TV(),x);RemoteController remoteController=new RemoteController();if(x<=1){remoteController.setCommand(x,lightCommand);}else {remoteController.setCommand(x, tvCommand);}remoteController.onPressButton(x);}
}

Java面向对象学习:遥控器相关推荐

  1. JAVA面向对象学习心得

    JAVA面向对象学习心得 ​ Java是面向对象编程的语言,在学习完Java基础语法后,下一个内容就是面向对象的内容了.那么什么是面向对象呢?下面就简单解释一下. 面向过程编程和面向对象编程 ​ 提到 ...

  2. Java面向对象学习练习———潜艇游戏(飞机游戏)

    潜艇游戏需求: 所参与的角色: 战舰.深水炸弹.侦察潜艇.鱼雷潜艇.水雷潜艇.水雷 角色间的关系: 战舰发射深水炸弹 深水炸弹可以打潜艇(侦察潜艇.鱼雷潜艇.水雷潜艇),若打中: 潜艇消失.深水炸弹消 ...

  3. Java 面向对象学习一周小结

    面向对象 一周小结 面向对象基础 面向对象和面向过程的区别 面向对象的三大特征 面向对象思想: 方法定义格式 栈.堆.方法区储存对象区别 构造函数 命名方法 作用 特点 方法重载 匿名对象 面向对象进 ...

  4. JAVA面向对象学习笔记

    一.类.对象 小车 颜色 速度 座位 //类要用class定义 //在class类里面的变量都是成员变量,成员变量直接写在:类中的变量 public class T1 { //类String colo ...

  5. Java面向对象学习笔记 -- 6(内部类、Timer)

    1. 内部类 内部类就是在一个类的内部定义的类,有:静态内部类.成员内部类,局部内部类.匿名内部类. -1) 静态内部类:使用static修饰,声明在类体中, 静态内部类中可以访问外部类的静态成员,开 ...

  6. java opp 是什么意思_Java面向对象学习

    Java面向对象学习 面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考.最后,才对某个分类下的细节进行面向过程的思索 面向对象适合处理复杂的问题, ...

  7. java类的心得_java面向对象学习心得3篇

    日记网 >> 专题 java面向对象学习心得3篇 更新时间:2018/6/15 8:27:00  点击率:937  手机版 java面向对象学习心得3篇来自简单日记网精选推荐.在面向对象的 ...

  8. 三篇文章彻底搞懂Java面向对象之一

    写在前面,Java基础系列文章都是作者基于b站尚硅谷的Java基础视频所做的笔记,没有时间的同学可以认真看看,如果有时间的同学,还是建议看看视频,毕竟笔记说到底还是自己的东西,每个人的习惯也是不一样的 ...

  9. 华清远见-JAVA面向对象简单总结

    以下是一个Java初学者对Java面向对象学习的简单总结,可能有些地方说的不是很对或不是很全面,望谅解. 在学习java面向对象时,首先,我们要搞清楚java面向过程和面向对象编程思想的区别.对于面向 ...

  10. 我的《翁恺Java面向对象程序设计》同步笔记

    边看视频边记录的,翁恺视频中的项目代码都放里面了. 一些图表关系也高清重置了. JAVA/面向对象学习笔记(1) | 轻笑Chuckle所看教程(视频):<浙江大学-翁恺-Java-面向对象程序 ...

最新文章

  1. NSString属性什么时候用copy,什么时候用strong?
  2. 仅一台摄像机即可进行3D身体重建
  3. 计算机系统的储存器结构
  4. C# CheckBox与RadioButton
  5. “开启IT管理新时代”惠普软件客户论坛圆满闭幕
  6. Redis安装-win-linux-mac
  7. 工厂方法模式(Factory Method Pattern)
  8. 元素上下层叠关系总结
  9. 蓝牙怎么区分单模和双模_小院闲聊#01#——蓝牙的发展和不同蓝牙之间的关系...
  10. JAVA中“:”的用法详解
  11. 微信微调助手WeChatTweak for mac(微信多开和防撤回工具)最新版
  12. 51Nod-1486 大大走格子
  13. retrofit2 上传图片
  14. MSAgent 详细解说(下)
  15. python对接INVEST和ARCGIS
  16. 优秀宝宝都有的6个特点
  17. 梦殇 chapter three
  18. Mono.Cecil - 0.6
  19. 微信公众平台开发(49)物联网硬件设备控制技术
  20. 冰雪之城鸿蒙碎片,冰雪之城地图推荐:

热门文章

  1. kindle长时间不用,屏幕显示电池感叹号,一直充电没反应,试了网上的方法都不好用,到亚马逊官网找到了解决办法
  2. 值得收藏 | 关于机器学习,这可能是目前最全面最无痛的入门路径和资源!
  3. route 不同路由器 windows_如何检查路由器WiFi信号的好坏?
  4. 如何使服务器信号加强,增强路由器信号的操作方法
  5. 技巧篇 之 Just do it (这将会是一个漫长的历程。。。)
  6. Cannot deploy artifacts when Maven is in offline mode
  7. 近端策略优化(proximal policy optimization)算法简述
  8. 机器学习经典模型简单使用及归一化(标准化)影响
  9. C++/EasyX面向对象编程实现-简单双人对战五子棋
  10. 工具类之十七 基于zxing的二维码生成工具类