回答編集履歴
4
追記
answer
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
|
14
14
|
---
|
15
15
|
|
16
|
-
まあでもそれはコンパイル言語だからできる芸当だという事実もあって、動的言語というかインタプリタ言語では「クラスもオブジェクト」の方が自然です。逆に、これによって動的言語は強力な記述力を獲得しています。
|
16
|
+
まあでもそれはコンパイル言語だからできる芸当だという事実もあって、動的言語というかインタプリタ言語では「クラスもオブジェクト」の方が自然です(今どきのオブジェクト指向プログラミングが当たり前の前提の動的言語から見ればの話)。逆に言うと、これによって動的言語は強力な記述力を獲得しています。
|
17
17
|
|
18
18
|
|
19
19
|
**Pythonによる例**
|
3
追記
answer
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
---
|
9
9
|
|
10
|
-
クラスを必ずオブジェクトにしないといけない、ということはないはずです。プログラム
|
10
|
+
クラスを必ずオブジェクトにしないといけない、ということはないはずです。プログラムでは「クラス」でひな形を記述するけど、その構造はコンパイル時にぜんぶ静的に解決されて消し飛ばされる、という言語設計だってありえます。Javaなどは基本的にはこれです。
|
11
11
|
|
12
12
|
この場合は「クラスはオブジェクトとしては存在しない」「メソッドはただの(インスタンス自身を引数に取ったりする)サブルーチンになる」「属性やメソッドへのアクセスはインスタンスのメモリ番地(と属性やメソッドによって予め決められたオフセット)で行う」みたいな方針になります。低レイヤから見ればただの手続き型に近い訳です(これも程度問題ですが)。
|
13
13
|
|
2
追記
answer
CHANGED
@@ -7,8 +7,10 @@
|
|
7
7
|
|
8
8
|
---
|
9
9
|
|
10
|
-
クラスを必ずオブジェクトにしないといけない、ということはないはずです。プログラムとしては「クラス」でひな形を記述するけど、その構造はコンパイル時にぜんぶ静的に解決されて消し飛ばされる、という言語設計だってありえます。Javaなどはこれです。
|
10
|
+
クラスを必ずオブジェクトにしないといけない、ということはないはずです。プログラムとしては「クラス」でひな形を記述するけど、その構造はコンパイル時にぜんぶ静的に解決されて消し飛ばされる、という言語設計だってありえます。Javaなどは基本的にはこれです。
|
11
11
|
|
12
|
+
この場合は「クラスはオブジェクトとしては存在しない」「メソッドはただの(インスタンス自身を引数に取ったりする)サブルーチンになる」「属性やメソッドへのアクセスはインスタンスのメモリ番地(と属性やメソッドによって予め決められたオフセット)で行う」みたいな方針になります。低レイヤから見ればただの手続き型に近い訳です(これも程度問題ですが)。
|
13
|
+
|
12
14
|
---
|
13
15
|
|
14
16
|
まあでもそれはコンパイル言語だからできる芸当だという事実もあって、動的言語というかインタプリタ言語では「クラスもオブジェクト」の方が自然です。逆に、これによって動的言語は強力な記述力を獲得しています。
|
1
追記
answer
CHANGED
@@ -43,6 +43,8 @@
|
|
43
43
|
|
44
44
|
クラスベースの対立語はプロトタイプベース(インスタンスベースともいう)ですが、これ実は上述のような「クラスもオブジェクト」の立場とそんなに本質的な違いがありません……。それでもコードの見た目(流儀)をクラスベース風にするかどうかという差異は生じるので、そこで区別できます。
|
45
45
|
|
46
|
+
「オブジェクト指向」は更に広い概念で、クラスベース、インスタンスベースのどちらも含みます。
|
47
|
+
|
46
48
|
---
|
47
49
|
|
48
50
|
> 基となるのは「オブジェクト」で、「プロパティとメソッドを持つ実体」が定義なのでしょうか?
|