“技能百练”预备知识

第1章 Java 语言中的对象、类和方法

单词和缩写

  OOP(Object-oriented Programing)

  object data method class extends interface prototype packge

  public private protected static final native

 abstract this super

1.1 面向对象(Object)

名称

说明

举例

对象

object

类中的实例,

对象的源代码

把数据、变量、操作和方法

封装在一起。

小车是汽车类中的实例。

class myclass
  {
    myclass myobject;

    myobject=new myclass(int x);
   }

class

定义对象的状态和行为的模板,

Java 语言中的程序模块。

java 语言 awt 工具包中的

Graphics 图形类。

1.1.1 什么是面向对象

  构成 行为
物体 属性 方式
汽车 发动机、车轮 发动、行驶
对象 数据 方法

1.2 Java 语言中的类

1.2.1  class 类

 1.类的声明格式

   [类修饰符] class 新类名 [extends 超类名] [implement 接口名]

 2.类修饰符

   public 公有成员,可以被任何对象使用或扩展。

   protected 保护成员,仅能被该类及其派生类访问。

   private 私有成员,仅能被该类的其他成员访问。

   abstract 未完成的类,只是声明方法,而不实现方法。

   final 终类,完整的,不能有子类。

 3.超类

  扩展超类:得取该类的副本,可在副本上添加其他功能。

 [示例 1.3]

    abstract class myClass1            //定义抽象类

    {

    abstract void method1();  //定义抽象方法

   }

   class myClass2 extends myClass1{

       public void method1(){

       ......;

   }

   }

 1. 封装

  1)封装(encapsulation)是把类的数据、变量、操作和方法

    封装在类体中,使之与外界分隔开。

  2)外界访问类对象:

    通过类中公共的数据方法访问私有的数据和方法。

1.2.2 子类

 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)接口:特殊的类,只有方法的原型,

    方法的实现在其子类中具体定义。

1.2.5 定义构造函数

  构造函数:为类提供初始化的方法。

 [示例 1.10]

 class point{

     int x,y;   // 声明变量

     point(){   //构造函数

        x=0;

        y=0;

     }

    point(int newx,int newy){  // point 方法的重载

        x=newx;

        y=newy;

    }

  }

1.3 创建、使用对象

1.3.1 声明和创建对象

  创建对象语法格式:

  类名  对象名;   //声明对象

  对象名=new 类名(); //创建对象

 [示例 1.12]

  class myClass1{

     myClass myObject;

     myObject=new myClass(int x,int y);  // 分配空间,实例化

   }

1.3.2 对象的初始化

  若类成员未赋值,则系统赋予固定的初始值。

  数值变量:0

  布尔变量:false

  未初始化的引用:null

 [示例 5.18]

  Point p1=new Point();   //初始化为 x=0,y=0

  Point p2=new Point(5,10);   //初始化为 x=5,y=10

1.3.3 对象的使用

 运算符“.”可以访问变量和调用方法。

 [示例 1.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 生成对象的引用后直接访问

  }

1.4 类和对象

 类是定义对象的状态和行为的模板,对象是类的实例。

1.5 Java 语言中的方法

1.5.1 方法的定义

  方法:可以被调用的代码,传递固定数量的参数,

 类似 C 语言的函数。

  方法声明格式:

  方法修饰符 结果类型 方法名([参数列表]){方法体}throws子句

 [示例 1.24]

  class point{

     int i;

     float x,y;

     void add_x+y(){     // 定义 x+y 的方法

     for(i=1;i<10;i++)x=x+y;

     ......;

    }

  }

1.5.2 构造方法

 [示例 1.27]

  class point{

     int x,y;

     point(){

        x=0;

        y=0;

   }

 point(int x,int y){

        this.x=x;

        this.y=y;

   }

  }

1.5.3 finalize 方法

  finalize 方法终结扫尾,释放系统资源。

1.6 this 和 super 变量

  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[]){方法体}

 

第2章 Java 中的接口、包、异常和Java 程序框架

 类的原型(prototype),接口规划出类的共同行为,

 具体类实现特殊功能。

 包(package):由一组类和接口的程序段组成。

2.2 Java 包

  包:类似 C++ 语言中的类库,用途相近功能不同的类和接口的集合。

相当子目录,包与文件系统的目录对应,用圆点(.)指明目录的层次。

  例如:java.awt.Graphics

2.2.1 java 核心包

  API(Application Programming Interface)

(1)java.lang 基本包:支持基本对象和数值类型。

(2)java.io 输入输出包:用于管理文件输入输出流。

(3)java.util 工具包:提供工具类。

(4)java.net  网络包:支持网络编程。

2.2.1 java 语言提供的其他包

(1)java.awt 抽象窗口工具包:

   用于管理窗口、对话框、按钮、菜单、滚动条等。

(2)java.applet 小程序包:用于创建 Java 小程序。

(3)javax.swing 新图形界面库:新的图形界面类库。

2.2.3 构造 Java 包

  package 包的名称;

