矢沢流 これで納得!オブジェクト指向入門 第1回(下)

http://itpro.nikkeibp.co.jp/members/NSW/ITBASIC/20050617/162923/

クラスを洗い出したら,個々のクラスごとにメンバー(クラスにグループ化される関数と変数)を取り決めて行きます。この順序は,とても重要です。

この順序通りで行うことはまずありません.普通は同時並行的に行われます.それは時間がないとか設計者がいないからとかの問題ではなく,単純にこの設計手法によって得られる設計の品質の問題です.一般的に言ってこの順序で作られた「設計」は出来が悪く,それにもとづいて実装すると生産性や保守性が下がることが極めて多いのです.

名詞が,クラスの候補になります。名詞は,物の名前を表すものだからです。ただし,すべての名詞がクラスになるわけではありません。

必ずしも間違いではないものの,あまりお奨めできる方法ではありません.全くの初心者が最初に手を付ける時には仕方ないのかもしれませんが,これを正しいやり方だと誤解して悪い癖が付く恐れがあります.

現実世界は,物を単位としてグループ化されています。それをそのままプログラムにモデリングできるのがOOPです。

ダウト.これはモデラー特有の意見です.
http://d.hatena.ne.jp/JavaBlack/20050401#p1
http://d.hatena.ne.jp/sumim/20040525#p1
http://d.hatena.ne.jp/sumim/20041019#p1

物に注目した細分化によって,再利用性と保守性が向上します。なぜでしょうか?それは,同じ物がほかの業務や遊びで使われる場合があり得るからです。プログラムの保守は,現実世界の変化に伴って要求されることだからです。

ソフトウエアの保守性と現実世界とのマッピングはあまり深い関係はありません.そうなる可能性もあるものの,決して高くはない.「再利用の単位をオブジェクトとして切り出す」という戦略は間違ってませんが,現実世界の物にマッピングすると再利用しやすい単位で切り分けられることはめったにありません.