- ベストアンサー
オブジェクト指向の特徴
プログラミングにおいて Java言語などのオブジェクト指向とは 「クラス(設計図)からインスタンス(実体)を量産できる。」がオブジェクト指向ではないプログラミング言語との決定的な違いなのでしょうか? またオブジェクト指向とオブジェクト指向ではない言語の決定的な違いや 実際に実務において経験した感覚的な違いなどがあれば教えてください。 インターネットに乗っていない些細なことでも構いません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
サックリと言うと、オブジェクト指向プログラミングの理念は"再利用"によるヒューマン・エラーの削減です。 稀にクラスでプログラムを作れば「オブジェクト指向」だとか勘違いしてる人も居ますので、ご注意を。 人に「オブジェクト指向」の話を聞く場合、それを見抜くぐらいの能力が必要です(笑) また、(「オブジェクト指向」とか)簡単にできちゃう人も自分基準でモノを話すので自分基準でモノを話すので参考にならないと思います。 そう言う人は「難しい事を考えずに普通にプログラム組めば良いんだよ」とか言っちゃたりします。 下記の「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)
- amanojaku1
- ベストアンサー率54% (265/488)
>回答No.3 amanojaku1 >ヒューマン・エラー この場合のヒューマン・エラーとは、プログラマーのヒューマン・エラーです。 プログラマーのヒューマン・エラーとは、プログラマーのヒューマン・エラーによって生み出されるバグと言う意図です。
- amanojaku1
- ベストアンサー率54% (265/488)
>回答No.2 amanojaku1 >オブジェクト指向ではないプログラミング言語との決定的な違いなのでしょうか? つまり、オブジェクト指向ではないプログラミング言語よりもオブジェクト指向プログラミングの方が「"再利用"によってヒューマン・エラーの削減量が多くできる」と言う事です。 これはオブジェクト指向ではないプログラミング言語では"再利用"ができないと言う事ではありません、あくまでも(オブジェクト指向ではないプログラミング言語より)オブジェクト指向プログラミングの方が"再利用"率が高いと言う話です。
- Nouble
- ベストアンサー率18% (330/1783)
古く、プログラミングでは 作業分担化が、進んだ際に 同機能が 各担当に、より 此処に、バラバラに、 記述されて、いました しかし、此では エラーが 起こった、動作が 何の、タイミングか プリンタ出力なのか、 ディスプレー出力なのか、 は、判っても どの、ルーティンで 起こったか は、判りません 其処で 単一動作、単一ルーティン の、運動が 起こりました 此を オブジェクト指向と、呼びました 此、以降 ファームウエアや、オブジェクト志向サポート言語が、 現れ、始めた と、 認知して、います