2.2.4 引入包中的类和接口 

  例如:

    import java.awt.color;

    import java.awt.Graphics;

    import java.awt.Image;

    import java.awt.*;

  导入整个包,浏览器必须从网上下载包中的所有类文件,用时间多。

2.4 Java 语言标准应用程序框架 

 * 应用程序(Application):

   在 Java 虚拟机上运行,受限制少,要有程序入口 Main()。

 * Java 小程序(Applet Application -let):

   在 IE 浏览器上运行,受限制多,不要程序入口 Main()。

2.4.1 Java Application 应用程序框架

  Java 应用程序:myApplication.java

  package mypackage;

  import somepackage.*;

  public class myApplication{

     public static void main(String args[]){

        ...;

     }

  }

 * String args[]:传递给 main() 方法的参数,

   参数 args 是类 String 的数组。

2.4.2 Applet 小程序框架 

 * Applet 小程序运行过程

init( )
初始化

———

start( )
 启动

————

stop( )
 停止

———

destory( )
 释放资源

————

(1)加载含 Applet 的页面;

(2)嵌入了 Java 虚拟机的浏览器调用 init()方法初始化 Applet;

(3)调用 paint() 或 start() 方法绘制或启动程序;

(4)离开页面时,浏览器调用 stop() 方法停止小程序的运行;

(5)若关闭浏览器停止 Applet 运行,

     浏览器调用 destory() 方法终止小程序。

 * HTML 文件嵌入 Applet 小程序(P123)

   <BODY>

      <APPLET

         CODEBASE="."            // 路径

         CODE    ="ZXB.class"    // 正弦波类文件

         ......

      <PARAM NAME="Width" VALUE="400"  // 宽的参数

      </APPLET>

   </BODY>

 

第3章 Java 语言的GUI和事件处理

单词和缩写

  GUI(Graphic User Interface)

  Components Containers Layouts

  Frame Panel Button Label event

 DSN(Data Sequence Number)

3.1 GUI 图形用户界面 

 * 图形用户界面基本元件(组件)

   应用程序框架(Frame)   面板(Panel)

   按钮(Button)          标签(Label)

   画板(Canvas)          滚动条(Scrollbar)

   列表框(List)             文本域(Text Field)

   文本区(Text Area)     菜单(Menu)

 * 控制组件的基本使用

   激活组件(action)     禁用组件(disable)

   启用组件(enable)     处理事件(handleEvent)

   隐藏组件(hide)       当前坐标(location)

   单击鼠标(mouseDown)  拖动鼠标(mouseDrag)

   移动组件(move)       重置组件(repaint)

   重置尺寸(resize)     组件背景色(setBackground)

   设置字型(setFont)    组件前景色(setForeground)

   显示组件(show)

3.1.1 应用程序框架

 1.应用程序(Application):

    框架(Frame):带标题的顶层窗口。

  Frame 类构造方法:

  Frame(String title)  // 给定窗口标题

  显示框架窗口:使用 Frame 类的父类 Windows 类中的show()方法。

[实例 3.1]

  import java.awt.*;

  public class myFrame extends Frame{ 

  // 创建继承 Frame 的窗口类

    public myFrame(){   // 定义方法

       .............

    }

    public static void main(String[] args){

      myFrame mF = new myFrame(); // 实例化一个窗口

      mF.setSize(777,555);

      mF.show();

    }

  }

 2.在 VJ++6.0 环境中创建源程序:

   Applications 应用程序:编译生成 .exe 文件,

   运行时有独立的窗口,使用 Form1 模板中的关闭窗口方法。(P178)

  public boolean handleEvent(Event e){ 

  switch(e.id){

  case Event.WINDOW_DESTROY:System.exit(0);return true;

  default:return false;

   }

  }

   例如:正弦波 F:\JAVA\jv_zxb.java

    File--New project--Applications 文件夹的

  Windows Application—工程名jv_zxb,路径F:\JAVA—打开—

   Project Explorer 窗口:Form1.java 改 jv_zxb.java—

   打开jv_zxb.java—编辑源程序—Build菜单—Build—

  指定主类 'Form1' 未发现;

  debug 菜单—Start winthout debugging --launch 启动卡—

  选取自定义选项 costom—编译生成类文件(.class)—

  调试 Debug--Start--生成 .exe 文件。

3.1.2 面板 

 1.面板(Panel):构成 Java 小程序(Applet)主窗口。

 2.Java 小程序实例 zxb.htm 代码 zxb_dm.htm

 3.在 VJ++6.0 环境中创建 Applet 小程序

  Applet 小程序:编译生成 .class 文件,插入网页中,

  浏览时包含在浏览器窗口中。

   例如:正弦波 F:\JAVA\zxb.java

     File--New project--Web Page 文件夹的 Applet on HTML—

   工程名zxb.java,路径F:\JAVA—打开—

   Project Explorer 窗口:Applet1.java 改 zxb.java—

   打开zxb.java—编辑源程序—Build菜单—Build—

  编译生成类文件(.class)—调试Debug--Start--

   浏览器窗口Page1.htm—查看—源文件—Applet1.class改zxb.class。

3.2 事件的处理

  事件(event)处理 

  事件源(source)和事件监听(listeners)之间的交互。

