• ベストアンサー

オブジェクト指向、理解しやすい?

 最近、Javaの解説書や解説サイトを見ていて、しばしば、「Javaは完全なオブジェクト指向だから理解しやすい」といった記述を見かけます。(「プログラムが見やすくなる」とかではなく)  Javaに限った話ではないのですが、個人的に、オブジェクト指向の概念は、プログラミング初心者の最大の関門ではないかと勝手に思っています。僕はPHPから入ったのですが、ある程度基本事項をマスターした後も、オブジェクト指向だけは長い間苦手としてきました。(最近やっと慣れてきたところです。)  そこで伺いたいのですが、最初にやったプログラミング言語がオブジェクト指向だったという方、オブジェクト指向の概念は、 1.わかりやすかった 2.そこでつまずいた 3.特に意識せずに通り過ぎた 4.その他 いずれでしょうか? ※最初にJavaについて書きましたが、これはただの例なので、オブジェクト指向言語全般についての質問であるととらえてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.4

自分は最初の言語がVB6.0とJavaでした(VB6.0は業務で、Javaは個人的に) なので、最初の言語がオブジェクト指向かどうかは微妙な所です。 (VB6.0はオブジェクト指向言語だと思ってないので) で、オブジェクト指向の理解については、 2.そこでつまずいた ですね。 本に書いてある内容は別に難しくも何ともないのですが、 それが何で便利なのか?構造化プログラムとどう違うか?がよく分からなかった。 (完全に独学だったのもありますが) これを乗り越えなくてはオブジェクト指向を理解する意味ないですから。 また、オブジェクト指向自体も、オブジェクト指向プログラミングと オブジェクト指向設計/分析とに大きく分かれると思いますが、 それを混同していたというのもありました。 ※「モノと捉える」と言いながら、一方で「インターフェース」なんてものが出てくる。 インターフェースって「モノ」なのか?…とか考えてた。 ただ、分かった時はすぐでしたね。ちょっとずつ分かった、という感じではなかった。 真っ暗な部屋でドアが中々見つからなかったのに、部屋の明かりを点けたらそれまでが嘘のように分かった。 そんな感じです。 UMLで設計の勉強したのと、デザインパターンをかじりだしたのがきっかけです。 ずいぶん回り道した気がする… オブジェクト指向は、ちゃんとした設計で作れば管理しやすく再利用性も高い技術です。 逆に言えば、設計に手を抜くとかえって扱いづらく再利用性のない無駄なコードにもなります。 そういう意味で実践で敬遠されてるのかもしれないですね。 何にしても、奥が深い技術なのでまだまだ勉強中です。

noname#82539
質問者

お礼

 ご回答ありがとうございます。  僕も最初は、普通に構造化でやりゃあいいじゃん、って思っていましたし、それがわかったのも突然でした。  >オブジェクト指向プログラミングとオブジェクト指向設計/分析  ・・・いままでこの分類があることすら知りませんでした。きっとこれを知らなかったのも、わかりにくかった一因ですね・・・。

その他の回答 (3)

  • aho0xff
  • ベストアンサー率12% (218/1771)
回答No.3

オブジェクト指向・・・・個人的には嫌いなんです。 何故嫌いか・・・・ってぶっちゃけ理屈だけ一人歩きしている感じがして嫌だからです。 しかも、本によって微妙に書いていることが違う・・・の・・くせに実は実コードを見ると 余り変わらない。小難しいこといってんじゃねーよ!!って言いたくなります。 ・・・でも自分が説明しようとするとやっぱり小難しくなる・・・・ いかに効率的プログラムをに作ろうと頑張ると、結果は大抵ココに行き着くような気もするだけに あの回りくどい説明はもったいないと思う。まあもしかしたらそれだけ人間の扱う言語と プログラム言語は違うものなのかも知れません。 結局私はあんまりこの手の本は読んでいません。文章で見るより実コード見たほうが 私には分かりやすかったです。 3.特に意識せずに通り過ぎた って辺りかも知れません。

noname#82539
質問者

