• ベストアンサー

オブジェクト指向の特徴

プログラミングにおいて Java言語などのオブジェクト指向とは 「クラス(設計図)からインスタンス(実体)を量産できる。」がオブジェクト指向ではないプログラミング言語との決定的な違いなのでしょうか? またオブジェクト指向とオブジェクト指向ではない言語の決定的な違いや 実際に実務において経験した感覚的な違いなどがあれば教えてください。 インターネットに乗っていない些細なことでも構いません。

  • Java
  • 回答数4
  • ありがとう数0

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

  • ベストアンサー
回答No.2

サックリと言うと、オブジェクト指向プログラミングの理念は"再利用"によるヒューマン・エラーの削減です。 稀にクラスでプログラムを作れば「オブジェクト指向」だとか勘違いしてる人も居ますので、ご注意を。 人に「オブジェクト指向」の話を聞く場合、それを見抜くぐらいの能力が必要です(笑) また、(「オブジェクト指向」とか)簡単にできちゃう人も自分基準でモノを話すので自分基準でモノを話すので参考にならないと思います。 そう言う人は「難しい事を考えずに普通にプログラム組めば良いんだよ」とか言っちゃたりします。 下記の「1~3」がオブジェクト指向プログラミングにおける"再利用"の分類です。 ★(1).クラス(設計図)からインスタンス(実体)を量産できる。 分かりやすく生物で例えるとDNAを再利用してクローン(複製)を量産できる(この場合 、オブジェクトからオブジェクトをクローニングすると言う意味ではありません。) ★(2).クラスを継承し機能を拡張できる。 この場合、当然ゼロから作るのではなく継承元のクラスを活用する事ができるので、その分 労力の削減でき、手間が少なくなるので その分 プログラミング上のヒューマン・エラーも多少 減らせます。 ★(3).ラップ(分かりやすく例えるとプラグイン)によるオブジェクトの再利用。 様々なオブジェクトを乗せ変えて活用させる事ができます(実際の PC で分かりやすく例えるなら、NVIDIAのグラフィック・ボードがさせるとか、AMDのグラフィック・ボードがさせるとか、その他のメーカのグラフィック・ボードがさせるとか、そんな感じで機能を拡張できる)。 ★(4).オブジェクト志向プログラミングのデメリットは肥大化です。 つまり、上記のように再利用できないモノはオブジェクト化のメリットがなく、デメリットだけだと言って良い程です。 細かい事を言うなら、オーバーライドによる多態性が分かりにくいですね。 親クラスA、その子クラスBが有ったとして、両方に同じメソッドM(子クラスBがオーバーライドしている)が有ったとします。 子クラスBをインスタンス化した場合、親クラスA内からメソッドMを呼び出す処理があると(デフォルトの場合)クラスBのメソッドMが呼ばれます。 参考。 オーバーライドとオーバーロード間違えないために http://qiita.com/ShirakawaYoshimaru/items/058484a8fb584eb452b2

その他の回答 (3)

回答No.4

>回答No.3 amanojaku1 >ヒューマン・エラー この場合のヒューマン・エラーとは、プログラマーのヒューマン・エラーです。 プログラマーのヒューマン・エラーとは、プログラマーのヒューマン・エラーによって生み出されるバグと言う意図です。

回答No.3

>回答No.2 amanojaku1 >オブジェクト指向ではないプログラミング言語との決定的な違いなのでしょうか? つまり、オブジェクト指向ではないプログラミング言語よりもオブジェクト指向プログラミングの方が「"再利用"によってヒューマン・エラーの削減量が多くできる」と言う事です。 これはオブジェクト指向ではないプログラミング言語では"再利用"ができないと言う事ではありません、あくまでも(オブジェクト指向ではないプログラミング言語より)オブジェクト指向プログラミングの方が"再利用"率が高いと言う話です。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.1

古く、プログラミングでは 作業分担化が、進んだ際に 同機能が 各担当に、より 此処に、バラバラに、 記述されて、いました しかし、此では エラーが 起こった、動作が 何の、タイミングか プリンタ出力なのか、 ディスプレー出力なのか、 は、判っても どの、ルーティンで 起こったか は、判りません 其処で 単一動作、単一ルーティン の、運動が 起こりました 此を オブジェクト指向と、呼びました 此、以降 ファームウエアや、オブジェクト志向サポート言語が、 現れ、始めた と、 認知して、います

