回答編集履歴
1
質問の追記を受けて追記
test
CHANGED
@@ -1,3 +1,39 @@
|
|
1
|
+
# 追記
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
『スッキリわかるJava入門』
|
6
|
+
|
7
|
+
> なぜJavaでは「オブジェクト同士が連携する仮想世界」を作るために、わざわざ「クラスを定義して、そのクラスからオブジェクトを生成する」という複雑な手順を踏まなけれぱならないのでしょうか。
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
おそらく、BASICあたりからいきなりJavaに飛んでこられたのでしょうか。
|
12
|
+
|
13
|
+
質問はオブジェクト指向ですが、オブジェクト指向が言われる前には「構造化しよう」と言われていました。プログラムコードの作りも構造化しますが、扱う情報も構造化します。BASICでは情報を「意味のある塊」にすることはできませんが、例えばCでは、`struct`を使って意味のある塊、すなわち構造体を作ることができます。ということは、オブジェクト指向言語ではないCでも、「わざわざ「構造体を定義して、その構造体にメモリを割り当てる」という複雑な手順を踏」んでいるわけです。
|
14
|
+
|
15
|
+
引用部分は、もうちょっとプログラミング言語の歴史を知っていれば、違う書き方をされたのではないかと思われます。
|
16
|
+
|
17
|
+
興味があれば[「プログラミング言語 歴史」で検索](https://www.bing.com/search?q=%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e8%a8%80%e8%aa%9e+%e6%ad%b4%e5%8f%b2&form=EDGEAR&qs=HS&cvid=b62f47174300407ba37e07702cb87b13&cc=JP&setlang=ja-JP&plvar=0)してみて下さい。
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
『Javaのオブジェクト指向がゼッタイにわかる本』も、同じですね。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
BASICでは、構造体を作れないので、意味のある情報の塊の管理は工夫します。はて?ダンジョン探索型RPGを作ったはずなんだけど、どうやって管理したのだろう?
|
26
|
+
|
27
|
+
数値であれば、配列を使います。インデックス0にHP、1にMP、というように。なので、「オブジェクトを大量作る」ことよりも、「オブジェクトの意味的な塊ごとに管理する」ことの方が重要ですし、苦労します。あえて言いますが、「インスタンス化によってオブジェクトを作ることを簡略化する」というのは、間違いです。クラス化することで情報と、それを扱う操作をひとまとめにして、オブジェクトの管理を簡略化します。情報の塊の設計図であるクラスを元に、実態の一つであるインスタンスを生成します。インスタンス化も、やはり管理です。「意味のある塊」と、再三書いています。RPGで、モンスターAと、モンスターBが出てきました。プレイヤーはMORLISを唱え、モンスターAには効きました。モンスターAは一定時間怯え、攻撃をしてこなくなり、アーマークラスが上がります。オブジェクトを使うのが楽なので、昔どうやっていたか忘れてしまいましたが、インスタンスによってモンスターAとモンスターBは、全く別のメモリ空間が割り当てられています。クラスに定義したインスタンスメソッドは、インスタンス内の変数領域に対して作用するので、モンスターAのアーマークラスを上げようとしてモンスターBを変えてしまうと言うことはありません。
|
28
|
+
|
29
|
+
メモリ割り当てが自動化するとか、楽になるとかということはありません。しかし、クラス化によって情報がまとまることで管理しやすくなり、インスタンスが分かれることで変更が楽になります。
|
30
|
+
|
31
|
+
あ、MORLISは、Wizardlyというゲームに出てくる呪文です。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
---
|
36
|
+
|
1
37
|
まず、object, oriented, class, instance の意味を調べましょう。
|
2
38
|
|
3
39
|
object:
|