
No.3ベストアンサー
- 回答日時:
オブジェクトは『振る舞いや状態を有しているなにか』ですよ。
例で考えたら、人間じゃなくても、そのようなものを有しているものはすべてオブジェクトです。
オブジェクト、クラス、インスタンスの解釈の順序が問題でしょうね。
インスタンスは確かにインスタンスかもしれませんが、それも1つのオブジェクトですよ。
オブジェクトが最も抽象的です。
その結果、あらゆるインスタンスをオブジェクトと呼称することが出来ます。
まあ『オブジェクト指向言語』ですから、当たり前ですね。
No.2
- 回答日時:
言葉的なものとしては、それでいいです。
それ以上も以下もなく、言葉を足しても冗長になるだけですよ。
//Human型のクラス
class Human{
private String name;
public Human(String name){
this.name=name;
}
}
class Main{
public static void main(String[] args){
//Human型のクラスから作成したインスタンスAさん
Human A = new Human("Aさん");
//Human型のクラスから作成したインスタンスBさん
Human B = new Human("Bさん");
}
}
//クラスHuman、インスタンスA、B、実行用のクラスMainは全てオブジェクトと呼べる。
No.1
- 回答日時:
しばらく前にプログラミングの世界で「オブジェクト指向」ってのがIT業界で大流行しました。
そして、質問者さんが書かれたような、クラス、インスタンス、オブジェクトを、車や動物とかタイ焼きの例で説明する文章がいろんな雑誌・書籍に書かれていたものです。
「なんとなく納得させられるけど、よくわからない・・・」って、それらの解説を読んで、私も思ったし、たぶん多くの方も同じように感じていたと思います。
日経BP社より「オブジェクト指向でなぜつくるのか」という書籍を見ると、このような説明で理解しようとするのは、「オブジェクト指向の理解を妨げることになる」と書かれています。
この本の目次を紹介すると
1章.オブジェクト指向はソフトウエア開発を楽にする技術
2章.オブジェクト指向と現実は大違い
3章.OOPを理解する近道はプログラミング言語の歴史にあり
4章.OOPは無駄を省いて整理整頓するプログラミング技術
5章.メモリの仕組みの理解はプログラマのたしなみ
6章.OOPがもたらしたソフトウエアとアイデアの再利用
7章.汎用の整理術に化けたオブジェクト指向
8章.UMLは形のないソフトウエアを見る道具
9章.現実世界とソフトウエアのギャップを埋めるモデリング
10章.擬人化して役割分担させるオブジェクト指向設計
11章.オブジェクト指向設計から生まれた素敵な開発プロセス
12章.オブジェクト指向を使いこなそう
となっています。
そして、1章にて、質問者さんの読んだような説明で理解することは、混乱を増すことになると指摘されています。
そして、「オブジェクト指向でなぜつくるか」というタイトルで一冊の本ができあがるように、ここで回答できるような分量での説明は困難ですし、それをやったとしても、ほんとうのところは分からないと思います。
それは、泳ぎ方の説明みたいなものです。言葉で、書籍で「泳ぎ方」の説明を読んでも、写真をみても自分が泳げるようになることが無いのと同じです。
実際にプール、川、海で泳がない限り、泳げるようになれないのです。
そして、Javaという言語は、メモリの仕組みをできるだけ隠そうとした言語です。ですので、5章の内容からすれば、オブジェクト指向を理解したければ、メモリの仕組みを理解するのが必須であるC言語を学ぶほうが適しているという考え方も出てくるのです。
なお、3章では、構造化プログラミングの課題として、「残された課題はグローバル変数問題と貧弱な再利用」があげらえています。この問題の解決手段としてオブジェクト指向言語が出てきます。
ただし、オブジェクト指向だけでは、この課題の解決が十分にうまくいったように思えません。時々、「システム開発にオブジェクト指向の言語を採用した。でも、生産性は上がらず、かえって低下してしまった!」という嘆きが雑誌て紹介されたりしたものです。
実際のところ、オブジェクト指向言語で開発されたプロジェクトが2年以上かけて行われ、市場に投入する寸前のベータテストで、現場からの変更依頼を取り入れることが困難との判断が出て「発売中止!」となってしまったことがあります。これは、オブジェクト指向言語が悪いというより、「新しいソフト開発の目指すもの」の議論を十分に行わず、単に「オブジェクト指向で作るから変更が容易になる」という開発部隊の希望でスタートしてしまったことが問題であり、「要件定義」が甘かったのだと言えるかもしれません。(会社としては、数億円の損害となったみたいです・・・)
ただ、開発プロジェクトに参加したプログラマの立場からすれば、「オブジェクト志向言語を下手に使うと、生産性が大きく悪化する」ということを身にしみて感じたものです。
ということで、質問者さんへの回答にはなっていませんが、さしあたり、上記で紹介した書籍を読んでみてください。
そして、本を読むだけでなく、実際にJavaやC++、C#などで、簡単なプログラムを作ってみることです。そうすれば、オブジェクト指向のことが分かってくると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/05/21 02:41
- C言語・C++・C# C# 継承の問題で programに示された拡張をすべて含んだ上で,クラス Mammal に,そのオ 1 2022/07/22 09:48
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(ソフトウェア) Figma 1 2023/06/23 14:22
- 哲学 形相的距離 1 2022/12/28 09:57
- Illustrator(イラストレーター) イラストレーターの面積を求める 1 2022/04/17 11:05
- Excel(エクセル) テキストの背後にあるオブジェクトとは 3 2023/01/03 20:22
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- PHP クラス 1 2022/08/08 15:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メソッドの引数としてのthisの意味
-
private static という変数の修飾
-
クラス、インスタンス、オブジ...
-
他のファイルの変数参照
-
クラスのメンバ関数の呼出しに...
-
PHPExcel使用で2枚目のシートを...
-
サーブレットでレスポンスが返...
-
VB.NET getとsetの概念がわかり...
-
Delphiでインスタンスが作成さ...
-
VB.netで標準モジュールからフ...
-
別のフォームでインスタンスを使う
-
教えてください。
-
javaのswingで、JLabelを継承し...
-
整数0を値とするBigDecimal
-
Systemクラスはインスタンスが...
-
javaのクラスの作り方、エラー...
-
次の日本語の意味を教えて下さい
-
Form1上にあるTextBox1を Modul...
-
DLLをアセンブリとして読み込み...
-
プログラミング、シューティン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オブジェクト参照がオブジェク...
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
インスタンス参照でアクセスで...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
VB.NET getとsetの概念がわかり...
-
変数の参照でエラーが出てしま...
-
フォームの存在をチェックする方法
-
「インスタンス」の意味をわか...
-
[Visual C#] 優先される処理に...
-
javaのクラスの作り方、エラー...
-
クラスのインスタンス名をクラ...
-
C#の構造体の開放のしかた
-
エクセル(複数インスタンス)...
-
VB6.0で、DLLを動的に参照したい
-
C#「オブジェクト参照が必要で...
-
vb.netでFAXを送信する方法
おすすめ情報