第三章 笔记本电脑案例
3.1 案例介绍
定义USB接口(具备开启功能、关闭功能),笔记本要使用USB设备,即笔记本在生产时需要预留可以插入USB设备的USB接口,即就是笔记本具备使用USB设备的功能,但具体是什么USB设备,笔记本并不关心,只要符合USB规格的设备都可以。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范,不然鼠标和键盘的生产出来无法使用
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
- USB接口,包含开启功能、关闭功能
- 笔记本类,包含运行功能、关机功能、使用USB设备功能
- 鼠标类,要符合USB接口
- 键盘类,要符合USB接口
3.2 案例需求分析
阶段一:
使用笔记本,笔记本有运行功能,需要笔记本对象来运行这个功能
阶段二:
想使用一个鼠标,又有一个功能使用鼠标,并多了一个鼠标对象。
阶段三:
还想使用一个键盘 ,又要多一个功能和一个对象
问题:每多一个功能就需要在笔记本对象中定义一个方法,不爽,程序扩展性极差。
降低鼠标、键盘等外围设备和笔记本电脑的耦合性。
3.3 实现代码步骤
- 定义鼠标、键盘,笔记本三者之间应该遵守的规则
interface USB {
void open();// 开启功能
void close();// 关闭功能
}
- 鼠标实现USB规则
class Mouse implements USB {
public void open() {
System.out.println("鼠标开启");
}
public void close() {
System.out.println("鼠标关闭");
}
}
- 键盘实现USB规则
class KeyBoard implements USB {
public void open() {
System.out.println("键盘开启");
}
public void close() {
System.out.println("键盘关闭");
}
}
- 定义笔记本
class NoteBook {
// 笔记本开启运行功能
public void run() {
System.out.println("笔记本运行");
}
// 笔记本使用usb设备,这时当笔记本对象调用这个功能时,必须给其传递一个符合USB规则的USB设备
public void useUSB(USB usb) {
// 判断是否有USB设备
if (usb != null) {
usb.open();
usb.close();
}
}
public void shutDown() {
System.out.println("笔记本关闭");
}
}
public class Test {
public static void main(String[] args) {
// 创建笔记本实体对象
NoteBook nb = new NoteBook();
// 笔记本开启
nb.run();
// 创建鼠标实体对象
Mouse m = new Mouse();
// 笔记本使用鼠标
nb.useUSB(m);
// 创建键盘实体对象
KeyBoard kb = new KeyBoard();
// 笔记本使用键盘
nb.useUSB(kb);
// 笔记本关闭
nb.shutDown();
}
}
转载于:https://www.cnblogs.com/Colaandcookie/p/9563264.html
第三章 笔记本电脑案例相关推荐
- Google Web App开发指南第三章:案例研究
旅程计划应用(Wayfindit: Trip Planner App) 在大多数情况下,Wayfindit的应用必须有很好的易用性.旅行是一件很复杂的事情,不管是商业旅行还是休假旅行,一个顺利的旅程要 ...
- 以文件服务器为中央结点,电子商务概论案例第三章资料.ppt
电子商务概论案例第三章资料.ppt 第3章 电子商务相关技术 本章学习目标 计算机网络技术 互联网基础知识 Web应用技术 EDI技术 案例三 3.1计算机网络技术 3.1.1 计算机网络概述 3.1 ...
- Hadoop快速入门——第三章、MapReduce案例(字符统计)
Hadoop快速入门--第三章.MapReduce案例 目录 环境要求: 1.项目创建: 2.修改Maven 3.编码 4.本地文件测试 5.修改[Action]文件(修改测试文件路径) 6.导出ja ...
- 第三章--数据链路层
第三章--数据链路层 本章目录: 3.1使用点对点信道的数据链路层 3.1.1数据链路和帧 3.1.2三个基本问题 3.2点对点协议PPP 3.2.1PPP协议的特点 3.2.2PPP协议的帧格式 3 ...
- 高可用高性能负载均衡软件HAproxy详解指南-第三章:HAproxy实例
目录 haproxy案例1:定义独立日志文件 haproxy案例2:haproxy统计页面的输出机制 haproxy案例3:动静分离示例: haproxy案例4:实现web负载 haproxy案例5: ...
- 鸟哥的Linux私房菜(基础篇)-第三章、主机规划与磁盘分区(三.3. 安装Linux前的规划)
第三章.主机规划与磁盘分区 最近升级日期:2009/08/06 3. 安装Linux前的规划 3.1 选择适当的distribution 3.2 主机的服务规划与硬件的关系 3.3 主机硬盘的主要规划 ...
- 鸟哥的Linux私房菜(基础篇)-第三章、主机规划与磁盘分区(三.1. Linux与硬件的搭配)
第三章.主机规划与磁盘分区 最近升级日期:2009/08/06 1. Linux与硬件的搭配 1.1 认识计算机的硬件配备 1.2 选择与Linux搭配的主机配备: 硬件支持相关网站 1.3 各硬件装 ...
- 第二、三章:信息系统项目管理基础与立项管理-章节真题
一.单选题 1.( )不是项目目标特性. A.多目标性 B.优先性 C.独特性 D.层次性 2.某公司的组织结构如下图所示,( )不属于该组织结构类型的缺点 A.部门之间横向联系较少,不利于沟通.技术 ...
- ASP.NET Core 中文文档 第三章 原理(5)错误处理
原文:Error Handling 作者:Steve Smith 翻译:谢炀(Kiler) 校对:高嵩(jack2gs).何镇汐 当你的ASP.NET应用发生错误的时候, 你可以采用本文所述的各种方法 ...
最新文章
- matlab 基于 libsvm工具箱的svm分类遇到的问题与解决
- Windows10家庭版安装Hyper-V虚拟机
- TCP三次握手和四次挥手图示
- Google研究员Ilya Sutskever:成功训练LDNN的13点建议
- Python notes
- Python3 爬虫学习笔记 C18【爬虫框架 pyspider — 深入理解】
- require.js的笔记
- Java排序之归并排序
- HEVC---CompressCU 函数解析
- Master of Typing - Tutor for Mac(打字大师—盲打练习课程)
- 金蝶K3老单据下推老单据并修改字段名(以销售订单下推销售出库单为例,后台操作部分)
- 利用科学计算机转换角度,角度换算计算器(角度换算弧度计算器)
- 杰理AC632N蓝牙芯片iokey使用解析(通用MCU版)
- Python3简单的爬虫项目 爬取虎牙主播名字 人气
- Ambarella SDK build 步骤解析
- 【kali】kali2020.2安装 超级详细教程
- android recovery 和reboot
- 基音周期计算(pitch tracking)
- 大学生选课抢课如何提高选中概率
- python开发office插件_看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!...
热门文章
- 指针数组、数组指针、数组的区别与联系
- IAR中断定义#pragma vector = P0INT_VECTOR __interrupt void P0_ISR(void)啥意思?
- CSS 中功能相似伪类间的区别
- zTree新增的根结点再新增子节点reAsyncChildNodes不生效解决方案
- 开发者需要了解的WebKit
- 构建之法之单元测试及设计流程
- linux安装和配置 mysql、redis 过程中遇到的问题记录(转)
- 使用PowerShell收集客户端MAC地址
- 给Xshell设置舒适的配色方案
- 对硬连接与软件连接的理解