JAVAの勉強をしていている学生です。
常々思っていたのですが、クラスの考え方がしっくりきてませんヽ(~-~
よく参考書などで書かれていることで
「クラスは設計図のようなもの、オブジェクトはそこから作成した実体」
「鋳型がクラスでどんどん作れるのがインスタンス」
といった話が疑問でならないのです。
というのも・・クラスの設計って、自分自身をフィールドに宣言したりできますよね。。
でそこから生成して、また自分自身のフィールドに生成して・・とか。
インターフェースを実装したクラスで、、、内部クラスを持ったクラスで、、、ジェネリッククラス、、。
となってくると、最初の考え方では、論理的に無理?私の脳内では変換しきれないです(´;ω;)
多分前提となる考え方が間違っていたり、私の想像力が乏しいだけだと思います。
どなたか、「クラスってこう考えればオブジェクト指向が見えてくる」と表現している本やサイトなどご存じないでしょうか。
一朝一夕で理解しようとは思っていませんので、きちんと参考にして理解しようと頑張ります!
「私的には・・」や「あなたが勘違いしている箇所は・・」といったご意見もぜひお聞きしたいです!
クラスかオブジェクト指向かどっちかというより、クラスありきでJAVAのオブジェクト指向が本当に理解できると考えています。参考書やWEBを探してみた限りではやっぱり理解できないです(´;ω;)
ちなみにC言語を中学生で始め、プログラミングに触れました。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
オブジェクト指向のクラスと、Javaの機能としてのクラスは別に考えたほうがいいかもしれません。
Javaの機能を使えば、オブジェクト指向のクラスを表現できるだけなのです。
>インターフェースを実装したクラスで、、、内部クラスを持ったクラスで、、、ジェネリッククラス、、。
ですから、Javaの機能を無理にオブジェクト指向で表現する必要はありません。
本は下記がオススメ。
>オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講
>UMLモデリングの本質
No.3
- 回答日時:
たとえ話に納得できないことと、言語仕様を理解できないこととは別のことです。
たとえ話に、無理に納得する必要はありません。
言語仕様をひとつひとつ覚えていけば問題ありません。
プログラミング言語は、結局のところプログラミングしやすいように設計されます。
その中で現実にあるものの概念を取り入れることもありますが、
その目的はプログラミングしやすくすることであって、現実のものの性質を真似ることではないので、
現実のものと似ていない部分も出てきます。
>言語仕様をひとつひとつ覚えていけば問題ありません。
地道に基本から覚えていくことからもう一度はじめてみます!
自分がしていることで合っているのか不安もありましたが、
無理に納得する必要もないし言語使用を覚えていくといったことが大事だとわかりました^^/
ありがとうございました。
No.2
- 回答日時:
> というのも・・クラスの設計って、自分自身をフィールドに宣言したりできますよね。
。> でそこから生成して、また自分自身のフィールドに生成して・・とか。
そういう設計だからとしか言いようがありませんが・・・。
つまり、外部からのインスタンス生成は許可しないという設計であったりするわけですよね。
例えばテキトーに記しますが、以下のように自身のクラスフィールドやクラスメソッドで
自身をインスタンス化し、外部からのインスタンス化を許可しない(つまりコンストラクタが
privateなど)の場合。
public class Hoge {
public void test() {
Fuga fuga = Fuga.getInstance();
fuga.method1();
}
}
public class Fuga {
private static Fuga _instance = new Fuga();
private Fuga() {
}
public Fuga getInstance() {
return this._instance;
}
public void method1() {
System.out.println("Fuga");
}
}
こういった場合、『外部からのインスタンス化は許可しない』ということも設計であり、
インスタンスフィールド、インスタンスメソッドは、自身の振る舞いに対する設計と
言えますよね。
> 「クラスは設計図のようなもの、オブジェクトはそこから作成した実体」
> 「鋳型がクラスでどんどん作れるのがインスタンス」
これらは、オブジェクト指向を全く理解していない人へ向けての謳い文句です。
それが全てではないので鵜呑みにしてはいけません。
手を動かしてみて慣れてきたら、自然とそれを設計している自分に気づくでしょう。
内部クラスであってもジェネリッククラス、クラスはクラスです。
今まさに注目しているクラスだけを見たら、そこに記述されている属性や振る舞いは、全て
設計と言えます。
あまりデザインパターンは明るくないのですが、シングルトンでしたっけ。
>全てではないので鵜呑みにしてはいけません
やはりそうですか、最初は何となくイメージしていたのですが、やはり鵜呑みにはできませんよね。
>手を動かしてみて慣れてきたら、自然とそれを設計している自分に気づくでしょう。
はやく気づけるようになりたいです!急がばまわれってことで、
自分でどんどん書いていくしかないですね^^;
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/05/21 02:41
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
- 学校 中2女子不登校です。中2の5月辺りからクラス替えの変化で1年の頃からのストレスによる頭痛が悪化し、体 2 2022/03/23 17:16
- 学校 助けるというよりかは聞いてアドバイスを欲しいです。ただ聞いてくれるだけでもいい。今まで結構な数のアニ 2 2023/05/16 19:44
- Java オブジェクト指向プログラミングの実践本を紹介してください 3 2022/09/19 04:56
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- 大学受験 大学受験について。 都内の偏差値60程度の中高一貫校に通っている高一です。大学では商学部や経営学部に 5 2022/11/09 20:49
- いじめ・人間関係 辞めたい感情が強くなり過ぎて辛いです 1 2022/08/25 16:28
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グローバルIPとプライベートIP...
-
「天声人語」をインターネット...
-
eclipseのパッケージって何?
-
IPアドレスの3バイト目の呼び方
-
java eclipse 型に解決できません
-
同じクラスにならない確率を教...
-
CString: 識別子が見つかりません
-
ネスカフェ エクセラ と UCCク...
-
配列の重複する値とその個数を...
-
河合塾のクラス分けについて
-
Applet、Panelのクラス体系につ...
-
中学2年です‼︎ 明日.学級の級長...
-
dllと同じプロジェクトにする方法
-
どこからも呼ばれていない無意...
-
packageとimport の違いって?
-
標準モジュールとクラスモジュ...
-
クラスのプロパティに構造体を...
-
重複エラーを解決するには
-
UMLのクラス図はmain()も含むん...
-
標準入力 System.in について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3年間同じクラスになる確率
-
「天声人語」をインターネット...
-
配列の重複する値とその個数を...
-
自分事ですが、私のLINEのスク...
-
java eclipse 型に解決できません
-
同じクラスにならない確率を教...
-
どこからも呼ばれていない無意...
-
グローバルIPとプライベートIP...
-
担任にプレゼント
-
数学の計算問題。 3年間同じク...
-
クラスのプロパティに構造体を...
-
河合塾のクラス分けについて
-
IPアドレスのクラスAを取得して...
-
共通で使う関数を集めたクラス...
-
自作のクラスファイルがインポ...
-
1 つのヘッダファイルに複数の...
-
ヒートテックやファイバーヒー...
-
dllと同じプロジェクトにする方法
-
main()を持つクラスが2つ以上...
-
同一パッケージにあるクラスが...
おすすめ情報