回答編集履歴

1

質問の追記を受けて追記

2019/12/19 13:32

投稿

Q71
Q71

スコア995

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: