2012年11月22日

CodeStudy 21-5 プロトタイプのこと ②

CoseStudy で Javascript の練習を続けています。
先日 セクション 21-5 に正解できましたので、復習を兼ねて まとめを書いておきます。

問題

Circle オブジェクトが定義されています。 これに、円周を求める circumference( ) と、面積をを求める area( ) メソッドを定義して、正しく出力させましょう。



function Circle(radius) {
  this.radius = radius;
  this.PI = 3.14;
}

//ここにメソッドcircumference()area()を定義する。
Circle.prototype.circumference = function(){
  return this.radius * 2 * this.PI;
};
Circle.prototype.area = function(){
  return this.radius * this.radius * this.PI;
};

var circle1 = new Circle(3);
var circle2 = new Circle(25);

output("半径"+ circle1.radius + "の円の円周は" + circle1.circumference() + "で、面積は"+ circle1.area() + "です。");

output("半径"+ circle2.radius + "の円の円周は" + circle2.circumference() + "で、面積は"+ circle2.area() + "です。");




まず 円周を求める公式は、直径 × 3.14 で、円の面積を求める公式は、半径 × 半径 × 3.14 でした。
この式をメソッドにして、クラス Circle の prototype に続けて書けばうまく行きそうです。

1~4行目 クラス Circle が定義されています。引数で radius を受け取って Circle.radius に代入していますが、問題文には書かれていませんが、radius は英語で半径という意味なので、おそらく半径を扱っているのでしょう。ということは、14~15行目の (3) と (25) の引数は、半径の数値なのでしょう。
PI = 3.14 は Circle のプロパティにしてしまっていいと思うので、3行目に書いておきました。ここまでで、計算に必要な プロパティ は揃いました。
自分が 答えとして 書くのは 7~12行目までです。

7~9行目 円周を計算する メソッドです。8行目 this.radius には、1~2行目で 引数として受け取った、半径が代入されていますので、これを 2倍すれば 直径になります。さらに 3.14 を掛ければ、円周になります。この処理を 7行目で 無名関数の書き方で、クラス Circle の prototype.circumference に代入すれば メソッドの完成です。

10~12行目 こちらもやっていることは 7~9行目と同じです。メソッドの中身が 半径 × 半径 × 3.14 になっています。

ひとまず prototype の問題は解き終わりました。参考書などを見ると、さらに prototype を使った継承という技法があるみたいなのですが、これは かなり難しくて、今の所 さっぱり判っていません。この辺の事が判ったら、また 別の記事にまとめたいと思います。

0 件のコメント:

コメントを投稿