验二:类与对象
一、实验目的
1. 掌握面向对象程序设计的方法和Java作为面向对象程序设计语
言的特点;
2. 掌握如何构造一个类和如何创建一个对象,了解类与对象的关系; 3. 掌握修饰符和构造方法的使用规则; 4. 掌握如何创建包,通过包如何管理类; 5. 掌握Java的继承机制和实现多态的方法。 二、实验要求
1.编写一个体现面向对象思想的程序。
2.编写一个创建对象和使用对象的方法的程序。 3.编写不同成员变量、成员方法修饰方法的程序。 4.编写创建自定义包的程序。 三、实验内容
(一)创建 Applet 应用小程序
1.创建一个 Applet 应用程序 SY2_1.java 文件。
? 程序功能:建立一个 Applet 小程序,使其可以进行简单的加
法运算。该程序要包含类、接口、属性、方法、事件等面向对象的基本元素。
? 程序源代码如下: import java.awt.*;
import java.awt.event.*; import java.applet.Applet;
public class SY2_1 extends Applet implements ActionListener {
Label label1=new Label(\\; Label label2=new Label(\\;
TextField field1=new TextField(6); TextField field2=new TextField(6); TextField field3=new TextField(6); Button button1=new Button(\相加\; public void init() { // 初始化 add(field1); add(label1); add(field2); add(label2); add(field3); add(button1);
button1.addActionListener(this); }
public void actionPerformed(ActionEvent e) { // 处理按钮事件
int
x=Integer.parseInt(field1.getText())+Integer.parseInt(field2.getText());
field3.setText(Integer.toString(x)); // 数值转换为字符串 } }
2. 编写一个浏览 Applet 应用程序的页面文件 SY2_1.HTML,源代码如。
3. 将 SY2_1.java 源程序编译为 SY2_1.class 文件
4. 使用浏览器或使用小程序查看器浏览 SY2_1.HTML 文件(即在命令提示符窗口输入:appletviewer SY2_1.HTML),运行。 (二)创建对象并使用对象
1.编写 Applet 程序
? 程序功能:这个 Applet 程序要在页面上输出两个矩形,并
伴有文字输出。
? SY2_2.java 程序的源代码如下: import java.awt.*;
import java.applet.Applet;
public class SY2_2 extends Applet { MyBox b1=new MyBox();//创建对象 b1
MyBox b2=new MyBox(170,20,60,60); //创建对象 b2 public void paint(Graphics g) { b1.setPosition(20,20); b1.setSize(60,60); b1.draw(g);
g.drawString(\矩形 1 的 X 位置: \b1.getX(), 20, 100);
g.drawString(\矩形 1 的 Y 位置: \b1.getY(), 20, 120);
b2.draw(g);
g.drawString(\矩形 2 的 X 位置: \+b2.getX(), b2.getX(), b2.getY()+80);
g.drawString(\矩形 2 的 Y 位置: \+b2.getY(), b2.getX(), b2.getY()+100); } }
class MyBox {
private int x, y, width, height; MyBox() { x=0;
y=0;
width=0; height=0; }
MyBox(int xPos, int yPos, int w, int h) { x=xPos; y=yPos; width=w; height=h; }
public void setPosition (int xPos, int yPos) { x=xPos; y=yPos; }
public void setSize (int w, int h) { width=w; height=h; }
public int getX() { return x; }
public int getY() { return y; }
public void draw(Graphics g) {
g.drawRect(x, y, width, height); } }
2.编写一个浏览 Applet 应用程序的页面文件 SY3_2.HTML
3. 将 SY2_2.java 源程序编译为 SY2_2.class 文件
4. 使用浏览器或使用小程序查看器浏览SY2_2.HTML文件(即在命令提示符下输入:appletviewer SY2_2.HTML),运行.
思考:程序的结构。类与对象的关系。对象创建、使用、销毁的过程。 (三)使用修饰符
有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。常用的修饰符如下。Public,private,protected,package,static,final,transient,volatile
1. 程序功能:通过两个类StaticDemo、SY2_3 说明静态变量/方法与实例变量/方法的区别。
2. 编写类文件SY2_3.java,程序源代码如下:
class StaticDemo { static int x;
int y;
public static int getX(){ return x; }
public void setX(int x ) { this.x = x; }
public int getY() { return y; }
public void setY(int newY) { y = newY; } }
public class SY2_3 {
public static void main(String[] args){ System.out.println(\静态变量x=\StaticDemo.getX());
//System.out.println(\实例变量y=\taticDemo.getY()); // 非法,编译时将出错
StaticDemo a= new StaticDemo(); StaticDemo b= new StaticDemo(); a.setX(1); a.setY(2); b.setX(3); b.setY(4);
System.out.println(\静态变量a.x=\etX()); System.out.println(\实例变量a.y=\etY()); System.out.println(\静态变量b.x=\etX()); System.out.println(\实例变量b.y=\etY()); } }
3. 对上面的源程序进行编译,排错并运行。 (四)包的使用
1.了解并使用 Java 的系统包
包是类和接口的集合。利用包可以把常用的类或功能相似的类放在一个包中。Java 语言提供系统 包,其中包含了大量的类,可以在编写 Java 程序时直接引用它们。为便于管理和使用它们,将这些类 分为了不同的包。包又称类库或 API 包,所谓 API(Application Program Interface)即应用程序接口。API 包—方面提供丰富的类与方法供大家使用,如画图形、播放声音等,另一方面又负责和系统软硬件打交道,圆满实现用户程序的功能。所有 Java API 包都以“java.”开头,以区别用户创建的包。
接口解决了 Java 不支持多重继承的问题,可以通过实现多个接口达到与多重继承相同的功能。
处理程序运行时的错误和设计程序同样重要,只有能够完善处理运行时出错的程序,软件系统才 能长期稳定地运行,异常处理就是说明如何处理程序运行时出错的问题。 2.创建并使用自定义包
? 自定义包的声明方式
声明包语句必须添加在源程序的第一行,表示该程序文件声明的全部类都属于这个包。
? 创建自定义包 Mypackage
在存放源程序的文件夹中建立一个子文件夹 Mypackage。例如,在“C:\\j2sdk1.4.2_01\\lib ”文件夹之中创建一个与包同名的子文件夹 Mypackage(C:\\j2sdk1.4.2_01\\lib \\Mypackage),并将编译过的 class 文件放入该文件夹中。注意:包名与文件夹名大小写要一致。再添加环境变量 classpath 的路径,例如: C:\\j2sdk1.4.2_01\\lib;
? 在包中创建类
? YMD.java 程序功能:在源程序中,首先声明使用的包名
Mypackage,然后创建 YMD 类,该类 具有计算今年的年份,可以输出一个带有年月日的字符串的功能。 ? 编写 YMD.java 文件,源代码如下:
package Mypackage; //声明存放类的包 import java.util.*; //引用 java.util 包 public class SY2_4_YMD {
private int year,month,day;
public static void main(String[] arg3){} public SY2_4_YMD(int y,int m,int d) { year = y;
month = (((m>=1) & (m<=12)) ? m : 1); day = (((d>=1) & (d<=31)) ? d : 1); }
public SY2_4_YMD() { this(0,0,0); }
public static int thisyear() { return
Calendar.getInstance().get(Calendar.YEAR);//返回当年的年份 }
public int year() {
return year;//返回年份 }
public String toString(){
return year+\\onth+\+day;//返回转化为字符串的年-月-日 } }
? 编译 SY2_4_YMD.java 文件,然后将 SY2_4_YMD.class 文
件存放到 Mypackage 文件夹中。
3.编写使用包 Mypackage 中 SY2_4_YMD 类的程序