java的一道问题

来源:百度知道 编辑:UC知道 时间:2024/05/09 13:24:49
• [AS0702]练习类层次结构的设计和打包。
– 定义一个抽象基类Shape,表示图形。它包含以下成员:
• 表示一个图形对象的位置的protected数据成员(可以是点对象,或坐标x、y);
• 两个public和abstract类型的方法:一个用于移动图形的方法move(),一个显示图形的方法show()。
– 从Shape派生出子类:
• 直线Line,用两个图形点表示;
• 矩形Rectangle,用对角线上的两个点表示;
• 圆Circle,用圆心和半径表示。
• 实现每个子类的toString()方法。
– 把上述类和接口都加进包as07.graphic。
• 为包as07.graphic创建归档文件mygraphic.jar(包含.java和.class文件)。
• 在包as07.graphic之外定义一个测试类TestGraphic,通过选择派生类的10个随机对象测试包as07.graphic中的类,然后为每个对象调用show()方法,在派生类中使用toString()方法
如果有解出来的,我会追加分的

你是武大java选修课的吧 ^_^ 同志啊
看老师的课件,第6课里面的例子改一下就行了
nipperhjw用的是C++,不是java
我自己做了一下,不知道对不对,仅供参考:
1.Shape.java:

package as07.graphic;
public abstract class Shape {
protected double x1,y1,x2,y2;
public abstract void move(double mov_x, double mov_y);
public abstract void show();
}

2.Line.java:
package as07.graphic;
public class Line extends Shape {
public Line (double dot1_x,double dot1_y,double dot2_x,double dot2_y) {
x1 = dot1_x ;
y1 = dot1_y ;
x2 = dot2_x ;
y2 = dot2_y ;
}
public void show () {
if ( x1 == x2 ) {
if ( y1 == y2 )
System.out.println("这是一个点 ("+x1 + ","+y1+")");
else System.out.println("直线:\tx="+x1);
}
else if ( y1 == y2 ) {
System.out.println("直线:\ty="+y1);
}
else {
float k = (float) ( ( y2 - y1 ) / (x2 -x1