• ベストアンサー

プログラム初心者です。

これから、C++言語を用いてシステムを開発する、プログラマです。 質問内容は 1.CとC++の違いが良く分かりません。 2.オブジェクト指向プログラミングの意味がよく分かりません。「e-words」などで調べても文章の意味が良く分からず困っています。 以上、2点よろしくお願いします。

  • burbe
  • お礼率35% (78/221)

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

  • ベストアンサー
  • FM-8
  • ベストアンサー率39% (65/164)
回答No.4

CとC++の違い. C++は,Cの後に出来た言語です. Cのコードがそのまま使える「上位互換」です. つまり,C++のライブラリなどを使わなければ, C++のプログラムといいながらもCのスタイルで全部書くことも出来ます. そんなのはC++とはいわないとは思いますが... クラスや多重定義,継承,仮想変数など違いはたくさんあります. これらの多くは,たぶんこれまで,アプリが実装してきたものを洗練された形で言語に実装したものでしょう. マシンコードに落ちてしまえば,同一目的のプログラムのコードに,Cだ,C++だという違いは無いですからね. (もちろん,コードには差はありますが,結局は,たとえばpentiumのネイティブコードの集合体で作られていると言うことです.) これらは,決まり事ですので,本を読めばあらかた理解できると思います.(わたしは理解してませんけど.) もっと,難関なのは,Windowsプログラムです. ご質問は,どのようなシステムかわかりませんが, windows プログラム(windowsやUnixのX-window)は, 画面の制御や,値の取得などで,必ずライブラリを呼ばなくてはなりません. 他人の書いたコードを使わないといけません. これを理解するのは,大変な困難が待ち受けています. 似たような関数名が山ほど有り,呼ぶときの条件など細かく規定されています. 頑張ってください. オブジェクト指向については,私には理解できてません. カプセル化だ,メッセージだ,メソッドだといろいろなワードがありますが, 今後,ますます巨大化していくプログラムコードでは,中身を完全に理解することは不可能なので, 「オブジェクト」という概念により,プログラムコードを固まりとして動作するようにして,対応していこうというものだと理解しています. これは, プログラムが複雑になったので,その昔, 「サブルーチン」というものを作り出して作業を外から隠蔽したように,固まりの作業を効率よく固めて,外からは,わりあい簡単なインターフェースで呼ぶようにした仕様というくらいの理解です. もちろん,サブルーチンとオブジェクトは全然違うものですが, 発想の起点は似ているのではないかと言うことです. 機能単位を固まりにすれば, マルチCPUで動作させるときも効率良いんでしょうね.

その他の回答 (3)

回答No.3

自分も当初、C++をはじめるにあたって概念でつまづいた記憶があります。実際何か目的を持って書いてみないとわかりづらいですよね。 正確じゃない説明かもしれませんが↓ たとえば文字列を扱うとき、Cではchar配列ですよね。 char* strC = "komugi100g"; 文字列の長さを調べるときにはどこかからライブラリを読み込んできてその中にある適当な関数を使ったりします。 int nLengthStrC = strlen(strC); 一方でたとえばMFCでは文字列を扱うのにCStringクラスが用意されています。 CString strMFC = new CString("komugi100g"); 同じように長さを調べるときにはCStringクラスのLength()メソッドを使えます。 int nLengthStrMFC = strMFC.Length(); つまり、変数に処理が内臓されてるようなものです。このようにデータ内容(データ)と、処理(メソッド)がひとまとめにされたものがオブジェクトです。 クラスはその型のようなものです。クラスからオブジェクトを固有のメモリ領域に割り当てて使用できる状態にすることをインスタンス(実体)化といいます。 CString strMFC; ←じつはポインタを作ってるだけ strMFC = new CString("komugi100g"); ←インスタンス化してる 実際にプログラムを書くときには class クラス名{ private:  メンバ変数など public:  メソッドなど } と、仕様を決めてからクラスを実装します。 あとはみなさんの言われるとおりです。チームで開発しているのであれば、同じチームのプログラマさんに聞いてもいいような気がしますが ^^; 簡単な質問だと聞きづらいかもしれませんが、自分の能力を理解してもらうことは重要なことです。自分の能力を過大評価し、できないことを安請け合いしてしまったりすると開発に大きなリスクをもたらしその責任が自分に返ってきたりしますので気をつけてください。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

オブジェクト指向について、その概念をこのスペースで説明することはちょっと難しいです。ちゃんと理解しようと思ったら本一冊は読まないと無理です。 と言うわけで、用語集などではなく、オブジェクト指向について解説した本を買ってみて勉強されてはいかがでしょうか? 最終的には、 ・カプセル化 ・継承 ・多態性 の概念が理解できて、それらの性質を言語でどう記述するか理解できて、それを実装に活かせればいいのですが。 がんばってください。

