1、任务五:USB接口模拟程序设计,单元二:面向对象程序设计,教学目标,知识目标掌握Java接口的概念;理解面向接口编程的思想;掌握面向接口编程步骤;掌握接口中常量使用方法。,能力目标能够使用接口技术完成程序结构的设计;能够运用接口的多态技术解决实际问题。,教学内容,4,任务陈述,1,2,3,知识准备,任务实施,任务拓展,任务实训,5,任务描述: 电脑主板上的USB接口有严格的规范,U盘、移动硬盘的内部结构不相同,每种盘的容量也不同,但U盘、移动硬盘都遵守了USB接口的规范,所以,在使用USB接口时,可以将U盘、移动硬盘插入任意一个USB接口,而不用担心哪个USB接口是专门插哪个盘。请编写程序,模
2、拟使用USB接口的过程。运行结果:,1. 任务陈述,2. 知识准备,2.14 Java接口,购买USB 电脑鼠标一般情况下买回来都可以直接使用。其原因就是USB 接口是统一的,都实现了鼠标的基本功能。所有的厂家都会按照一个规范来制造。这个规范说明制作该USB类型的鼠标应该做些什么,但并不说明如何做。同样,电脑主板上的PCI插槽的规范也类似于鼠标。,主板插槽,2. 知识准备,2.16.1接口的概念 Java 程序设计中的接口(Interface)也是一种规范,是用来组织应用程序中的类,并调节它们的相互关系。接口是由常量和抽象方法组成的特殊类,是对抽象类的进一步抽象,形成了一个属性和行为的介绍集合
3、,该集合通常代表了一组功能的实现。 Java的单继承性使得Java简单,易于管理程序。但为了能够实现多继承,Java使用了接口,一个类可以实现多个接口。,【提 示】 在最早期的面向对象语言中不是使用interface关键字,而是使用protocal。从这个词汇中可以看出接口最核心的意义是一个协议,一个规定了一组功能的协议。既然有协议的意思,那么协议中将要说明需要遵守的条约,相当于抽象方法。然而协议中一般不去理会到底如何实现条约方式,这进一步说明了使用抽象方法的意义。,2. 知识准备,2.16.2接口的声明 格式:public interface 接口名 extends 接口1,接口2 publ
4、ic static final 数据类型 常量名=常量值; public static abstract 返回值 抽象方法名(参数列表);接口的访问修饰符只有public一个;接口可以被继承,它将继承父接口中的所有方法和常量;接口体只包含两部分,一是常量;而是抽象方法;接口中的常量必须赋值,并且接口中的属性都被默认为是final来修饰的常量;接口中的所有的方法都必须是抽象方法,抽象方法不需要使用abstract关键字声明,直接默认为是抽象的。,2. 知识准备,2.16.3接口的实现和使用 接口里只有抽象方法,它只要声明而不用定义处理方式,没有办法直接实例化出对象。利用接口打造新的类的过程,称之
5、为接口的实现(implementation),同时实现了接口的类称之为接口实现类。接口实现使用关键字implements,格式如下:class 类名称 implements 接口A,接口B / 接口的实现 【实例2-13】接口实现程序设计,2. 知识准备,2.17接口与多态 接口与它的实现类之间存在实现关系,同时也就具有继承关系。因此接口可以像父类子类一样使用多态技术,其中接口回调就是多态技术的体现。接口回调是指:可以将接口实现类的对象赋给该接口声明的接口变量中,那么该接口变量就可以调用接口实现类对象中的方法。【实例2-14】接口回调的例子不同的类在使用同一接口时,可能具有不同的功能体现,即接
6、口实现类的方法体不必相同,因此,接口回调可能产生不同的行为。,2. 知识准备,2.18面向接口编程的步骤面向接口编程思想:接口体现了规范与分离的设计原则,可以很好地降低程序各模块之间的耦合度,提高系统的可扩展性,可维护性。开发系统时,主体构架使用接口来构成系统的骨架,这样就可以通过更换接口的实现类来更换系统的实现。【实例2-15】有一打印中心,既有黑白打印机,也有彩色打印机,在打印时,使用不同的打印机,打印也就不同。采用面向接口编程的思想编程。,2. 知识准备,第一步:抽象出Java接口分析:黑白、彩色打印机都存在一个共同的方法特征:print;黑白、彩色打印机对print方法有各自不同的实现
7、。结论:抽象出Java接口PrinterFace,在其中定义方法print。具体实现:public interface PrinterFace /打印机接口public void print(String content);public interface Printer /打印社的打印接口public String detail();,2. 知识准备,第二步:实现Java接口分析:已经抽象出Java接口PrinterFace,并在其中定义了print方法黑白、彩色打印机对print方法有各自不同的实现。结论:黑白、彩色打印机实现PrinterFace接口,各自实现print方法。具体实现:p
8、ublic class BlackPrinter implements PrinterFace public void print(String content) System.out.println(黑白打印:); System.out.println(content); public class ColorPrinter implements PrinterFace public void print(String content) System.out.println(彩色打印:); System.out.println(content);,2. 知识准备,第三步:使用Java接口分析:
9、主体构架使用接口, 让接口构成系统的骨架。结论:更换实现接口的类就可以更换系统的实现。具体实现:public class PrinterCentre implements Printer private PrinterFace printerface; /打印机接口 public void setPrinter(PrinterFace pf) this. printerface = pf; public String detail() return 这里是打印中心; public void printph(Printer pf) printerface.print(pf.detail(); /
10、 打印Printer接口信息 ,public class Test public static void main(String args) PrinterCentre pc=new PrinterCentre();/创建打印中心pc.setPrinter(new BlackPrinter();/配备黑色打印机pc.printph(pc);/打印pc.setPrinter(new ColorPrinter();/配备彩色打印机pc.printph(pc);/打印,2. 知识准备,2.19接口中常量的使用 在Java 接口中只能存在常量,在编译时会自动加上static final的修饰符,即声明
11、为常量,因而Java接口通常是存放常量的最佳地点。【实例2-16】接口中的常量程序设计interface Cons / 定义接口 final String name = this is my name;class Const implements Cons public class TestInterfaceConst public static void main(String s) Const cons = new Const();String name = Cons.name;/静态变量System.out.println(name);String n = cons.name;Syste
12、m.out.println(n);,1. 实现思路 USB接口可以使用U盘、移动硬盘,完成插入、启动、停止的功能。当U盘或移动硬盘插入USB接口时,它们的表现是不一样的。作为USB接口的接口,有两个抽象方法,但无法实现具体的功能。这些功能留在U盘或移动硬盘实现类中去完成。打开Eclipse,定义一个USB接口得到接口的框架;在接口中进行抽象方法声明编写测试类进行测试。,3. 任务实施,2.程序代码public interface USBInterface /相当于主板上的USB接口的规范public void start(); public void Conn();public void st
13、op();public class MouseInterface implements USBInterfacepublic void start()/实现抽象方法System.out.println(鼠标插入,开始使用);/省略其他方法的实现public class MovingDisk implements USBInterfacepublic void start()/实现接口的抽象方法System.out.println(移动存储设备插入,开始使用); /省略其他方法的实现,3. 任务实施,2.程序代码public class Keyboard implements USBInterf
14、acepublic void start()/实现接口的抽象方法System.out.println(键盘插入,开始使用);public static void main(String args) USBInterface usb1 = new MovingDisk();/将移动硬盘插入USB接口1USBInterface usb2 = new MouseInterface();/将鼠标插入USB接口2USBInterface usb3 = new Keyboard();/将键盘插入USB接口2usb1.start();usb1.Conn();usb1.stop();,3. 任务实施,4. 任
15、务拓展,在原任务上完成接口的多态处理技术实现增加主板类,再修改UseUSB类,将USB接口安装在主板上,然后在UseUSB类中将移动硬盘插入到主板的USB接口中。class MainBoardpublic void useUSB(USBInterface usb)/插入符合USB接口规范的盘 usb.start();usb. Conn();usb.stop();public class UseUSB public static void main(String args) MainBoard mainBoard=new MainBoard();USBInterface usb1=new MovingDisk(); /在USB接口1上插入移动硬盘mainBoard. useUSB (usb1);,一、实训目的二、实训内容三、简要提示四、实训思考,5. 任务实训,