3

我得到了如下的小任务。您能否介绍一下如何实现这一点

编写一个简单的结构化程序和简单的oo程序,实现显示形状功能。您的程序应该简单地打印出(到控制台)形状的数字,然后要求每个形状显示自己,这也将导致向控制台生成一行输出,每个形状一个。在对集合进行排序和显示形状之前,您的主程序创建形状集合是完全可以的。您的程序应该支持圆形、三角形和正方形,但应该使用多态性,以便主程序不知道它正在处理的形状类型,而是统一处理形状

我创建了一个程序来创建如下所示的形状,但我不确定如何创建上述形状并将它们存储在集合中并迭代以在控制台上显示这些形状。有人告诉我不要使用数据库来存储形状

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JApplet;

public class DrawShapes extends JApplet {

    public void paint(Graphics g) {
        g.setColor(Color.RED);
// drawing string
        g.drawString("Hello World!", 100, 100);
// drawing rectangle
        g.draw3DRect(120, 120, 120, 120, true);
        g.setColor(Color.blue);
        g.fill3DRect(120, 120, 120, 120, true);
// drawing circle
        g.drawOval(240, 240, 120, 120);
        g.setColor(Color.CYAN);
        g.fillOval(240, 240, 120, 120);
// drawing square
        g.drawRect(350, 350, 250, 100);
        g.setColor(Color.magenta);
        g.fillRect(350, 350, 250, 100);
// drawing trinale
    }
}
4

1 回答 1

1

只是一个想法如何去做。请注意,图形对形状集合是隐藏的。

interface Drawable {
  public void draw(Graphics g);
}

class DrawableSquare implements Drawable{
  public DrawableSquare(int x, int y, int width) { ... }
  public void draw(Graphics g) 
  {
    g.fillRect(x, y, width, width);
  }
}

class Screen {
  Collection<Drawable> drawables;

  public void paint(Graphics g) {
     for (Drawable dr: drawables) {
       dr.draw(g);
     }
  }
}
于 2013-09-06T11:52:16.653 回答