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