Java程序设计教程第11章 接 口

合集下载

JAVA语言程序设计教程第11章Java网络编程

JAVA语言程序设计教程第11章Java网络编程
其中,remoteAddr和remotePort指明了接收方的地址。接 收包裹时,通常只关注包裹的内容,此时常用的构造函数则是: DatagramPacket(byte[ ] data, int length);
14
第11章 Java网络编程 数据报套接字DatagramSocket有两个常用的构造函数,分
别是不带参数的DatagramSocket()和指定端口号的 DatagramSocket(int port)。由于UDP协议是面向无连接的,数 据报的接收方不关注数据报是由哪个端口发出的,因此无参数 的数据报套接字通常用于发送数据报,此时发送端口号由系统 分配。指定端口号的数据报套接字则常用于监听、接收数据报。
2
第11章 Java网络编程 1. 网络地址的表示 IPv4(Internet Protocol Version 4)使用4个字节(32比特)来表
示一个IP地址。为了阅读方便,我们通常将每个字节表示成一 个十进制数,字节间用“.”隔开。例如IP地址:
11001101 10110001 00001011 11001011 我们通常表示为 205 . 177 . 11 . 203
9
第11章 Java网络编程 System.out.println(remoteAddress); } catch(UnknownHostException e){ System.out.println(“获取不到主机地址”); } } } 程序运行结果如图11.2所示。
10
ห้องสมุดไป่ตู้
第11章 Java网络编程 图11.2 例11-2运行结果
3
第11章 Java网络编程 2. 获取本机地址 在Java中,使用InetAddress类的静态方法getLocalHost()

Java 2实用教程课件(第3版第11章)PPT教学课件

Java 2实用教程课件(第3版第11章)PPT教学课件

2020/12/09
11
服务器端的套接字对象
服务器必须建立一个等待接收客户的套接字的ServerSocket 对象。ServerSocket的构造方法是:
ServerSocket(int port)
port是一个端口号。port必须和客户呼叫的端口号相同。
当服务器的ServerSocket对象server_socket建立后,就可
URL对象通常包含最基本的三部分信息: 协议、地址、资源 .
2020/12/09
3
URL的构造方法
public URL(String spec) throws MalformedURLException
try { url=new URL("");
} catch(MalformedURLException e)
2020/12/09
5
11.3 显示URL资源中的html文件
Javax.swing包中的JEditorPane容器可以 解释执行html文件,也就是说,如果你把 html文件读入到JEditorPane,该html文 件就会被解释执行,显示在JEditorPane容 器中,这样程序就看到了网页的运行效果。
网络中的数据压缩与传输
UDP数 据 报 广播数据报
2020/12/09
2
11.1 使用URL
URL类是对统一资源定位符(Uniform Resource Locator)的抽象,使用URL创 建对象的应用程序称作客户端程序,一个 URL对象存放着一个具体的资源的引用, 表明客户要访问这个URL中的资源,利用 URL对象可2/09
14
11.8 UDP数 据 报
基于UDP的通信和基于TCP的通信不同,基于 UDP的信息传递更快,但不提供可靠性保证。也 就是说,数据在传输时,用户无法知道数据能否 正确到达目的地主机,也不能确定数据到达目的 地的顺序是否和发送的顺序相同。

java程序设计(3)

java程序设计(3)

11.1.2 用Java实现底层网络通信

Socket类


客户端要与服务端相连,则客户端需要建立Socket对象。
Socket s = new Socket("机器名或Ip地址", 端口号)

ServerSocket类

需要调用accept方法接受客户呼叫。 另外,经常需用线程来处理多个客户 示例:参见chat目录
第11章 网络、多媒体和数据库编程
JMF: Java Media Framework

下载

/technetwork/java/javase/download-142937.html 安装后,注意path及classpath的变化 如果是用IDE,则要将jar加到Lib中

示例 jmfDemo目录下

PlayerMusic.java 播放mp3 JMFMediaPlayer.java 播放视频及音频
第11章 网络、多媒体和数据库编程
11.3 Java数据库编程

11.3.1 Java访问数据库的基本步骤 驱动程序

Jdbc-odbc桥

JDK自带 /downloads/mysql/ /downloads/connector/j/ /zh-cn/download/details.aspx?id=11774
第11章 网络、多媒体和数据库编程
11.4 J2EE及J2ME简介

