3

私は以下のような小さな仕事を与えられました。これを実装する方法を教えてください

表示形状関数を実装する単純な構造化プログラムと単純な oo プログラムを作成します。プログラムは、形状の場合に数字を (コンソールに) 単純に出力し、各形状にそれ自体を表示するように要求する必要があります。これにより、形状ごとに 1 行の出力がコンソールに生成されます。メイン プログラムで図形のコレクションを作成してから、そのコレクションを並べ替えて図形を表示することはまったく問題ありません。プログラムは、円、三角形、および正方形をサポートする必要がありますが、メイン プログラムが処理している形状のタイプを認識せずに形状を一様に扱うように、ポリモーフィズムを使用する必要があります。

以下のような形状を作成するプログラムを作成しましたが、前述のように形状を作成してコレクションに保存し、これらの形状をコンソールに表示するために反復する方法がわかりません。形状の保存にデータベースを使用しないように言われました

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 に答える