• ベストアンサー

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

Te-Shoの回答

  • Te-Sho
  • ベストアンサー率52% (247/472)
回答No.1

私は10年前まではCOBOLで汎用機のプログラムを書いていました。 今はVB、VC++と渡り歩いてこの数年JAVAでコードを書いています。 10年という経験者と言うご質問者さまに合わせましてある程度専門的な観点からお答えしたいと思います。 COBOLなどの手続き型のプログラミングの場合、フローチャートなどの流れ図に従いながら設計を行います。 その中で、同じロジックが組まれている部分をサブルーチンと呼ばれる子供のプロセスを呼び出して処理を行いますね。 しかし、その中で使用する変数のメモリ空間はCOBOLで言えばDATA DIVISIONで定義したプログラム内の共通したメモリ空間を使用する事になると思います。 一方、JAVA、C(VBもオブジェクト指向ですね。)などは、そのサブルーチンが一つ一つが物体(オブジェクト)という仮定したモノを取り扱う形で設計します。そのためにフローチャートの前にUMLなどを使用してオブジェクトの設計を行います。 オブジェクトにはプロパティ(属性)やメソッド(作用)があり、プロパティを設定して、作用させることによって得られた戻り値を他のオブジェクトやメインルーチンで使用する事になります。 一つ一つのサブルーチンが物体として完結しているので、その部分の流用が可能となり、コーディングの流用化や品質責任の明確化などの利点があります。 もちろん、オブジェクト指向な言語でもベタで手続き型としてプログラムを書くことは可能です。 たとえば全ての変数をメンバ変数として定義してコードを作成した場合はオブジェクト指向で書いたコードとは実際言えないと思います。

sakuuuuu
質問者

お礼

返事遅れてすみません。 回答ありがとうございました。 COBOLでサブルーチンを使用する場合、あらかじめコンパイルしてロードモジュールにサブルーチンを組み込んでおかなくてはいけません。(staticの場合)なのでメモリ空間もサブルーチンと共用で使用しなければなりませんが、javaはサブルーチン自身が1つのオブジェクトなのでメモリ空間はメインPGと独立して生成されるということでしょうか。なるほど。参考になりました。 UML図なども勉強してみたいと思います。

関連するQ&A

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

    お世話になります。 VB.NETはオブジェクト指向言語であると聞きました。しかし、VB6.0はそうではないという話を耳にしました。 一部では、6.0もオブジェクト指向言語であるとも聞いたのですが、実際のところどうなのでしょう? どうであれば、オブジェクト指向言語と言えるのでしょうか?

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

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

    • ベストアンサー
    • Java
  • VBがオブジェクト指向言語でない理由

    一般的にVBはオブジェクト指向ではない(VB7でその方向へ向かう)といわれていますが、実際にVBをさわり始め、いろんな本を読んでみると、 1)クラスが作成でき、構造体と関数を1つにまとめ、メンバ(プロパティ・メソッド)を定義付けできる 2)Implementsステートメントでクラスの継承が出来る と、ある程度のオブジェクト指向言語の要件を備えているように見えます。 といっても私はJAVAもSmallTalkも知らないので、「何が真のオブジェクト指向か」というのを良く判っていないのかも知れないのですが。 しかしC++関連書などを読んでいると出てくるクラスの使用例などはVBのそれと大差なく、なぜクラスの作成もできて、継承も可能なVBがオブジェクト指向ではないのか? という疑問がわいてきました。 JAVAとは何が違うのか? これが出来ないからオブジェクト指向ではないのだ! という理由をご存じの方、回答もらえればうれしいです。

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

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

  • オブジェクト指向が理解できません 教えてください

    現在Javaを勉強しているのですが、 Javaに限らず最近のプログラムの特徴であるオブジェクト指向がよくわかりません。 C言語も学んでいたので少しは知識はあります。 以下は私の解釈です。 C言語は関数の集まったものがいわゆる私たちが作るプログラムで、 作ったプログラムはそれ単体で機能する。 それに比べてオブジェクト指向を用いたプログラムでは、 オブジェクトからクラスが生成、このクラスが一つのプログラムとなる。 クラスのプログラムをいくつも集めたものが最終的なソフトとなる。 Cだとミスを一か所直すと他のところを直す羽目になるかもしれませんが、 オブジェクト指向においてはミスをオブジェクト単位で修正するので、 他のオブジェクトへの影響度は少ない。 よってオブジェクト指向の方が拡張・修正などでも優れている。 こんな感じに解釈したのですがどうでしょうか? オブジェクト指向では最終的なプログラムソフトはオブジェクトの集合体によって構成されているため、オブジェクト指向=オブジェクト中心の考えと言えるのでしょうか。

  • オブジェクト指向

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

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

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

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

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

  • オブジェクト指向の特徴

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

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

    オブジェクト指向がいまいちよくわかりません。 「なぜ、あなたはJavaでオブジェクト指向開発ができないのか」という本を読んだのですが、スッキリしません。 オススメのオブジェクト指向の本がありましたら、教えてください。 よろしくお願い致します。