回答No.1

1&2共に下記のURLをご覧下さい。  http://www.bohyoh.com/CandCPP/FAQ/ ご自身で読んで、理解した方が良いと思いますよ。

関連するQ&A

  • なぜ「C言語」にOOPが実装されなかったの?

    1972年に開発された「C言語」(C++ではない)には「オブジェクト指向」というのがないのですが、なぜ「C言語」に「オブジェクト指向」というのが実装されなかったのですか? 「オブジェクト指向プログラミング」は1960年代後半に登場していたのですが、後発の「C言語」には「ポインタ」はあっても「オブジェクト指向」というのがありません。なぜ「オブジェクト指向」は実装されなかったのでしょうか? 当時コンピュータの性能が低かったため実装が難しかったことと、まだ当時オブジェクト指向自体が無名だった為、「C言語」の開発者自体も知らなかったということもあるのでしょうか?

  • C++の将来性・・・

    昨年まで、C++プログラマをしていました。しかし恥ずかしながらぜんぜんオブジェクト指向じゃないコードを書いていました・・・ いまJavaで仕事していて感じるのですが、C++にはガベージコレクションがないので、実はオブジェクト指向プログラミングがとてもやりにくい言語ではないですか? そうなると、C++の必然性がなくなり、C Java C# に取って代わられてC++は消え去っていく言語なのでしょうか。 「いやC++はすばらしいオブジェクト指向言語だ!」というお叱りを期待しています。

  • C++とJava

    オブジェクト指向を採用しているC++とJava。オブジェクト指向プログラミングに関連している部分で、二つの言語の大まかな違いは何でしょうか。

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

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

  • Cとjavaの違い

    学校でC言語プログラミングを学んでおり,新たにjavaも習うことになったのですが, C言語とjava言語の違いはどのような所なのでしょうか? java言語は「オブジェクト指向」ですが,C言語は何指向なのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • プログラムを始めるなら

    C言語をある程度知っている人なら、プログラミングは大丈夫だと言われる理由って何でしょう? 別にC言語を元に全てのプログラムができたわけでもないし、 オブジェクト指向のプログラムとは毛色が違うし。 私自身C言語,javaなどのソースが読める程度しかできませんが、 プログラミングが出来るとはお世辞にも言えません。 何故このような事が言われているのでしょう? また、最初に学ぶべき言語としてはやはりC等の言語がいいのでしょうか? それともアセンブリ言語のような物の方がいいのでしょうか?

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

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

    • ベストアンサー
    • Java
  • オブジェクト指向プログラミング学習向けのサンプルプログラム

    「これは参考になるよ」というような、 オブジェクト指向プログラミング学習向けのサンプルプログラムを教えていただけませんか? 言語はDelphiです。 Delphiに限らず、他言語(Java、C#、C++あたり)でも結構です (移植しますので、出来ればCUI、GUIが少ないものが理想です) よろしくお願いいたします。 Delphiにてオブジェクト指向プログラミングを学んでいます。 書籍等で、基本的なことは学びました。 理解度およびスキルを上げるために、実際にプログラミングしたいと思います。 (入門書を利用してや、 自分で考えながらのテスト的なプログラミングには限界を感じてまして^^;)

  • オブジェクト指向のプログラミング言語の勉強法について

    オブジェクト指向のプログラミング言語の勉強法について お尋ねします。 iPhoneアプリを作ってみたいと思い、最近プログラミングの勉強を始め、C言語の入門書を一通り熟読しました。そして、次にオブジェクト指向の言語を勉強しようと思っているのですが、iPhoneアプリの開発に用いる言語は「Objective-C」で、他にも開発に使用できる言語として、「C++」や「Java」などいくつかあると聞き、どれから勉強すればいいのか迷っています。 Objective-CとC++やJavaでは、技術的(表現力?)に大きな差はあるのでしょうか?それとも、Objective-Cだけでも十分なのでしょうか? そのほか、まだC言語を勉強したばかりでわからないことが多いのですが、ゲームアプリの開発にどのような知識が必要なのか、また効率のよい学習順序、お勧めの書籍など助言を頂ければ幸いです(__) ちなみに、 ・プログラミングの経験は全くありません。 ・はじめはシューティングなど動的なゲームアプリを作ろうと思っています。 ・妥協せず、基礎からきちんと勉強したいと思っています。

  • オブジェクト指向の開発の成功事例

     プレゼンテーションの授業でオブジェクト指向言語について調べています。  オブジェクト指向言語の再利用により生産性が向上するのは分かったのですが、それによる具体的な成功事例の資料はありますでしょうか? また、ほかのプログラミング言語と比べてどの程度開発効率が向上するのかの資料があればお教えください。 よろしくお願いします。