目前,Java 2平台有3个版本,它们是适用于小型 设备和智能卡的Java 2平台Micro版( Java 2 Platform Micro Edition,J2ME)、适用于桌面系 统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应 用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)。 这三种版 本从Java语言的角度上来看是一致的,但在功能 的裁减、系统的构架、应用的环境等方面又各有 特色。

Java程序设计教程之接口介绍课件

Java程序设计教程之接口介绍课件

实现接口的类必须实现接口中的所 有方法
实现接口的类可以实现多个接口, 但必须实现所有接口中的所有方法
接口的多态性
接口的多态性是指一个接口可以有多个实现类,每 个实现类可以提供不同的实现方式。
多态性使得程序设计更加灵活,可以方便地替换不 同的实现类,提高代码的可维护性和可扩展性。
接口的多态性可以通过继承和实现来实现,一个类 可以实现多个接口,从而实现不同的功能。
性能测试:通过接口进行性能测试,评估程 序的性能和响应时间
接口的扩展
接口的继承
接口继承是指一个接口继承 另一个接口,从而获得被继 承接口的所有方法和属性。
接口继承可以实现代码重用, 减少重复代码。
接口继承可以提供更灵活的 编程方式,便于扩展和维护。
接口继承可以实现多态,提 高代码的可维护性和可扩展 性。
接口的嵌套
01 02 03 04
01
接口可以嵌套在另一个接口中, 形成多层次的接口结构。
02
嵌套接口可以继承父接口中的方 法,并添加新的方法。
03
嵌套接口可以提高代码的可读性和 可维护性,便于模块化设计和开发。
04
嵌套接口可以更好地实现代码重 用和功能扩展。
接口的默认方法
默认方法:在接口中定义的方法,不需要实现类实 现
接口的作用
降低耦合度: 接口可以降 低类之间的 耦合度,使 得类之间的 依赖关系更 加松散。
提高代码重 用性:接口 可以提供一 种通用的抽 象,使得实 现该接口的 类可以重用 相同的代码。
便于维护和 扩展:接口 可以方便地 添加新的实 现类,而不 会影响到其 他类。
提高代码的 可读性和可 维护性:接 口可以清晰 地定义类的 行为,使得 代码更加易 于理解和维 护。

第11章-面向对象与Java程序设计 (第3版)-微课视频版-朱福喜-清华大学出版社

