「オブジェクト指向:2」の編集履歴(バックアップ)一覧はこちら
「オブジェクト指向:2」(2006/01/05 (木) 00:44:07) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
グダグダ言っていてもしょうがないので、まじめにオブジェクト指向なお話。
オブジェクト指向とは、従来の構造化言語(C言語など)と異なって、「オブジェクト」という単位で考えよう、ということだ。
なんて簡単に済ませてしまうと怒られそう。。
でも、オブジェクト指向の話なんて、本屋に言ったらいっぱいあるから、あえてここで私が述べる必要のあることってあまりない。ほんとに。
ただ、「オブジェクト指向」というパラダイムと「オブジェクト指向言語」と「UML」は、区別したほうがいいと思う。どうも、ごっちゃになっている(あるいは故意にごっちゃにしている)本が多いような。。
前にも書いたけど、C言語でだってアセンブラでだってオブジェクト指向なプログラミングはできる。
JavaやC++は、オブジェクト指向でプログラミング「しやすい」言語でしかない。
結局のところ「オブジェクト指向」というのはプログラミングの際の考え方の一つに過ぎない。
犬小屋をつくるのと、ビルを建てるのとでは設計から施工までの工程と方法論が違うのと、それは似ている
犬小屋をつくるときはその処理の全てを見通すことができるし、屋根から作っても壁から作ってもかまわない。
ビルを建てる時には、犬小屋を作るときみたいに細かい材料の寸法や材質も重要だけど、それらをあるていどひとまとめにして抽象的に捉える必要がある。まず全体の構成やコンセプトを決めて、その後で細かい部分の検討に入る。
そういう風な方法論の違いが、「構造化プログラミング」と「オブジェクト指向プログラミング」なのである。どっちがいい悪いというものではないと思う。
グダグダ言っていてもしょうがないので、まじめにオブジェクト指向なお話。
オブジェクト指向の使いどころと学び方について。
オブジェクト指向とは、従来の構造化言語(C言語など)と異なって、「オブジェクト」という単位で考えよう、ということだ。
なんて簡単に済ませてしまうと怒られそう。。
でも、オブジェクト指向の話なんて、本屋に言ったらいっぱいあるから、あえてここで私が述べる必要のあることってあまりない。ほんとに。
ただ、「オブジェクト指向」というパラダイムと「オブジェクト指向言語」と「UML」は、区別したほうがいいと思う。どうも、ごっちゃになっている(あるいは故意にごっちゃにしている)本が多いような。。
前にも書いたけど、C言語でだってアセンブラでだってオブジェクト指向なプログラミングはできる。
JavaやC++は、オブジェクト指向でプログラミング「しやすい」言語でしかない。
結局のところ「オブジェクト指向」というのはプログラミングの際の考え方の一つに過ぎない。
犬小屋をつくるのと、ビルを建てるのとでは設計から施工までの工程と方法論が違うのと、それは似ている
犬小屋をつくるときはその処理の全てを見通すことができるし、屋根から作っても壁から作ってもかまわない。
ビルを建てる時には、犬小屋を作るときみたいに細かい材料の寸法や材質も重要だけど、それらをあるていどひとまとめにして抽象的に捉える必要がある。まず全体の構成やコンセプトを決めて、その後で細かい部分の検討に入る。
そういう風な方法論の違いが、「構造化プログラミング」と「オブジェクト指向プログラミング」なのである。どっちがいい悪いというものではないと思う。
てなわけで、方法論そのものが違うのでオブジェクト指向プログラミングはやっかい。学習する際にはC言語などの手続き型言語とは一線を画して考える必要がある。
その意味で、C++という言語は罪作りな言語だと思う。C言語を使っていた人が移行しやすいのは確かなんだけど、そのままC言語の書き方でもプログラムを作れてしまう。
これだとプログラムの「考え方」「作り方」の移行が難しい。従来どおりの手続き型の記述を廃したJavaやC#のほうが、素直にオブジェクト指向の考え方に入っていけるとはおもう。
だけど、上のほうで書いたとおり、作るプログラムによってオブジェクト指向を使ったほうがいい場合とそうでない場合がある。
その意味では、その時々でどちらの書き方もできるC++という言語は、案外優れているのかもしれない。
表示オプション
横に並べて表示:
変化行の前後のみ表示: