return super.toString() + \ } }
(4) 定义测试类Exp4_1,在main方法中创建相应类的对象,并调用对象的方法。 public class Exp4_1 { public static void main(String[] args) { MovingBall mb = new MovingBall(10, 20, 40, \ System.out.println(mb); } }
(5) 运行程序,得到相应的实验结果,示例结果如图4-3所示。
图4-3 实验1的运行结果
实验2. 三角形类的定义 [实验目的]
掌握类的定义及对象的使用。 [问题描述]
计算三角形的面积和周长,有关要求如下:
(1) 先设计一个Point类,包括其构造方法、设置和修改坐标、求解两点距离等方法。 (2) 再使用Point类,设计一个三角形(Triangle)类,包括构造方法、求解三角形面积和周长等方法。
[实验思路]
按照类的定义,逐一定义属性和方法,需要注意的是三角形类可以由不在同一条直线上的三个点来确定,所以Triangle类可以设置三个Point类型的数据成员,即Triangle类有三个对象成员。
[关键步骤]
(1) 定义Point类。主要代码如下,方法的具体实现请读者自己完成。 class Point {
private int x; private int y;
public Point(int x1, int y1) { ? ? //代码省略 }
double dist(Point p) { //求两点间的直线距离 ? ? }
public int getX() { return x;
}
public int getY() { return y; } }
(2) 定义Triangle类,主要代码如下所示: class Triangle { Point p1,p2,p3;
public Triangle(Point p1, Point p2, Point p3) { this.p1 = p1; this.p2 = p2; this.p3 = p3; }
double area() {
double a = p1.dist(p2); double b = p2.dist(p3); double c = p1.dist(p3); double s = (a + b + c) / 2;
double area1 = Math.sqrt(s * (s - a) * (s - b) * (s - c)); return area1; } }
(3) 定义测试类Exp3_1,在main方法中创建类的对象,并调用相应方法。 设构成三角形的三点的坐标分别为(5, 5)、(10, 20)、(15, 5)。
(4) 运行程序,得到相应的实验结果,示例结果如图3-1所示。
图3-1 实验1的运行结果
实验五
一、接口的运用
[实验目的]
理解接口的定义、实现及应用。 [问题描述]
用代码描述下述的问题:
马、猫、狗都属于哺乳动物,均属动物之列,而且哺乳动物都是可以运动的,其形式包括走动、奔跑、跳跃三种。运用继承及接口的知识,编写一个程序来模拟上述动物的层次结构及运动行为。
[实验思路]
根据问题叙述,所有的哺乳动物都是可以运动的,都具有可运动这一特征,可以将这一特征定义为一个接口(Movable),几种运动方式可以在接口中用常量表示,另外,在接口中可以声明一个方法来具体模拟运动行为。
[关键步骤] (1) 定义接口(Movable),将走动(WALK)、奔跑(RUN)、跳跃(JUMP)三种运动方式以常量表示,并声明一个方法。主要代码如下所示:
interface Movable {
public static final int WALK=0; public static final int RUN=1; public static final int JUMP=2;
void move(int mode); //参数表示运动方式 }
(2) 定义超类哺乳动物类(Mammal),该类拥有表示名字(name)的一个private属性,以及对应的set及get方法、还有一个带参数的构造方法,此外,该类还实现了Moveable接口,在实现接口声明的move方法时,可以根据外界传入的mode参数来采取不同的模拟行为,由于mode参数的取值为接口中声明的常量值,故可以考虑使用switch语句来做相应的处理。主要代码如下:
class Mammal implements Movable { private String name;
public Mammal(String name) { this.name = name; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public void move(int mode) { switch (mode) { … … //代码省略 } } }
(3) 定义Mammal类的几个子类,Horse类、Cat类、Doggie类。 (4) 定义测试类Exp4_3,代码如下所示: public class Exp4_3{
public static void main(String[] args){
Mammal[] a={new Doggie (\狗\猫\马\ for(int i=0;i (5) 运行程序,得到相应的实验结果,示例结果如图4-5所示。 图4-5 实验3的运行结果 二、Java布局管理和java的事件 一、实验目的: 1. 掌握Java语言中几种布局管理器。 2. 能熟练综合运用这几种布局管理器设计复杂的图形界面。 3. 理解事件的概念。 4. 能熟练使用Java提供的事件处理方法,进行符合要求的事件处理 二、实验要求: 结合多种布局管理器设计一个复杂的图形界面。 掌握Java提供的各种事件接口,并能灵活使用。 三、实验内容: 3.1 Java布局管理 容器中组件的位置和大小通常由布局管理器决定。每个容器都有一个默认的布局管理器。当容器被创建后,可以通过特定的方法改变容器的布局管理器。 1. 用BorderLayout和GridLayout布局管理器设计一个如下图所示的图形界 面: