石橋秀仁です. At Thu, 27 May 1999 18:47:31 +0900 matz / netlab.co.jp (Yukihiro Matsumoto) wrote: > |そうですね. CRCのようなロールプレイイング(各人が各オブジェクトの > |役割を演じる)をすることで, 「オブジェクトがメッセージを交換しつつ > |仕事が進む」というイメージがつかめると思います. ただし, (省略) > このロールプレイイングってのはすごく良いと思います.気を付け > なくてはいけないのは,オブジェクトというのは「もの」そのもの > というよりも,「もの+黒子」であることです. > > バナナはひとりでに皮をむかないけど,バナナオブジェクトは「皮 > をむけ」メッセージを理解するでしょう,ということ. そうなんですよね. 入門者向けの本とかで, りんご(apple)の属性は 「色」, 「重さ」などで, 機能は「食べる(eat)」, とか書いてあるんです. で, 「りんごが食べる(apple eats)」ってなんじゃ〜って思いました. 現実世界で能動的役割を果たさない「もの」に, むりやり機能/メソッドを 与えるというのもムチャクチャな話だと思います. この例では, 「ひと」, 「りんご」があって, 「"ひと" "eats" "りんご"」という(OO用語での) 関連を使った分析が自然だと思うのです. もちろんソフトウェアの要求(requirements)によって, 分析の精度も かわってくるので, まつもとさんの例がダメだというわけではないです. 現実の分析/設計としてはありえますから. # 分かりやすい違いは, 再利用性に現れますね. # でも再利用の計画が無い場合の設計ならそれでもいいと. ですが, 初心者に対しては概念(concept; 分析時のクラス)だけの 説明がいいのではないかと. つまり, 設計(ソフトウェアとして 実現する手段)を無視した分析がいいと思うのです. そして, 設計を無視した「分析」の成果物に対して, ソフトウェアで 実現するための「設計」をおこなうと. OO開発プロセスの特徴は スパイラルモデルですが, ここでは分析と設計と実装はぶった切って しまおうと. # じゃあウォーターフローモデルじゃん(笑)という突っ込みはナシ(^^; --- Hideto Ishibashi <http://vip.cis.kurume-nct.ac.jp/%7Es34204/>