0

以下のコードは、私の本のメソッドに関する章に記載されています。いくつかのことについて少し混乱しています。

  1. run()メソッドがメソッドを呼び出していると信じているとき、私の理解は正しいcreateFilledCircleですか?
  2. run()メソッドは受信createFilledCircle者で送信者ですか?
  3. 3 つの場合add(createFilledCircles...red,yellow and green);、プログラマーはどの情報が引数で許可されているかをどのように知るのでしょうか? (x location, y location, width of figure, height of figure)で使われているのはフォーマットadd(createFilledCircle)ですか?


import acm.program.*;
import acm.graphics.*;
import java.awt.*;

public class StopLight extends ConsoleProgram {
  public void run() {
    double cy = getWidth() / 2 ;
    double cx=  getHeight() / 2; 

    double fx = cx - (FRAME_WIDTH / 2);
    double fy = cy - (FRAME_HEIGHT /2 );

    double dy = (FRAME_HEIGHT / 4 ) + (LAMP_RADIUS / 2);

    GRect frame = new GRect (fx, fy, FRAME_WIDTH, FRAME_HEIGHT);
    frame.setFilled(trye);
    frame.setColor(Color.GRAY);
    add(frame);

    add(createFilledCircle(cx, cy-dy, LAMP_RADIUS, Color.RED));
    add(createFilledCircle(cx, cy, LAMP_RADIUS, Color.YELLOW));
    add(createFilledCircle(cx, cy + dy, LAMP_RADIUS, Color.GREEN));
  }

  private GOval createFilledCircle (double x, double y, double r, Color color) {
    GOval circle = new GOval (x -r, y -r, 2 * r, 2 * y );
    circle.setFilled(true);
    circle.setColor(color);
    return circle; 
  }

  private static final double FRAME_WIDTH = 50; 
  private static final double FRAME_HEIGHT = 100;
  private static final LAMP_RADIUS = 10; 
}
4

4 に答える 4

0

1) Is my understanding correct when I believe that the run() method is calling the createFilledCircle method?

はい。

2) Is the run() method the receiver and the createFilledCircle the sender?

オブジェクト指向プログラミングでsenderreceiver、通常、通信に参加するオブジェクトまたはクラスです。あなたの場合、内からメソッドをStopLight呼び出すと、インスタンス自体が送信者と受信者の両方になります。別の例として、では、インスタンス ( ) が送信者であり、メッセージの受信者です (Java では、OOP の意味でのメッセージは基本的にメソッド呼び出しです)。createFilledCirclerunframe.setFilled(trye);StopLightthisframesetFilled

3) for the three add(createFilledCircles...red,yellow and green); how does the programmer know what information is permitted in the argument? Is the format of (x location, y location, width of figure, height of figure) being used in the add(createFilledCircle)?

プログラマーは通常、ドキュメンテーションまたはソースコードを見ることでこれを知っています:-)

addクラス階層のどこかに少なくとも 1 つのメソッドが必要であり、それらのメソッドのパラメーター リストを調べて、どの引数が許可されているかを知る必要があります。理想的には、パラメーターの型自体をリストするだけでなく、それらの使用方法とそれぞれのメソッドが実際に何をするかについての洞察を提供する JavaDoc ドキュメントが利用可能です。あなたの場合、参照をcreateFilledCircle返すため、互換性のある型をパラメーターとして受け取るメソッドが必要です。同様に、(クラス自体で宣言されている) メソッドは 3 つの値と 1 つのオブジェクト参照を受け取ります。これは、実際に呼び出す方法でもあります。GOvaladdGOvalcreateFilledCircledoubleColor

于 2012-12-04T08:12:15.273 に答える
0

1) はい - で呼び出します

add(createFilledCircle(cx, cy-dy, LAMP_RADIUS, Color.RED));
  add(createFilledCircle(cx, cy, LAMP_RADIUS, Color.YELLOW));
  add(createFilledCircle(cx, cy + dy, LAMP_RADIUS, Color.GREEN));

2) 送信者ですが、add() メソッドは受信者です。

3) createFilledCircle は、そのメソッド パラメータを次のように指定しています...

createFilledCircle (double x, double y, double r, Color color)
于 2012-12-04T08:12:34.497 に答える
0

1) run() メソッドが createFilledCircle メソッドを呼び出していると思うとき、私の理解は正しいですか?

はい。

2) run() メソッドが受信側で、createFilledCircle が送信側ですか?

「受信者」と「送信者」の意味がわかりません。これらは、呼び出されるメソッドについて話すときに人々が通常使用する用語ではありません。

(これは、初期のオブジェクト指向言語である Smalltalk プログラミング言語の用語のように見えます。それを考えると、まったく逆です。つまりrun、が送信者で、createFilledCircleが受信者です。)

3) 3 つの add(createFilledCircles...red,yellow および green); プログラマーは、引数で許可されている情報をどのように知ることができますか? add(createFilledCircle) で (x 位置、y 位置、図形の幅、図形の高さ) の形式が使用されていますか?

メソッドの宣言では、createFilledCircleメソッドが必要とするパラメーター (3 つのdouble値と 1 つの値) を指定しColorます。

このような行で:

add(createFilledCircle(cx, cy-dy, LAMP_RADIUS, Color.RED));

何が起こるかcreateFilledCircleというと、最初に が呼び出され、引数 が指定さcx, cy-dy, LAMP_RADIUS, Color.REDれ、次にメソッドの戻り値 (値) がメソッドcreateFilledCircleGOval渡されaddます。これと同じです:

GOval result = createFilledCircle(cx, cy-dy, LAMP_RADIUS, Color.RED);
add(result);
于 2012-12-04T08:13:05.413 に答える
0

1) run() メソッドが createFilledCircle メソッドを呼び出していると思うとき、私の理解は正しいですか?

はい、正しいです。ここで内部で呼び出されているため、の出力はメソッドcreateFilledCircleへのパラメーターaddです。

add(createFilledCircle(cx, cy-dy, LAMP_RADIUS, Color.RED));

2) run() メソッドが受信側で、createFilledCircle が送信側ですか?

このコードの適切な用語ではないと思います。送受信はありません。オブジェクトは 内に作成されcreateFilledCircleます。runそのオブジェクトをそれ自体に追加します。

于 2012-12-04T08:11:58.787 に答える