ここから本文です

C、C++、JAVAの違いってなんでしょう?オブジェクト指向っていわれてもい...

このエントリーをはてなブックマークに追加

質問者

executiverichさん

2007/7/1411:34:32

C、C++、JAVAの違いってなんでしょう?オブジェクト指向っていわれてもいまいちわかりません。
概念的なのはともかく、
コマンドの違いにより、より便利で扱いやすいプログラミングができるということですか?

お父さんに将来はビルゲイツになれといわれていて、小学生なのに必死にCを覚えています。
おじさんたち教えてください。

閲覧数:
13,445
回答数:
2

違反報告

ベストアンサーに選ばれた回答

編集あり2007/7/1418:41:59

僕と同じですね!
僕は小五後半にウイルスの作り方を自分で研究し始めたのが始まりです(笑)
まあ、そんな野蛮な事は実際しませんけどね。
おじさんじゃないけど教えてあげます(笑)

まず、オブジェクト指向の「オブジェクト」は、日本語に訳すと「物体」みたいな意味です。
プログラム上で作った「物体」に、何かを付け加えたり、改造したりして、新たな「物体」を容易に作れるという事です。
たとえば、折り畳まれた平らな段ボール箱があります。
これを組み立てて、立体的な段ボール箱にします。
この時点で、「平らな段ボール箱」から「立体的な段ボール箱」になりました。
そして、そこに物を入れる事で「物の入った段ボール箱」になり、さらにガムテープでぐるぐる巻き(?)にして、「梱包された段ボール箱」にする事が出来ます。
オブジェクト指向もそれと同じです。
Javaで言うと、、、
class ObjectA {
public void printA(){ //printA
System.out.println("A");
}
}
というクラスがあるとします。そして、これを継承(分かり易く言えば「引き継いだ」)したObjectBというクラスがあります。
class ObjectB extends ObjectA { //「extends ObjectA」なので、「ObjectA を継承する」ということ。
public void printB(){ //printB
System.out.println("B");
}
}
これは、ObjectAクラスの機能に、「printB」という新たなメソッド(機能)を追加したことになります。
これによって、ObjectBという新たなクラスが出来たのです。なので、ObjectBクラスには、
public void printA(){
System.out.println("A");
}

public void printB(){
System.out.println("B");
}
の二つのメソッドがある事になるのです。新しいクラスを作っても、その元になったクラスの機能は消えないのです。
段ボール箱は引きちぎって八つ裂きにして滅茶苦茶にしても、その素材が「段ボール」である事に変わりはない、という事です。
こんなんで理解できたかな...(汗)

つぎに、三つの言語の違いについて。
C++とJavaはC言語をもとにした言語なので、まずはC言語について。
C言語には、「構造体」というクラスっぽい存在があります。
この時点で、ある程度オブジェクト指向的にはなっていました。
初めて「クラス」が出現したのはC++が開発されたときでした。
C++の名称は、「C言語より一歩進んでいる」という意味で「C」にインクリメント演算子「++」が付加されたものです。
C++は、よく「C言語にオブジェクト指向の皮をかぶせた物だ」という風に言われます。
つまり、C言語よりオブジェクト指向的にはなったのですが、少々複雑になりました。
Javaは、C++やCをもとにした言語で、C++より使いやすく、さらにオブジェクト指向的になっています。

主にこんな感じかな...
あとは、
JavaだとGUIが簡単に扱える
Javaのプログラムは大抵どの機種でも動く
C、C++は機種に依存するため、他の機種では使用できない
そのかわり、CやC++は極めて低レベルなプログラミングが行える
とかかな....ま、最初のうちは良いんですけどね。
オブジェクト指向は、やっているうちに「こういうものか!!」と、修行僧が悟りを得たときのように(?)なりますので、ひたすら精進するのみです。
頑張って下さい!!応援してるぞー!!

質問した人からのコメント

2007/7/15 07:50:36

お二人ともありがとう。
がんばります。

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル
  • このエントリーをはてなブックマークに追加
簡単にみんなで作るショート動画アプリ Yahoo!Chocotle for Android(無料)
ベストアンサー以外の回答
1〜1件/1件中

wakatuki1006さん

2007/7/1418:42:00

おじさんではありませんがJAVAを習っている高校生がお答えします。

まずCとJAVAの違いはいうまでもなくオブジェクト指向があるかないかです。

オブジェクト指向というのは一応概念のようなものが次のようにあります

・オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりすることをいう(カプセル化)
→生成する型をprivateとう型に設定して他のオブジェクトから参照されないようにします。これは効率性をあげるためだとよく勘違いされていますが、実はコードの柔軟性、保守性、拡張が増すといわれています。

・あるオブジェクトが他のオブジェクトの特性を引き継ぐ場合、両者の間に「継承関係」があると言われる(継承)
→継承とは他のオブジェクトが持っている特性を新規に作成したオブジェクトにも同じ特性を持たせるために使用するものである。これによりオブジェクトの性能がアップするといわれている。

など、これらのことがあげられます。
そしてこれらのことは開発効率は向上するために行うのであってなくてもプログラム上では問題ないのである。つまりオブジェクト指向とはオブジェクトの効率を上げるために行うものだと思います。
 多少間違っているかもしれませんが、一生懸命回答させていただきました。

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

ID/ニックネームを選択し、「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する