第5章 面向对象程序设计
单词和缩写
OOP(Object-oriented Programing)
object data method class extends interface prototype packge
public private protected static final native
abstract this super
面向对象(Object)(P93)
名称 |
说明 |
举例 |
对象 object |
类中的实例, 对象的源代码 把数据、变量、操作和方法 封装在一起。 |
小车是汽车类中的实例。 class myclass
myobject=new
myclass(int x); |
类 class |
定义对象的状态和行为的模板, Java 语言中的程序模块。 |
java 语言 awt 工具包中的 Graphics 图形类。 |
什么是面向对象(P )
构成 | 行为 | |
物体 | 属性 | 方式 |
汽车 | 发动机、车轮 | 发动、行驶 |
对象 | 数据 | 方法 |
5.1 Java 语言中的类
5.1.1 class 类
1.类的声明格式(P82)
[类修饰符] class 新类名 [extends 超类名] [implement 接口名]
2.类修饰符
public 公有成员,可以被任何对象使用或扩展。
protected 保护成员,仅能被该类及其派生类访问。
private 私有成员,仅能被该类的其他成员访问。
abstract 未完成的类,只是声明方法,而不实现方法。
final 终类,完整的,不能有子类。
3.超类
扩展超类:得取该类的副本,可在副本上添加其他功能。
[示例 5.3]
abstract class myClass1 //定义抽象类
{
abstract void method1(); //定义抽象方法
}
class myClass2 extends myClass1{
public void method1(){
......;
}
}
1. 封装
1)封装(encapsulation)是把类的数据、变量、操作和方法
封装在类体中,使之与外界分隔开。
2)外界访问类对象:
通过类中公共的数据方法访问私有的数据和方法。
5.1.2 子类(P )
1. 类的继承
1)类的继承(extends)
新的类继承原有类的基本特性。
2)新的类:子类、派生类。
3)原有类:父类、超类(superclass)、基类。
2. Java 语言在运行时的多态性(P85)
1)类的多态性(polymophism)
一个名称有多种功能,或者相同的接口有多种实现方法。
2)类的多态性的实现
通过方法的重载(overloading)、复盖(overriding)
和接口来实现。
3)方法的重载
多个方法具有相同的名称,但各个方法的参数表不同,
即参数的类型和参数的数量不同。
例如,求一个数的立方(cube)
int cube (int i);
float cube (float a);
double cube (double d);
调用时系统自选方法。
例如,cube(5),cube(3.2f),cube(6.7)。
4)复盖:子类中的方法复盖父类中同名的方法。
5)接口:特殊的类,只有方法的原型,
方法的实现在其子类中具体定义。
5.1.5 定义构造函数(P )
构造函数:为类提供初始化的方法。
[示例 5.10]
class point{
int x,y; // 声明变量
point(){ //构造函数
x=0;
y=0;
}
point(int newx,int newy){ // point 方法的重载
x=newx;
y=newy;
}
}
创建、使用对象
声明和创建对象(P )
创建对象语法格式:
类名 对象名; //声明对象
对象名=new 类名(); //创建对象
[示例 5.12]
class myClass1{
myClass myObject;
myObject=new myClass(int x,int y); // 分配空间,实例化
}
对象的初始化(P )
若类成员未赋值,则系统赋予固定的初始值。
数值变量:0
布尔变量:false
未初始化的引用:null
[示例 5.18]
Point p1=new Point(); //初始化为 x=0,y=0
Point p2=new Point(5,10); //初始化为 x=5,y=10
对象的使用(P )
运算符“.”可以访问变量和调用方法。
[示例 5.19]
class Point { // 声明 Point 类
int x,y;
String name="a point";
Point(int x,int y, String name){ // 定义方法
this.x=x; // 用运算符“.”访问变量
this.y=y;
this.name=name;
}
}
// Point 类的应用
public class AccessVariable{ //声明 AccessVariable 类
Point p=new Point(); //生成类 Point 的对象 p
p.x=10; //用 p.x,p.y 来访问 x,y
p.y=10;
tx=new point().x; //用 new 生成对象的引用后直接访问
}
类和对象
类是定义对象的状态和行为的模板,对象是类的实例。
Java 语言中的方法
方法的定义(P )
方法:可以被调用的代码,传递固定数量的参数,
类似 C 语言的函数。
方法声明格式:
方法修饰符 结果类型 方法名([参数列表]){方法体}throws子句
[示例 5.24]
class point{
int i;
float x,y;
void add_x+y(){ // 定义 x+y 的方法
for(i=1;i<10;i++)x=x+y;
......;
}
}
构造方法(P )
[示例 5.27]
class point{
int x,y;
point(){
x=0;
y=0;
}
point(int x,int y){
this.x=x;
this.y=y;
}
}
finalize 方法(P )
finalize 方法终结扫尾,释放系统资源。
this 和 super 变量(P )
this 变量:当前的对象。
super 变量:引用超类(父类)中的对象。
1.static方法:类方法(class method),
Math 类中含有数学计算方法:指数、对数、三角函数。
2.向方法传递信息
public static long max(long a,long b){
return (a>=b) ? a : b;
}
例:
class Circle {
int x,y,radius; //成员变量x,y
public Circle(int x,int y,int radius) //构造器参数x,y
{
this.x=x; //赋值给当前对象的变量x
this.y=y;
this.radius=radius;
}
}
3.main方法
main方法:程序执行的起点。
定义格式:public static void main(String args[]){方法体}
5.3 接口的概念(P109)
应用程序接口 API(Application Program Interface):
由类和接口组成具备各种功能的类的形式。
例如:java.applet.AppletContext接口的getImage方法
使运行Applet的浏览器下载图片。
5.3.1 接口类型
接口中的数据成员:
公共的(public)、静态的(static)、最终的(final)。
(1)声明接口的语法格式:
public interface 接口名[extends 接口列表]{...;}
5.3.2 接口的实现(implements)(P)
(1)类实现接口的语法格式:
class myclass implements SomeInterface{...}
(2)多个接口的实现(声明用逗号分隔接口)
class myclass implements Interface1,Interface2{...}
(3)接口的多重继承
Interface myInterface extends Interface1,Interface2{...}
引入包中的类和接口(P)
例如:
import java.awt.color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.*;
导入整个包,浏览器必须从网上下载包中的所有类文件,用时间多。
5.4 Java 包(P113)
包(package):由一组类和接口的程序段组成。
包:类似 C++ 语言中的类库,用途相近功能不同的类和接口的集合。
相当子目录,包与文件系统的目录对应,用圆点(.)指明目录的层次。
例如:java.awt.Graphics
5.4.1 java 核心包(P)
API(Application Programming Interface)
(1)java.lang 基本包:支持基本对象和数值类型。
(2)java.io 输入输出包:用于管理文件输入输出流。
(3)java.util 工具包:提供工具类。
(4)java.net 网络包:支持网络编程。
5.4.2 java 语言提供的其他包
(1)java.awt 抽象窗口工具包:
用于管理窗口、对话框、按钮、菜单、滚动条等。
(2)java.applet 小程序包:用于创建 Java 小程序。
(3)javax.swing 新图形界面库:新的图形界面类库。
5.4.3 构造 Java 包
package 包的名称;
5.4.4
接口(interface):抽象方法和变量的集合。
类的原型(prototype),接口规划出类的共同行为,
具体类实现特殊功能。
第6章 字符串处理
6.1 创建String类对象
1.隐式创建字符串String对象(P )
g.drawString("This is a string",50,50);
2.显示创建字符串String对象(P26)
string str=new String("This is a string");
第7章 输入输出处理
* 文件输入输出(I/O)流:
信息源和目的地之间的通信路径。
* 文件输入流对应抽象基类 InputStream;
* 文件输出流对应抽象基类 OutputStream。
第8章 Java Applet
8.1.3 在 HTML 文件中嵌入 Applet(P163)
//类文件中嵌入图像 *.JPG
<applet
code=xhpp.class
name=xhpp
width=571
height=393 >
<param name="graphic" value="QHXJ.jpg"> <param name=label value="This string was passed from the HTML host."> <param name=background value="008080"> <param name=foreground value="FFFFFF"> </applet>8.2 Applet 的创建和执行
8.2.1 Applet 的类层次及框架结构(P164)
2. Applet 的框架结构
* Applet 小程序运行过程
init( ) |
——— |
start( ) |
———— |
stop( ) |
——— |
destory( ) |
———— |
(1)加载含 Applet 的页面,设置字体、装载图片等;
(2)启动或恢复执行;
(3)执行被挂起,浏览器调用 stop() 方法停止小程序的运行;
(4)若关闭浏览器停止 Applet 运行,
浏览器调用 destory() 方法终止小程序。
(5)调用 paint() 方法绘制图形。
8.3 Applet 的 AWT 绘制(P171)
8.3.2 应用字体
// 创建字体对象
Font fnt20 = new Font("TimesRoman",Font.PLAIN,20);
g.setFont(fnt20); // 设置当前字体
g.setColor(Color.yellow);// 黄字
g.drawString("广播电视大学",55,30);
8.3.4 绘制图形(P175)
8.5 Applet 的应用(P180)
Applet小程序:插入网页。
Java.net Java核心包的网络包:网络通讯(客户端、服务器端)
网络技术基础
提供适用TCP和UDP网络协议的类。
应用层 | HTTP,FTP
TCP,UDP IP 设备驱动程序 |
应用层 |
传输层 | 传输层 | |
网络层 | 网络层 | |
链路层 | 链路层 | |
物理层 (网络的物理连接设备) |
1.网络通讯协议(TCP)(P )
点对点网络连接传输,应用程序有HTTP,FTP。
2.用户数据报协议(UDP)
数据包网络通信方式。
应用程序有ping,测试网络连接的计算机接通情况。
3.网络通信地址标识(P )
目的计算机 |
端口(COM1) |
主机名(IP地址) |
应用程序 |
4.网络数据包的传送(P )
应用程序 |
||
| |
||
端口8080 |
||
TCP或UDP |
||
| |
||
网络数据包 |
||
| |
||
主机名(IP地址) |
端口号 |
数据(路径/文件名) |
URL概念(P )
统一资源定位器URL(Uniform Resource Locator)
网上资源的指针,指向文件、目录、对象(查询数据库、搜索引擎)
主机名(IP地址) |
端口号 |
数据(路径/文件名) |
主机名分隔符(://)
端口分隔符(:)
路径/文件名分隔符(/)
URL类(P )
1.构造器
URL对象是确定资源的位置。
public URL(string protocol,string host,int port,
string file) throws MalformedURLException
(协议:http,ftp、主机名、端口、主机文件、形成URL出错异常)
例如:创建URL对象
try{
URL urla=new URL("http","hostname",80,"index.html");
}catch (MalformedURLException e){......}
2.方法
public int getPort() 得到URL对象的端口号
public String getProtocol() 得到URL对象的协议名
public String getHost() 得到URL对象的主机名
public String getFile() 得到URL对象的文件名
12.2.3 URLconnection类(P265)
URLconnection类:抽象类,实现应用程序和URL间通信连接,
读写URL的资源。
abstract public void connect() throws IOException
打开与URL所指定资源的通信连接。
实例:从Internet下载HTML文件(P )
创建FileOutputStream对象用于写文件
FileOutputStream fileOut=new FileOutputStream(args[1]);
InetAddress类(P )
InetAddress类简介
InetAddress类:存储远程系统的IP地址。
InetAddress remoteOP=InetAddress.getByName("java.sun.com");
通过名字确定机器的IP地址。
TCP Sockets套接字编程
TCP Sockets基础(P )
1.TCP Sockets是两台机器进行通信的端点,
开发“客户机/服务器”应用。
2.创建TCP Sockets需要的信息:
本地系统的IP地址。
本地应用程序正在使用的TCP端口号。
远程系统的IP地址。
远程系统应用程序相应的TCP端口号。
3.Sockets在“客户机/服务器”中的应用:
守护进程,等待请求,处理并返回结果。
4.UNIX操作系统中端口的分配:
低于1024的端口:捆绑拥有超级用户权限的应用,
高于1024的端口:动态或临时分配给客户机应用程序。
5.客户机应用程序建立Socket连接,捆绑端口(FTP 21,HTTP 80)。
SocketImpl类(P )
SocketImpl类:创建客户机Socket和服务器Socket。
1.成员变量
protected FileDescriptor fd; //socket 的文件描述符对象类
protected InetAddress address; //socket 远端的IP地址
protected int port; //socket 连接的远程主机的端口号
protected int localport; //socket 连接的本地端口号
2.方法
* protected abstract void create(boolean stream)
throws IOException
创建一个流(stream)或数据报(datagram)Socket,
stream为true:创建一个流Socket
stream为fals:创建一个数据报Socket
* protected abstract void connect(string host,int port)
throws IOException
连接Socket到远程主机host上的指定端口port。
* protected abstract void bind(InetAddress host,int port)
throws IOException
捆绑Socket到IP地址为address的远程主机的指定端口port。
Socket类(P )
Socket类:实现客户端的Socket的实例,执行Socket的实际工作。
1.构造器
public Socket
(String host,int port,InetAddress localAddr,intlocalPort))
throws IOException
2.方法
* public InputStream getInputstream()throws IOException
得到从Socket读取字节的输入流。
* public OutputStream getOutputstream()throws IOException
得到向Socket写字节的输出流。
ServerSocket类
ServerSocket类:创建TCP Socket服务器。
1.构造器(P276)
public ServerSocket(int port)throws IOException
在指定端口创建监听ServerSocket
2.方法
public int getLocalPort()
得到ServerSocket用于监听的端口号。
3.ServerSocket类的使用(P )
在端口创建ServerSocket后,
用accept()方法等待客户的连接请求,
客户机完成连接后,打开流,处理发生的通信。
“客户机/服务器”通信协议的开发流程
“客户机/服务器”通信:实现通信协议的基本步骤(P )
|
客户机 |
服务器 |
初始化 |
2.建立Socket对象 |
1.建立ServerSocket对象 |
建立链接 |
|
3.响应客户机,建立链接 |
请求响应 |
4.发出请求 |
5.响应请求 |
处理结果 |
7.接收处理结果 |
6.返回处理结果 |
中断链接 |
8.直到结束对话 |
9.中断链接,结束通信 |