関連するQ&A

  • オブジェクト指向に関して。

    Javaの解説本を読んでオブジェクト指向プログラミングという物があることをしりました。その本には「オブジェクトはデータとそのデータを扱うための機能を持っている。この機能はメソッドと呼ぶ。クラスは設計図のような物で変数とメソッドから構成されている。設計図を実際に形にした物がインスタンスである。」と書いてありました。私はオブジェクト=クラスのような感じがしたのですが、実際のところオブジェクト=クラスでいいのでしょうか?  また、友人に話したところ、オブジェクト指向はサブルーチンに似ているといっていました。私はプログラミングの知識が全くないのでサブルーチンという物が何なのかわからないのですが、サブルーチンとオブジェクト指向の考え方は違うような気がするのです。友人に説明して納得させるにはどうしたら良いのでしょうか? ぜひ、力を課してください。

  • オブジェクト指向の教え方

    新入社員にJavaを教えているところなのですが、オブジェクト指向プログラミングをどのように教えていいか困っています。 全員がC言語研修を受講済みで、さらにJava言語も、継承やオーバーロード、例外まで一通り教えて、一応理解しています。 そこで、次のレベルとして、C言語風のプログラミング(「プログラム=関数の集まり」の考え方)から、オブジェクト指向(「プログラム=オブジェクトの集まり」の考え方)に意識改革させたいところです。 問題領域をオブジェクトの集まりとしてとらえ、そこからクラスを抽出していく、という説明がよくありますが、 「何をオブジェクトにするのか」「どのようにクラスを抽出したらいいのか」の部分を詳しく教えたいのですが、どのように説明したらいいでしょうか。また、参考になるWebサイトなどありませんでしょうか? 自分が普段作るときは、ほぼ「勘」でクラス設計していますので、それでは教えられなくて困っています。よろしくお願いします。

    • ベストアンサー
    • Java
  • オブジェクト指向、理解しやすい?

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

  • オブジェクト指向とUMLについて

    「オブジェクト指向」と「UML」の勉強をしようと思っているのですが、お勧めの参考書またはWebサイトをお教えていただきたいです。 ※オブジェクト指向については、JavaやC++のような言語についてではなく、オブジェクト指向についてです。 ちなみに私はJavaは経験したことがありますが、正直"オブジェクト指向がなんたるか"はわかっていないです… 現在業務でJavaに携わっていてるので、オブジェクト指向という考え方をこの機にしっかりと学べればと思っています。 UMLはまったく無知です; クラス図やシーケンス図など中身にナニがあるか微妙に知っているだけです…; どちらか片方でも良いので何かございましたら、お教え願います。 …参考書だと電車で読めるので、ちょっとだけ喜びます(笑

  • Javaにおけるオブジェクト指向とは?

    現在Javaを勉強しております。 以前はC言語を勉強しておたのですが、 JavaとCの違いにおいてJavaの特徴としてオブジェクト指向と習いました。 しかしいまいちこのオブジェクト指向を理解できません。 プログラムを一つのまとまりとして考えるというのはどういうことなのでしょうか? 確かにJavaはC言語とは違いいくつかのプログラムからできている (はず?見当違いだったらすみません) C言語が一つの大きなプログラムでできているとすると、 Javaは細かいプログラムの集合体であると私は考えていました。 この細かいプログラムの集合体というのがオブジェクト指向なのでしょうか? 全くの見当違いだったらすみません。 よろしくお願いします。 

    • ベストアンサー
    • Java
  • オブジェクト指向という考え方がいまいちわかりません。

    オブジェクト指向という考え方がいまいちわかりません。 オブジェクト指向とは一体どういう意味なのでしょうか? また、いわゆるオブジェクト指向の言語(Javaなど)とそうでない言語(PL/SQLなど?)との違いも合わせて教えていただけないでしょうか? 宜しくお願い致します。

  • オブジェクト指向の利点とは?

    汎用機でCOBOLのSEを10数年やってました。(今は自営業) COBOLはプロセス型の言語といわれているのに対して C言語はオブジェクト指向型の言語といわれています。 私はC言語やJAVAで開発したことはないのですが、 C言語、すなわちオブジェクト指向の利点ってなんでしょう? JAVA、C言語はオブジェクト指向ですよね。 私はソフトウェア開発技術者の資格など持っていますのでオブジェクト指向の表面的な意味は分かります。 ですが実際、アプリ開発時・運用時にどのような利点があるのかがイマイチ分かりません。 「どっちでもいいんじゃないか」なんて思ってしまいます。 プロセス指向(VB、COBOL等)とオブジェクト指向(C言語、JAVA)の差異って何なんでしょう。 よろしくお願いします。

  • オブジェクト指向とモジュール設計

    プログラミング設計の基礎について勉強しているのですが、どうしても、オブジェクト指向とモジュール設計の違いがわかりません。 どちらも、システム(プログラム全体)を機能ごとに分割して各パーツごとにプログラム設計~テストまでを行ない、完成させたパーツを組み合わせてシステムを完成させると言う解釈をしているのですが、オブジェクト指向とモジュール設計のちがいがみつけられません。 この解釈自体が間違っているのでしょうか?

  • オブジェクト指向の言語

    シスアド受験者です。テキストにジャバはオブジェクト指向の言語だと書いてあります。オブジェクト志向とは具体的にどのようなことなのか教えていただけないでしょうか。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • オブジェクト指向

    Javaプログラミングを少し勉強し始めました。 そこで、オブジェクト指向という言葉が出てきました。 オブジェクトを作る利点というか意味はどのようなところにあるのでしょうか? 比較的簡単なプログラムなら、変数とメソッドで表示できると思うのですが・・。 ・コードが読みやすくなる ・実行速度が速くなる などの利点があるのでしょうか? なるべく分かりやすく解説してもらえればと思います。

    • ベストアンサー
    • Java

専門家に質問してみよう