第11章-面向对象与Java程序设计 (第3版)-微课视频版-朱福喜-清华大学出版社
由于ODBC有其不足之处,如它不容易使用、没有面向对象 的特性等,因而SUN公司开发了一套Java语言的数据库应用 程序开发接口。在JDK的早期版本中,JDBC只是一个可选部 件,到JDK 1.1公布时,JDBC API就成为Java语言的标准部 件。
第6页
11.1.3 JDBC的实现及其驱动程序
源的SQL请求。数据库驱动程序可修改应用程序的请求,使 得请求符合相关的DBMS所支持的文法。 ·数据源:由用户想要存取的数据以及与它相关的操作系统、 DBMS和用于访问DBMS的网络平台组成。
第5页
11.1.2 从ODBC到JDBC
2. JDBC的诞生
Java 刚诞生时,由于没有数据库API,编程人员不得不在 Java程序中加入C语言的ODBC函数调用。这就使Java的很多 优秀特性无法充分发挥,如平台无关性、面向对象特性等。
第4页
11.1.2 从ODBC到JDBC
1. ODBC的结构模型
ODBC包括4个主要部分: ·应用程序接口:屏蔽不同的ODBC数据库驱动程序之间函数
调用的差别,为用户提供统一的SQL编程接口。 ·驱动程序管理器:为应用程序装载数据库驱动程序。 ·数据库驱动程序:实现ODBC的函数调用,提供对特定数据
("jdbc:odbc:wombat", "login", "password"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM
Table1"); while (rs.next())
System.out.println(rs.getString("a") + " " +rs.getString ("b") + " " + rs.getString("c"));

扣丁学堂_Java_11_网络编程

扣丁学堂_Java_11_网络编程

课程大纲1、网络编程基本概念2、网络编程TCP协议3、TCP ECHO实现程序4、服务器与多客户端通信5、多客户端之间的通信6、网络编程UDP协议7、URL1、网络编程基本概念网络编程基本概念1、什么是计算机网络把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。

2、计算机网络的主要功能资源共享信息传输与集中处理均衡负荷与分布处理(/综合信息服务(www/综合业务数字网络ISDN)等1、网络编程基本概念网络编程基本概念3、网络通信协议要使计算机连成的网络能够互通信息,需要对数据传输速率、传输代码、代码结构、传输控制步骤、出错控制等制定一组标准,这一组共同遵守的通信标准就是网络通信协议,不同的计算机之间必须使用相同的通讯协议才能进行通信。

网络通信接口为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间能进行信息交换。

接口包括两部分:(1)硬件装置:实现结点之间的信息传送(2)软件装置:规定双方进行通信的约定协议1、网络编程基本概念网络编程基本概念4、TCP/IPTCP/IP:传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。

IP地址:网络中每台计算机的一个标识号,本地IP:127.0.0.1 localhost端口号(PORT):端口号的范围:0~65535之间,0~1023之间的端口数是用于一些知名的网络服务和应用()端口号的范围之间之间的端口数是用于些知名的网络服务和应用网络编程基本概念1、网络编程基本概念5、程序开发结构网络编程主要是指完成C/S程序的开发,程序的开发结构有两种:∙C/S(客户端/服务器)开发两套程序,两套程序需要同时维护,例如:QQ。

java习题及答案第11章 习题参考答案

java习题及答案第11章 习题参考答案

习题11 课后习题答案1.常见网络端口有哪些?答案:在计算机中操作系统内部使用1-1024保留端口号,所以设计应用程序时需选择除此之外的端口。

如:20文件传输协议(默认数据口) ,80全球信息网超文本传输协议(www)。

2.如何连接和读取URL中的资源?答案:(1)通过URLConnection连接WWW:用URL的openStream()方法从网络上读取数据,若要输出数据,用类URLConnection,与URL建立连接,然后对其进行读/写操作。

(2)用URL读取WWW数据资源:在取得一个URL对象后,通过使用URL的openStream()方法,可以获得所需的特定的WWW 资源。

3.什么是套接字?有哪几种套接字?答案:套接字Socket是网络通信的应用程序接口,可以实现客户机与服务器之间的通信。

常用的TCP/IP协议的3种套接字类型有:流套接字(SOCK_STREAM);数据包套接字(SOCK_DGRAM);原始套接字(SOCK_RAW)。

流套接字用于提供面向连接、可靠的数据传输服务。

该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。

数据包套接字提供了一种无连接的服务。

该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。

原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据包套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。

因此,如果要访问其他协议发送数据必须使用原始套接字。

4.简述TCP套接字的实现过程?答案:实现TCP套接字基本步骤分为服务器端和客户端两部分。

(1)服务器端步骤创建套接字;绑定套接字;设置套接字为监听模式,进入被动接收连接请求状态;接收请求,建立连接;读/写数据;终止连接。

(2)客户端步骤创建套接字;与远程服务器程序连接;读/写数据;终止连接。

Java语言程序设计讲义-第十一章解析

Java语言程序设计讲义-第十一章解析

第十一章输入/输出处理主要内容:两个主要流类:InputStream与OutputStream。

11.1 流●输入/输出操作包括:对外设的输入/输出、文件读/写、站点对网络的读/写、线程之间的数据通信。

●Java输入/输出是基于流的。

流是指在通信路径上从信源到目的地传输的字节序列。

●Java语言定义了两个主要的流类:InputStream与OutputStream。

这些流的各种子类提供了各种I/O功能。

●InputStream与OutputStream是抽象类,是所有流类的父类,提供了输入/输出的基本接口,并实现了其中的部分方法。

11.2InputStream与OutputStream类(1输入流常用方法✓int read(;int read(byte[];int read(byte[],int,int;✓void close(;✓skip(long;✓markSupported(;mark(;reset(;(2输出流常用方法✓write(int; write(byte[];write(byte[],int,int;✓close(;✓flush(;11.3文件I/O处理(1 File●利用File类提供的方法,可以得到有关文件和目录的描述信息,包括路径、可读性、可写性、长度等.●可以建立、删除目录文件,改变目录和文件的名称等。

●File类主要用于命名文件、查询文件属性和进行目录管理等。

●创建File对象有三种构造方法:public File(String path;public File(String path,String name;public File(File dir,String name;●常用的方法:✓String getName(;✓String getPath(;✓String getAbsolutePath(;✓String getParent(;✓boolean renameTo(File newName;✓boolean exists(;✓boolean canWrite(;✓boolean canRead(;✓boolean isFile(;✓boolean isDirectory(;✓long lastModified(;✓long length(;✓boolean delete(;✓boolean mkDir(;✓String[] list(;(2 RandomAccessFile●实现文件随机存取,即对文件的非顺序存取。

第十一章 GUI编程

第十一章 GUI编程

第十一章: GUI编程一.GUI -- Graphical User InterfaceAWT (抽象窗口工具集) AbstractWindow Toolkit为简单的applet程序设计AWT没有提供足够的桌面端的程序所需的特性它不适宜用来构建丰富的桌面图形界面SwingSwing是AWT的扩展和功能加强是构建java图形界面标准的APISWT (Standard Widget Toolkit)是一个开源的GUI编程框架SWT是IBM为它的Eclipse集成开发环境而开发的图形用户界面工具AWTAWT(Abstract Window Toolkit)包括了很多类和接口,用于Java Application 的GUI (Graphics User Interface 图形用户界面)编程。

GUI的各种元素(如:窗口,按钮,文本框等)由Java 类来实现。

AWT所涉及的类一般在java.awt包及其子包中。

Container和Component是AWT中的两个核心类。

Modal ModelessComponent & ContainerJava的图形用户界面的最基本组成部分是Component ,Component 类及其子类的对象用来描述以图形化的方式显示在屏幕上并能与用户进行交互的GUI元素,例如,一个按钮,一个标签等。

一般的Component对象不能独立地显示出来,必须将“放在”某一的Container对象中才可以显示出来。

Container是Component子类,Container子类对象可以“容纳”别的Component 对象。

Container对象可使用方法add(..)向其中添加其他Component对象。

Containter是Component的子类,因此Containter对象也可以被当作Component对象添加到其他Container对象中。

有两种常用的Containter:Window: 其对象表示自由停泊的顶级窗口Panel: 其对象可作为容纳其它Component对象,但不能独立存在,必须被添加到其它Containner中(如Window 或Applet)FrameFrame是Window的子类,由Frame或其子类创建的对象为一个窗体。

Java实用教程 第11章 AWT图形用户界面编程

Java实用教程 第11章 AWT图形用户界面编程

fr.add(p1, BorderLayout.NORTH);
// 将p1添加到窗口NORTH区域(即顶部)
Panel p2 = new Panel();
// 创建面板p2
p2.setLayout(new GridLayout(4, 5, 3, 3));
// 设置p2使用GridLayout布局
String[] name = {"7", "8", "9", "÷", "√", "4", "5", "6", "×", "%"
AWT容器
Window和Frame
Window和Frame
Window有两个子类:Frame和Dialog。Frame带有标题,而且可以调整大小。Dialog可以被移动, 但是不能改变大小。Frame有一个构造方法Frame(String title),通过它可以创建一个以参数为标题 的Frame对象。Frame的add()方法向容器中加入其他组件。Frame被创建后是不可见的,必须通过 以下步骤使它成为可见。
setLocation()、setSize()或setBounds() 方法,为它们在容器中一一定位。
布局管理器
1.流式布局管理器
FlowLayout是把组件从左向右、从上向下,一个接一个地放到容器中,组件之间的默认间隔 (水平和垂直)为5个像素,对齐方式为居中。组件的大小由布局管理器根据组件的最佳尺寸 来决定。 FlowLayout的构造方法:
, "1", "2", "3", "-", "1/x", "0", ".", "C", "+", "±"};

JAVA第11、12章

JAVA第11、12章
Ver. 1.0
第 11 章
幻灯片5。共26张
Java 编程语言—11课/12课
侦听器示例(续)
事件侦听器的代码如同: import java.awt.event.*; public class ButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("Action occurred"); System.out.println("Button’s command is: "+ e.getActionCommand()); } }
Ver. 1.0
第 11 章
幻灯片4。共26张
Java 编程语言—11课/12课
侦听器示例
教材11-5页:
此代码段显示一个简单的框架,其中有一个按钮,其类名是 TestButton: public TestButton() { f = new Frame("Test"); b = new Button("Press Me!"); b.setActionCommand("ButtonPressed"); } public void launchFrame() { b.addActionListener(new ButtonHandler()); f.add(b,BorderLayout.CENTER); f.pack(); f.setVisible(true); }
Ver. 1.0
第 11 章
幻灯片9。共26张
Java 编程语言—11课/12课
侦听器(续)

第十一章swing-1

第十一章swing-1

描述
用指定的显示文本构造一个新的文本区 设置文本区的字体 获取文本区中的文本字符串
12
版本 1.0
课程 1
幻灯片 12,共 30 张
Java 编程语言
JButton 方法
JButton( )
说明
创建不带文本和图标的按钮
JButton(Icon icon)
JButton(String text) JButton(String text, Icon icon)
版本 1.0
课程 1
幻灯片 8,共 30 张
Java 编程语言
Swing GUI 组件 JTexField
JComboBox
JLabel
JCheckBox
JTexArea
9
JRadioButton
JButton
课程 1 幻灯片 9,共 30 张
版本 1.0
Java 编程语言
JLabel 方法
JLabel()
版本 1.0
课程 1
幻灯片 19,共 30 张
Java 编程语言
布局管理器
•用户界面上的屏幕组件可以按照一定的格式 布局 例如水平排列,或按网格方式排列 •布局管理器类是一组类,它
• 实现 youtManager 接口 • 帮助在容器中放置组件
•Java 中可用的各种布局如下:
将项添加至项的列表 返回指定索引位置的列表项 返回列表(作为对象)中的项数 将当前选择的项作为一个对象返回 返回当前选择项的索引位置
16
版本 1.0
课程 1
幻灯片 16,共 30 张
Java 编程语言
事件处理程序 3-1
用户交互
单击鼠标 按下/释放鼠标按钮

Java游戏编程原理与实践教程课件 第11章--陈锐 夏敏捷主编

Java游戏编程原理与实践教程课件 第11章--陈锐 夏敏捷主编

11.3 程序设计的步骤 11.3.1 设计游戏窗口类(GameRoom.java) 游戏窗口类GameRoom实现游戏全部功能,继承JFrame组件实现 的。是由上方Panel1和中间Panel2组成。 11.3.2 设计内部游戏面对对碰游戏的关键,在面板 中重载Paint事件将背景图片、动物池和所有动物绘制到面板 中。 11.3.3 设计内部定时器类 内部定时器类TimeListener修改剩余时间,并判断是否到达100, 如果到达则定时器结束,出现对话框提示是否继续游戏,如 果用户选择“是”按钮则可以开始新游戏,选择“否”按钮 则退出程序。
Java游戏编程原理与实践教程
主编 陈锐 夏敏捷
人民邮电出版社
第11章 对对碰游戏(图形版)
游戏在8 × 8格子的游戏池中进行。每个格子中有一个图像 。鼠标连续选中两个相邻的图像,它们的位置会互换,互换 后如果横排或竖排有 3 个以上相同的图像,则可以消去该图 像,并得分。 本章开发的游戏开始界面如图11-1,用户开始游戏后,直到 窗口上方的时间值为0秒时结束。消掉图像方块可以增加用 户的得分(消去一块用户的得分增10分)。
游戏界面和相关图片素材
11.2 程序设计的思路
游戏屏幕由8行8列的方块组成,方块的动物图案各不相同。为了存储游戏画面 中方块动物的图案采用二维数组animal [8,8],储存对应按钮的动物图案ID(0到 6的数字)。 在定时器timer控制下,不停的更新剩余时间,如果剩余时间为0秒,则游戏结束,
出现图11-3游戏结束对话框提示用户是否继续。
11.2 程序设计的思路
当用户鼠标连续选中两个相邻的方块,这里不是按钮,所以识别是那个动物方块 是通过鼠标单击处像素坐标计算出棋盘坐标来识别。由于两次选择所以通过(x1, y1)记录第一次位置,( x2, y2)记录第2次位置。交换二维数组animal中(x1, y1)和 ( x2, y2)元素两个方块的动物图案ID,交换以后调用isThreeLinked(y2, x2)和 |isThreeLinked(y1, x1)检测屏幕上是否有符合消去规则的方块,如果有被消去的 方块,则removeLinked(y2, x2)修改记录要绘制方块的动物图案ID的animal数组对 应元素的值,不需要绘制为EMPTY(即7,因为动物图案ID是0到6的数字)。并 调用updateAnimal()从游戏屏幕该列上方重新随机产生新的动物图案ID,更新动 物图案ID数组animal[8][8]。最后repaint()刷新显示需要绘制的所有方块图形, 从而看到动态游戏效果。

精品课件-《Java程序设计教程》课件-第十一章:输入输出流

精品课件-《Java程序设计教程》课件-第十一章:输入输出流
OutputStrea m
OutputStream是字节 输出流,使用 OutputStream可以往数 据源以字节为单位写入数 据。OutputStream常用 方法如表11-5所示。
11.3.2 O u t p u t S t r e a m
OutputStream类和InputStream类一样,都是抽象类,不能直接实例化,因此也 是使用其子类来完成具体功能。OutputStream类及其子类的关系如图11.4所示。
public static void main(String[] args) { // 建立一个从键盘接收数据的扫描器 Scanner scanner = new Scanner(System.in); // 声明文件字节输出流 FileOutputStream fos = null; try { // 实例化文件字节输出流 fos = new FileOutputStream("D:\\data\\xsc.txt"); System.out.println("请输入内容:"); String str = scanner.nextLine(); // 将数据写入文件中
public static void main(String[] args) { // 声明文件字节输入流 FileInputStream fis = null; try { // 实例化文件字节输入流 fis = new FileInputStream("D:\\data\\xsc.txt"); // 创建一个长度为1024的字节数组作为缓冲区 byte[] bbuf = new byte[1024]; // 用于保存实际读取的字节数 int hasRead = 0; // 使用循环重复读文件中的数据 while ((hasRead = fis.read(bbuf)) > 0) {
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
钳工是一种“能力”,不关心具体是谁
接口是一种能力
面向接口编程
体现在接口的方法上
程序 设计时
关心实现类有何能力,而不关心实现细节 面向接口的约定而不考虑接口的具体实现
11/32
问题
实现防盗门功能
面向接口编程3-1
分析
防盗门是一个门 防盗门有一个锁
上锁 开锁
能力
is a的关系 has a的关系
什么是接口
public interface MyInterface {
public void foo(); //其他方法 }
所有方法都是: public abstract
接口的特性
接口不可以被实例化 实现类必须实现接口的所有方法 实现类可以实现多个接口 接口中的变量都是静态常量
常作为类型使用 Java中的多继承
24/32
课堂操作——组装一台计算机2-1
指导
训练要点
接口的基础知识 理解接口表示一种约定
需求说明
采用面向接口编程思想组装一台计算机。 计算机的主要组成部分有:
CPU 硬盘 内存
25/32
课堂操作——组装一台计算机2-2
指导
实现思路
定义计算机组成部分
定义CPU的接口CPU,返回CPU品牌和主频
}
小结
27/32
接口
总结
Java中的接口
属性全都是全局静态常量 方法都是全局抽象方法 无构造方法
一个类可以实现多个接口,非抽象类实现接口时必须实 现接口中的全部方法
抽象类利于代码复用,接口利于代码维护
28/32
定义打印机类
实现墨盒接口 实现纸张接口
用墨盒、纸张接口实现打印方法
21/32
抽象类vs接口
相同点
代表系统的抽象层 都不能被实例化 都能包含抽象方法
用于描述系统提供的服务,不必提供具体实现
不同点
在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方 法
抽象类便于复用,接口便于代码维护
阅读代码,找出错误
public interface MyInterface { public MyInterface(); public void method1(); public void method2(){ } private void method3(); void method4(); int method5(); int TYPE = 1;
接口的基础知识 接口表示一种能力
需求说明:
原始的手机,可以发短信,通电话。随着发展,手机增加了功能:音 频、视频播放、拍照、上网
16/32
课堂操作——使用接口实现手机功能2-2
指导
实现思路
编写类及接口,参照以下类的结构图 编写测试类,让普通手机播放音频、发信息和通电话,让智能手机上
两个接头间的额定电压
两个接头间的距离
接头的形状
接口是一种约定
有些接口只有名称
体现在接口名称和注释上
面向接口编程
方法的实现方式 要通过注释来约定
程序设计时面向接口的约定而不考虑具体实现
19/32
问题
开发打印机
墨盒:彩色、黑白 纸张类型:A4、B5 墨盒和纸张都不是打印机厂商提供的 打印机厂商要兼容市场上的墨盒、纸张
定义内存的接口EMS,返回容量
定义硬盘的接口HardDisk,返回容量
实现计算机各组件信息
编写各组件厂商分别实现CPU、EMS、和HardDisk接口编写计算机 类,组装计算机并显示相关信息
编写测试类运行
26/32
提问
编写和实现接口的语法是什么? 接口有哪些特性?(说出3个)
代码阅读
面向接口编程
20/32
面向接口编程
分析
墨盒和纸张的规格是一种约定 打印机需要遵守这些约定 用面向接口编程的方式开发
制定墨盒、纸张的约定或标准 打印机厂商使用墨盒、纸张的标准开发打印机 其他厂商按照墨盒、纸张的标准生产墨盒、纸张
约定墨盒标准 约定纸张标准
定义墨盒接口InkBox 定义纸张接口Paper
一个类只能继承一个直接的父类,但可以实现多个接口
22/32
抽象类vs接口
使用原则
接口做系统与外界交互的窗口
接口提供服务
接口本身一旦制定,就不允许随意修改 抽象类可完成部分功能实现,还有部分功能可作为系统的扩展点
23/32
面向对象设计原则 多用组合,少用继承 针对接口编程 针对扩展开放,针对改变关闭
14/32
课堂操作——使用接口实现防盗门功能
练习
需求说明:
使用面向接口编程实现防盗门的功能
开门、关门 上锁、开锁 拍照存档
定义Door抽象类 定义Lock、 DoorBell接口
定义TheftproofDoor类
编写测试类
15/32
课堂操作——使用接口实现手机功能2-1
指导
训练要点:
接口
集中测试
如何编写接口? 接口有哪些特性?(说出2个)
预习检查
2/32
提问
如何实现多态? 使用多态有什么好处? 抽象类的特点是什么? 抽象方法的特点是什么?
回顾及作业点评
3/32
使用接口设计
防盗门功能 手机功能 组装一台计算机 打印机打印
本章任务
4/32
掌握接口基础知识 掌握接口作为一种约定和能力的含义 掌握面向接口编程
如何使用接口
编码实现
编写 接口
public interface UsbInterface {
/** * USB接口提供服务。 */
void service(); 实现接口使用
}
的关键字
多个接口使用“,”分隔
实现 接口
public class UDisk implements UsbInterface {
本章目标
5/32
问题
要求实现防盗门的功能
为什么使用接口
分析
门有“开”和“关”的功能,锁有“上锁”和“开 锁”的功能
将门和锁分别定义为抽象类
将门定义为抽象类,锁定义为接口 防盗门继承门,实现锁的接口
防盗门可以继承门的同时又继承锁吗?
如何解决这个问题呢?
6/32
语法
认识一下接口
public void service() { System.out.println("连接USB口,开始传输数据。");
} }
使用 UsbInterface uDisk = new UDisk(); 接口 uDisk.service(); 用接口实现多态
10/32
接口表示一种能力
“做这项工作需要一个钳工(木匠/程序员)”
12/32
实现过程
面向接口编程3-2
具备上锁、 开锁的能力
具有开门、 关门的功能
定义Door 抽象类
定义Lock接口
让防盗门关门、 上锁、开锁、开门
编写TheftproofDoor类 编写测试类
继承类实以具有多项能力 一个类可以实现多个接口
扩展防盗门门铃功能,主要是实现拍照存档
网、播放视频、照相、发信息和通电话
照相
连接网络
手机
播放
智能手机
普通手机
17/32
提问
如何理解接口是一种能力?
接口有比抽象类更好的特性: 1.可以被多继承 2.设计和实现完全分离 3.更自然的使用多态 4.更容易搭建程序框架 5.更容易更换实现 ……
小结
18/32
接口是一种约定
生活中,我们使用的两相电源插座,规定了
7/32
问题
用程序描述USB接口
如何使用接口
8/32
分析
USB接口本身没有实现任何功能
USB接口规定了数据传输的要求
USB接口可以被多种USB设备实现
可以使用Java接口来实现
如何使用接口
编写USB接口 实现USB接口 使用USB接口
根据需求设计方法 实现所有方法 用多态的方式使用
9/32
相关文档
最新文档