3.2.3 典型组件事件处理

 5.菜单事件 

 [实例 3.7] 菜单事件应用程序

 实现菜单退出事件:

 定义退出子菜单项—监听菜单事件—调用处理程序—处理菜单事件。

  Java 菜单 jvcd.exe,代码 jvcd_dm.htm

   MenuItem MenuFileExit = new MenuItem();      // 定义退出子菜单项

   MenuFileExit.addActionListener

   (new java.awt.event.ActionListener(){

   public void actionPerformed(ActionEvent e){  //监听菜单事件

   MenuFileExit_actionPerformed(e);             //调用处理程序

      }

    });

   void MenuFileExit_actionPerformed(ActionEvent e){

   System.exit(0);                              //处理菜单事件

   }

 

习题 3 

3.3 编写 Windows 应用程序框架,

  包括文件(打开)、编辑(复制)等菜单项。 

3.4 编写文件(退出)的菜单事件应用程序,包括定义菜单项,

  监听菜单事件,调用处理菜单事件的程序,处理菜单事件。 

 

第4章 Java 应用程序和Applet小程序实例

单词和缩写

  init start stop destory Font Bold Italic String CodeBase

  Code Width Height Pixel 

4.1 Java 标准类和类中方法的调用

4.1.3 数学运算(Math)类 

 数学类引用格式:

   Math.method(variable);

 数学运算(Math)类的定义:

  public final class java.lang.Math extends java.lang.Object{

   ......

   public static double cos(double a);

   public static double sin(double a);

   }

4.1.4 图形(Graphics)处理类 

 图形(Graphics)处理类的定义:

  public abstract class java.awt.graphics extends java.lang.Object{

   public abstract boolean drawImage(Image img,int x,int y,

                  Color bgcolor,ImageObserver observer); // 显示图像

   public abstract viod drawLine(int x1,int y1,int x2,int y2);//画线

   public abstract viod setColor(Color c);            //设置当前颜色

   public abstract viod setFont(Font font);           //设置当前字体

[示例 4.4] 在图形对象中绘制字符串

   public viod paint(Graphics g){

     g.drawString("Hello World!",5,5);

   }

 1.绘制线、矩形、椭圆 

 2.复制图形 

   copyArea(int x,int y,int width,int height,int dx,int dy);

 3.清除图形

   clearRect( int x,int y,int width,int height);

   clearRect( 0,0,size().width,size().height);  // 清除显示区

[实例 4.2] Java 矩形圆形 jvjy.exe  jvjy_dm.htm 

[实例 4.3] 函数计算 hsjs.exe  hsjs_dm.htm 

4.3 Java 语言 Applet 小程序

  小程序指定宽高:size().width,size().height);适合页中调整。

 应用程序指定宽高:像素点 800*600。

[实例 4.4] 正弦波 zxb.htm 

 * 在 HTML 中使用 Applet

  <Applet

     CodeBase=codebaseURL               //设置路径

     Code=AppletFileName                 //指定 包名.类名.class

     Alt=AlternateText                 //转显提示文本

     Width=pixels Height=pixels    //宽高的像素点

   >

   </Applet>

 

习题 4 

4.4 编写实现绘图功能的 Applet 小程序,

  动态演示水平/垂直的正弦波、多叶曲线。 

    编写实现绘图功能的 Application 应用程序,

  动态演示水平/垂直的正弦波、多叶曲线。 

补充题 使用 Java 语言的图形功能设计各种图形程序。

  1)多色多叶曲线 dsdyqx.htm、换笔增叶 hbzy.htm

      变色3叶曲线(bs3yqx.java):红绿蓝 ss3yqxtx

      动态3色3叶曲线(dt3s3yqx.java):红绿蓝

      三色3叶曲线(ss3yqx.java):红绿蓝

     四色4叶曲线(ss4yqx.java):红绿蓝黄

     五色5叶曲线(ws5yqx.java):红绿蓝黄青

  2)多叶曲线设计考虑因素

     线宽、花叶颜色、各叶片色、背景色、叶数、位置、显示速度

     r,g,b:背景颜色 画笔颜色

    x,y:水平移动图形 x=0--639 垂直移动图形 y=0--479

    r1,r2:水平方向半径 r1=0--320 垂直方向半径 r2=0--240

    i,j:心形曲线叶片 i=1--24 心形曲线弧度 j=0--2*PI

  3)正弦波设计考虑因素

    线宽、颜色、分段颜色、背景色、波峰数、显示速度

    画图方向:向左画、向右画、向上画、向下画、同时向右和向下画

    位置:水平、垂直多条正弦波

第5章 Java 语言多媒体编程

5.2 图形和图像处理

5.2.1 设置图形颜色

[实例 5.2] 变色彩条 

5.2.2 绘制图形实例

[实例 5.3] 画图工具 

5.2.3 图像文件显示

[实例 5.4] 彩条图像 

5.3 动画制作

5.3.2 动态显示图像

时钟针转一周360°,时钟针每秒转过的角度:

秒针 6(度/秒),分针 0.1(度/秒),时针 1/120(度/秒)。