クラスの連携 つづき |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
さっきも言ったけど。
機能を作る時、
クラスとして作るか、
メソッドとして作るか。
クラスとメソッドの関係は
プログラムを設計したり
拡張したりする時に
「どこにどの機能を置くか」
重要になるんだ。
しっかりイメージしてね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
うーん。
結局、
クラスとメソッドは、
どう使い分ければ
いいのかな? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
この子
ストレートね・・・。 |
 |
|
 |
うーん
よく分からない。 |
|
|
例を見て
みよう。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
使い分けの明確な区切りは
無いし、考え方によって
異なるんだけど・・・。
クラスにするかメソッドにするかの
基準の一つは「機能の大きさ」。
プログラムだとコードの量ね。
そうだな、例でちょっと見てみよう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
まずは、大きさによって
使い分けるんだ。
どんな風に分けるのかな? |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
はいっ。 |
|
|
|
 |
|
 |
|
例:メソッドを分離してクラスを作る |
|
1、オブジェクトの内容を考える(分離したイメージ) |
2、クラスを設計する(変更) |
3、インスタンスを生成して使用する |
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
例えば、
作り変えていくうちにメソッドが
巨大になっちゃった場合。
絵の具工場の発展とともに
染料製造装置やラベル作成装置に
いろいろな機能を追加していって
役割がどんどん大きくなって
いった場合とか考えられるね。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
気がついたら
なんのこっちゃー
って感じ。
イメージしてね。 |
|
あちゃー
ぽんちょ
たいへんだ。。。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
絵の具工場
パンパンだね。。。
装置の大きさが最初の3倍
ぐらいになっちゃってるね。
機能はたくさんあっても
これじゃ装置が複雑だよね。
操作が大変かも。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
1、オブジェクトの内容を考える(分離したイメージ) |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そんな巨大装置は、装置と
いうより、もはや「工場」だ。
という訳で、「装置」を工場から
分離して、新しい「工場」に
してしまおう。
分離したイメージはこんな感じ。
こんな風に、巨大装置を
小さな装置に分割して、
専用の工場に入れよう。
つまり、
肥大化したメソッドを分離して
クラスに作り変えるんだよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
メソッドをクラスに
しちゃうんだ!
染料装置を
染料工場に。
ラベル装置を
ラベル工場に。
新しい工場を
造っちゃうんだね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
スッキリして
拡張も
しやすそうだろ。 |
 |
|
 |
そうだね!
そんなことが
できるんだ。 |
|
|
|
 |
|