Contents
オブジェクト指向言語の分類
オブジェクト指向言語と一言にいってもいろいろと分類ができます。
ずいぶんこのコンテンツは古いです。。変な感じの記述は消去中。
クラスベース
クラスからインスタンスを生成する、という視点で開発されたオブジェクト指向言語の事をクラスベースオブジェクト指向言語(Class Based Object Oriented Language)と呼称します。
Javaなどはこれにあたります。
プロトタイプベース
ある原形(プロトタイプ)からそれに機能を付加した実体を作成する、という視点で開発されたオブジェクト指向言語の事をプロトタイプベースオブジェクト指向言語(Prototype Based Object Oriented Language)と呼称します。
JavaScriptなどはこれにあたります。
まとめ
何か機能差があるかというと、それほどない場合が多いです。ただ視点が違うため、注意すべき点は多いです。
http://starry.night.nu/web/prog/javascript/c03_know_that_js_is_an_oopl.html
オブジェクト指向の嘘たち
オブジェクト指向では現実世界をモデル化する
どこぞで話題になったらしい。伝聞で聞いた、というか質問された。
これは当然嘘です。ってかだれもそんな事いってないと思う。そういう記述のある書籍って見た事ない。
オブジェクトの説明にたまたま現実の物を例にして説明している書籍は見た事あるけど、オブジェクト思考その物が現実をモデル化する物という記述をしているのは手元の書籍にはないのだが、実際にあるのでしょうか?
現実世界をモデル化しても意味ないです。我々は現実を解決するためにモデル化するのです。理想というか望む物をモデリングします。
既存システムをモデリングしないのか?という疑問があるかもしれませんが、一部はしてもそれはあくまでも理想を作成するための作業にすぎません。
理想の世界を現実の世界にマッピングするのがモデリングです。オブジェクト指向は理想をオブジェクトにマッピングする事で現実にマッピングしようとする事です。あくまでもモデル化するのは望む世界です。
ソフトウェア設計は医学と同じです。診断(現実の認知)が目的ではありません。診断は重要ですが過程の一部です。目的は治療です。
オブジェクトの識別は難しい
嘘です。オブジェクトの識別は難しくありません。業務や仕様を正確に構築する事が難しいのです。
その他
この時は若かった(ってそんなに前ではない罠)。今ではかなり違う説明になると思います。文章下手糞だな自分。もっとまとめて書けや。
モデリングサンプル
オブジェクト指向ソフトウェア開発においては小さなモデルでいくつかモデリングをする事がのぞましいです。
業務モデリングならば実際に存在する業務をモデリングするのが最初はいいでしょう。
- Amazon.co.jpのシステム
- 航空券販売サイト
- 出会い系サイト
などは具体例が多いのでモデリングしやすいかもしれません。
参考サイト
http://itpro.nikkeibp.co.jp/free/NIP/NIPCOLUMN/20030425/2/
http://www.chimimo.com/mt/archives/cat_eiaee.html
http://homepage3.nifty.com/akon/main.html