お礼

 ご回答ありがとうございます。  もしかしたら、オブジェクト指向が難しく感じるのは、説明するのが非常に困難だからかもしれませんね。どうしても抽象的な言葉で説明せざるを得ませんから・・・。

noname#49664
noname#49664
回答No.2

>最初にやったプログラミング言語がオブジェクト指向だったという方 ごめんなさい、まったく当てはまらないんですが・・・。たぶん、4~5番目ぐらいに覚えた言語は、オブジェクト指向になってたはずですが(笑)。 オブジェクト指向の概念は、学んだ時点では「わかりやすかった」ですね。ある意味、構造体に毛の生えたようなもののイメージでしたし、実際、その程度の理解で使えましたから。#1の方と同様、ごくざっとした理解は割と簡単だったと思います。 難しいと感じたのは、その後、かなりJavaが理解できるようになってきてから、より本格的に理解する必要に迫られてからです。わかってはいても、それを実際に使いこなして設計できるようになるのはかなり経験を経ないと難しいですね。「理解できる」と「使える」は大きく違いますから。 それと、Javaなどのクラスベース・オブジェクト指向に慣れきってたので、JavaScriptのプロトタイプベースを知ったときは衝撃でした。あと、Objective CやSmalltalkのレシーバの感覚もなかなか飲み込めなかった。わかってはいても、いざ使うとなると頭に浮かんでこなくて・・・。オブジェクト指向といってもけっこう言語によって違いが大きいので、ものによってはかなり苦労することもあります。そういった意味では、Javaはかなりわかりやすいほうだと思います。 個人的な考えですが、質問者さんは、PHPから入ったから、オブジェクト指向が難しかったんじゃないかと思いますよ。私も仕事柄、PHPはよく書きますが、7割がたはオブジェクト指向なんて使わず、単なる構造化のレベルです。というか、PHPはそれで十分書けてしまうんですよね。だからプログラミング経験がない人でもわかりやすいし、だからオブジェクト指向の意味や必要性が理解しにくい。なにしろ、普通はいらないんですから(笑)。 Javaの場合、オブジェクト指向を理解しようがしまいが、書くコードはすべてオブジェクト指向なものになってしまいますから、イヤでも意識せざるを得ない。この点は大きいと思います。

noname#82539
質問者

お礼

 ご回答ありがとうございます。  PHPから入ったからオブジェクト指向がわかりにくかった、というのは、確かにその通りでした。必要性も、Javaをやるまで、別になくてもいいじゃん、とか思ってましたし。(でも、慣れると結構便利なんですよね)

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

>最初にやったプログラミング言語がオブジェクト指向だったという方 私は遠い昔のBasicから入っているので、まったくあてはまらないわけですが。 ・BasicからCに移ったときの構造化プログラミングの概念 ・CからC++に移ったときのオブジェクト指向 どちらも第一印象は、プログラミングしている中で、ばくぜんと感じていた不満点が解決したって感じで、なるほどって感じでした。 ただ、オブジェクト指向に関しては、単にデータと関連するメソッドをまとめっていう単純な理解から、いわゆる本当のオブジェクト指向に行くまでは結構間があった気はします。オブジェクト同士の関連とか生存期間とかを意識するようになったのはデザインパタンを勉強してから後か。 というわけで、私について言えば、データと関連するメソッドをまとめるっていうレベルの理解であれば、1.わかりやすかったと思います。 で、オブジェクト指向は、このレベルの理解でも、実際、かなり役に立つのも確かです。構造化+このレベルのオブジェクト指向のプログラムは読むほうも楽です。 ですが、オブジェクト同士の関連とかを考え出すと、けっこう大変なのは確かです。下手な設計とかすると、強烈に分かりにくいプログラムになることもありますし。

noname#82539
質問者

お礼

 ご回答ありがとうございます。  確かに慣れれば使いやすいものではあるんですよね。僕も最近はオブジェクト指向に慣れたので、結構使ってます。ただ、条件分岐、変数、その他普遍的なプログラミングの概念が定着しきっていない状態で、一緒に詰め込もうとすると、ちょっと難しいような気がしたもので。

関連するQ&A