回答編集履歴

8

なぜか/が全部\になっていた。何故だ

2019/11/03 13:18

投稿

raccy
raccy

スコア21737

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- ※ なお、コンピューター用語としてはより一般的なデータ全般の意味で使われる場合があります(DBでのオブジェクトやオブジェクトストレージ等)。参考: [Object (computer science) - Wikipedia](https:\en.wikipedia.org\wiki\Object_(computer_science))
11
+ ※ なお、コンピューター用語としてはより一般的なデータ全般の意味で使われる場合があります(DBでのオブジェクトやオブジェクトストレージ等)。参考: [Object (computer science) - Wikipedia](https://en.wikipedia.org/wiki/Object_(computer_science))
12
12
 
13
13
 
14
14
 
@@ -46,7 +46,7 @@
46
46
 
47
47
 
48
48
 
49
- [4.3.1. Objects - Chapter 4. Types, Values, and Variables - The Java® Language Specification (Java SE 13)](https:\docs.oracle.com\javase\specs\jls\se13\html\jls-4.html#jls-4.3.1)
49
+ [4.3.1. Objects - Chapter 4. Types, Values, and Variables - The Java® Language Specification (Java SE 13)](https://docs.oracle.com/javase/specs/jls/se13/html/jls-4.html#jls-4.3.1)
50
50
 
51
51
 
52
52
 
@@ -74,7 +74,7 @@
74
74
 
75
75
 
76
76
 
77
- [4.3.3 object - ECMAScript® 2019 Language Specification](https:\www.ecma-international.org\ecma-262\10.0\index.html#sec-terms-and-definitions-object)
77
+ [4.3.3 object - ECMAScript® 2019 Language Specification](https://www.ecma-international.org/ecma-262/10.0/index.html#sec-terms-and-definitions-object)
78
78
 
79
79
 
80
80
 
@@ -84,7 +84,7 @@
84
84
 
85
85
 
86
86
 
87
- JavaScript(ECMASCript)での**オブジェクト(object)**は**Object型の一種**です(大文字小文字を厳密に区別していることに注意してください。この文章内では大文字から始まるObjectをオブジェクトと表記することはなく、そのまま英語のObjectと表記をします。オブジェクトという表現は全てobjectの事を指します)。Object型は[6.1.7 The Object Type](https:\www.ecma-international.org\ecma-262\10.0\index.html#sec-object-type)で説明があります。このObject型は0個以上のプロパティの集合体です。プロパティとは言ってしまえばキーとバリューのペアの集合であり、読み取りと書き込みができます。ただし、読み取り専用や、読み取り自体が関数呼び出しになっている特殊なプロパティも存在します。
87
+ JavaScript(ECMASCript)での**オブジェクト(object)**は**Object型の一種**です(大文字小文字を厳密に区別していることに注意してください。この文章内では大文字から始まるObjectをオブジェクトと表記することはなく、そのまま英語のObjectと表記をします。オブジェクトという表現は全てobjectの事を指します)。Object型は[6.1.7 The Object Type](https://www.ecma-international.org/ecma-262/10.0/index.html#sec-object-type)で説明があります。このObject型は0個以上のプロパティの集合体です。プロパティとは言ってしまえばキーとバリューのペアの集合であり、読み取りと書き込みができます。ただし、読み取り専用や、読み取り自体が関数呼び出しになっている特殊なプロパティも存在します。
88
88
 
89
89
 
90
90
 
@@ -136,7 +136,7 @@
136
136
 
137
137
  その他、手前味噌ですが、下記の記事のオブジェクトの所も参考になるかも知れません。
138
138
 
139
- [オブジェクト指向が0.05%も理解できない記事 - Qiita](https:\qiita.com\raccy\items\58254f842788707f8c53#%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B)
139
+ [オブジェクト指向が0.05%も理解できない記事 - Qiita](https://qiita.com/raccy/items/58254f842788707f8c53#%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B)
140
140
 
141
141
 
142
142
 

7

文脈をちょっと修正

2019/11/03 13:18

投稿

raccy
raccy

スコア21737

test CHANGED
@@ -168,7 +168,7 @@
168
168
 
169
169
 
170
170
 
171
- クラスの機能を実現するにあたって、Rubyでは通常のオブジェクトと同様に扱えるよう言語を設計したと言うことです。別に、クラス自体が通常のオブジェクトと同様に扱えなければならないという必然性はありません、扱ってはいけないという必然性もありません。単に、Rubyではクラスもオブジェクトとして扱えるように選択しただけです。他言語については、どちらを採用しているからはまさに様々ですので、一概に言えません。
171
+ クラスの機能を実現するにあたって、Rubyでは通常のオブジェクトと同様に扱えるよう言語を設計したと言うことです。別に、クラス自体が通常のオブジェクトと同様に扱えなければならないという必然性はありません、扱ってはいけないという必然性もありません。単に、Rubyではクラスもオブジェクトとして扱える仕様を選択しただけです。他言語については、どちらを採用しているからはまさに様々ですので、一概に言えません。
172
172
 
173
173
 
174
174
 
@@ -176,7 +176,7 @@
176
176
 
177
177
 
178
178
 
179
- 関数の機能を実現するにあたって、JavaScriptでは通常のオブジェクト同様に扱えるよう言語を設計したと言うことです。別に、関数自体が通常のオブジェクトと同様に扱えなければならないという必然性はありません、扱ってはいけないという必然性もありません。単に、JavaScriptでは関数もオブジェクトとして扱えるように選択しただけです。他言語については、どちらを採用しているからはまさに様々ですので、一概に言えません。
179
+ 関数の機能を実現するにあたって、JavaScriptでは通常のオブジェクト同様に扱えるよう言語を設計したと言うことです。別に、関数自体が通常のオブジェクトと同様に扱えなければならないという必然性はありません、扱ってはいけないという必然性もありません。単に、JavaScriptでは関数もオブジェクトとして扱える仕様を選択しただけです。他言語については、どちらを採用しているからはまさに様々ですので、一概に言えません。
180
180
 
181
181
 
182
182
 

6

誤字の修正とアラン・ケイの下りが中途半端なのを加筆

2019/11/03 13:16

投稿

raccy
raccy

スコア21737

test CHANGED
@@ -180,7 +180,7 @@
180
180
 
181
181
 
182
182
 
183
- 予断ですが、関数が第一級オブジェクトである(間接的ではなく直接的にオブジェクトとして扱えるという意味)ことは関数型プログラミングの書きやすさにおいて非常に重要な意味を持ちます。
183
+ 余談ですが、関数が第一級オブジェクトである(間接的ではなく直接的にオブジェクトとして扱えるという意味)ことは関数型プログラミングの書きやすさにおいて非常に重要な意味を持ちます。
184
184
 
185
185
 
186
186
 
@@ -188,7 +188,7 @@
188
188
 
189
189
 
190
190
 
191
- 「オブジェクト指向(object-oriented)」という名称は、この造語を作り出したアラン・ケイ自身が後悔しているようです。中には「メッセージ指向」というべきだったという人達もいます。
191
+ 「オブジェクト指向(object-oriented)」という名称は、この造語を作り出したアラン・ケイ自身が後悔しているようです。アラン・ケイは「オブジェクト」よりも「メッセージ」が重要であると述べており、その意向に即して「メッセージ指向」というべきだったという人達もいます。いずれにしても「クラス」はオブジェクト指向の本質では無く、実装手段の一つに過ぎません。
192
192
 
193
193
 
194
194
 

5

追記と構成の見直し

2019/11/03 13:13

投稿

raccy
raccy

スコア21737

test CHANGED
@@ -1,4 +1,4 @@
1
- プログラミング用語として**オブジェクト(object)**は次の二つの意味で使われます。
1
+ プログラミング用語として**オブジェクト(object)**は主に次の二つの意味で使われます。
2
2
 
3
3
 
4
4
 
@@ -8,19 +8,11 @@
8
8
 
9
9
 
10
10
 
11
- ※ なお、コンピューター用語としてはより一般的なデータ全般の意味で使われる場合があります(DBでのオブジェクトやオブジェクトストレージ等)。参考: [Object (computer science) - Wikipedia](https://en.wikipedia.org/wiki/Object_(computer_science))
11
+ ※ なお、コンピューター用語としてはより一般的なデータ全般の意味で使われる場合があります(DBでのオブジェクトやオブジェクトストレージ等)。参考: [Object (computer science) - Wikipedia](https:\en.wikipedia.org\wiki\Object_(computer_science))
12
-
13
-
14
-
15
- オブジェクト指向をサポートしていない言語(C, LISP, Haskell等)では1.の意味で使われる場合が多く、オブジェクト指向をサポートしている言語(Java, Python, Ruby等)では2.の意味で使われる場合が多いです。ただし、言語によっては規格書・仕様書で異なる意味で定義されている場合があります。
12
+
16
-
17
-
18
-
19
- あらゆるインスタンスはデータでもあるため「1.⊇2.」の関係です。言語によっては「1.=2.」ですが、そうでは無い言語も数多く存在します。
13
+
20
-
21
-
22
-
14
+
23
- より端的言うと、次のような感じで判断できる何かです。
15
+ より端的言うと、上のそれぞれは次のような感じで判断できる何かです。
24
16
 
25
17
 
26
18
 
@@ -34,15 +26,27 @@
34
26
 
35
27
 
36
28
 
29
+ あらゆるインスタンスはデータでもあるため「1.⊇2.」の関係です(例外はたぶん無いと思われます)。言語によっては「1.=2.」ですが、そうでは無い言語も数多く存在します。
30
+
31
+
32
+
33
+ オブジェクト指向を言語仕様でサポートしていない言語(以下、非オブジェクト指向言語と言う。C, LISP, Haskell等)では1.の意味で使われる場合が多く、オブジェクト指向を言語仕様でサポートしている言語(以下、オブジェクト指向言語という。Java, Python, Ruby等)では2.の意味で使われる場合が多いです。ただし、言語によっては規格書・仕様書でより厳密に定義されている場合があります。そして、その厳密な定義でのオブジェクトは上の1.とも2.とも異なる場合があります。
34
+
35
+
36
+
37
37
  結局は言語によってバラバラですので、各言語の仕様を確認しながら、細かく見ていきます。
38
38
 
39
39
 
40
40
 
41
+ ---
42
+
43
+
44
+
41
45
  ### Java
42
46
 
43
47
 
44
48
 
45
- [4.3.1. Objects - Chapter 4. Types, Values, and Variables - The Java® Language Specification (Java SE 13)](https://docs.oracle.com/javase/specs/jls/se13/html/jls-4.html#jls-4.3.1)
49
+ [4.3.1. Objects - Chapter 4. Types, Values, and Variables - The Java® Language Specification (Java SE 13)](https:\docs.oracle.com\javase\specs\jls\se13\html\jls-4.html#jls-4.3.1)
46
50
 
47
51
 
48
52
 
@@ -70,7 +74,7 @@
70
74
 
71
75
 
72
76
 
73
- [4.3.3 object - ECMAScript® 2019 Language Specification](https://www.ecma-international.org/ecma-262/10.0/index.html#sec-terms-and-definitions-object)
77
+ [4.3.3 object - ECMAScript® 2019 Language Specification](https:\www.ecma-international.org\ecma-262\10.0\index.html#sec-terms-and-definitions-object)
74
78
 
75
79
 
76
80
 
@@ -80,7 +84,7 @@
80
84
 
81
85
 
82
86
 
83
- JavaScript(ECMASCript)での**オブジェクト(object)**は**Object型の一種**です(大文字小文字を厳密に区別していることに注意してください。この文章内では大文字から始まるObjectをオブジェクトと表記することはなく、そのまま英語のObjectと表記をします。オブジェクトという表現は全てobjectの事を指します)。Object型は[6.1.7 The Object Type](https://www.ecma-international.org/ecma-262/10.0/index.html#sec-object-type)で説明があります。このObject型は0個以上のプロパティの集合体です。プロパティとは言ってしまえばキーとバリューのペアの集合であり、読み取りと書き込みができます。ただし、読み取り専用や、読み取り自体が関数呼び出しになっている特殊なプロパティも存在します。
87
+ JavaScript(ECMASCript)での**オブジェクト(object)**は**Object型の一種**です(大文字小文字を厳密に区別していることに注意してください。この文章内では大文字から始まるObjectをオブジェクトと表記することはなく、そのまま英語のObjectと表記をします。オブジェクトという表現は全てobjectの事を指します)。Object型は[6.1.7 The Object Type](https:\www.ecma-international.org\ecma-262\10.0\index.html#sec-object-type)で説明があります。このObject型は0個以上のプロパティの集合体です。プロパティとは言ってしまえばキーとバリューのペアの集合であり、読み取りと書き込みができます。ただし、読み取り専用や、読み取り自体が関数呼び出しになっている特殊なプロパティも存在します。
84
88
 
85
89
 
86
90
 
@@ -126,10 +130,94 @@
126
130
 
127
131
 
128
132
 
129
- このように一般的に使われている場合と言語仕様における定義では厳密に異なる場合があり、言語でも注意が必要です。ただ、ほとんどの言語では最初にった1.または2.とその言語仕様で定義されているオブジェクトがほぼ一緒になります。微妙な違い、Javaの配列やJavaScriptの`Object.create(null)`で作ったオブジェクトだけ気をつければそれほど混乱は無いかと思われます。
133
+ このように一般的に使われている場合と言語仕様における定義では厳密に異なる場合が多々あり、ここで上げていない言語でも注意が必要です。人や記事や本などによって、厳密な定義での意味で使用している場合もあれば、1.まは2.の意味で使用している場合もあります。ただ、ほとんどの言語では非オブジェクト指向語での1.またはオブジェクト指向言語での2.とその言語仕様で定義されているオブジェクトがほぼ一緒になります。微妙な違い、上で述べたもので言うと、Javaの配列やJavaScriptの`Object.create(null)`で作ったオブジェクトだけ気をつければそれほど混乱は無いかと思われます。
130
134
 
131
135
 
132
136
 
133
137
  その他、手前味噌ですが、下記の記事のオブジェクトの所も参考になるかも知れません。
134
138
 
135
- [オブジェクト指向が0.05%も理解できない記事 - Qiita](https://qiita.com/raccy/items/58254f842788707f8c53#%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B)
139
+ [オブジェクト指向が0.05%も理解できない記事 - Qiita](https:\qiita.com\raccy\items\58254f842788707f8c53#%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B)
140
+
141
+
142
+
143
+ ---
144
+
145
+
146
+
147
+ 【追記】
148
+
149
+
150
+
151
+ 誤解されたままのような気がしますので、質問への直接の回答を記載します。
152
+
153
+
154
+
155
+ > Java で、オブジェクトとは「クラスから作られるもの」だと教えられました。
156
+
157
+
158
+
159
+ 仕様書で確認したとおり、Javaのオブジェクトには配列も含まれます。配列はクラスから作られるものではありません。よって、その教えた人はJavaの仕様書で定義されているオブジェクトのことではなく、別の意味のオブジェクトを指して、そのような表現をしたと考えられます。厳密なオブジェクトの定義を知りたいとしている質問者にとっては参考にしてはいけない情報です。
160
+
161
+
162
+
163
+ おそらく2.の意味で使われたと考えられますが、実際の所ではその発言をした人本人に聞かないとわかりません。
164
+
165
+
166
+
167
+ > Ruby では、クラスもオブジェクトと書いてあります。
168
+
169
+
170
+
171
+ クラスの機能を実現するにあたって、Rubyでは通常のオブジェクトと同様に扱えるよう言語を設計したと言うことです。別に、クラス自体が通常のオブジェクトと同様に扱えなければならないという必然性はありませんが、扱ってはいけないという必然性もありません。単に、Rubyではクラスもオブジェクトとして扱えるように選択しただけです。他言語については、どちらを採用しているからはまさに様々ですので、一概に言えません。
172
+
173
+
174
+
175
+ > JavaScript では、関数もオブジェクトと書いてあります。
176
+
177
+
178
+
179
+ 関数の機能を実現するにあたって、JavaScriptでは通常のオブジェクト同様に扱えるよう言語を設計したと言うことです。別に、関数自体が通常のオブジェクトと同様に扱えなければならないという必然性はありませんが、扱ってはいけないという必然性もありません。単に、JavaScriptでは関数もオブジェクトとして扱えるように選択しただけです。他言語については、どちらを採用しているからはまさに様々ですので、一概に言えません。
180
+
181
+
182
+
183
+ 予断ですが、関数が第一級オブジェクトである(間接的ではなく直接的にオブジェクトとして扱えるという意味)ことは関数型プログラミングの書きやすさにおいて非常に重要な意味を持ちます。
184
+
185
+
186
+
187
+ > 名前自体、「クラス指向」ではなく、「オブジェクト指向」です。
188
+
189
+
190
+
191
+ 「オブジェクト指向(object-oriented)」という名称は、この造語を作り出したアラン・ケイ自身が後悔しているようです。中には「メッセージ指向」というべきだったという人達もいます。
192
+
193
+
194
+
195
+ > 基となるのは「オブジェクト」で、「プロパティとメソッドを持つ実体」が定義なのでしょうか?
196
+
197
+
198
+
199
+ それはYesでもありNoでもあります。なぜなら、言語によって異なるし、「オブジェクト」という言葉が使われている文脈によって「オブジェクト」がどういう意味なのか異なるからです。
200
+
201
+
202
+
203
+ 例えば、Javaには「プロパティ」という機能は**ありません**(フィールドとプロパティは異なる機能です)。この時点でJavaへの説明は破綻します。では、Javaにあわせて「フィールドとメソッドを持つ実体」と言った場合も問題が残ります。Javaの仕様では配列もオブジェクトなのですが、配列にはフィールドもメソッドもありません(`.length`はフィールドアクセスではなく、特別な構文です)。Javaの仕様上でのオブジェクトの意味で使っていれば、Noになります。しかし、ほとんどの人達は仕様書を細かく見て居らず、上記で最初に書いた2.の意味で使っています。その意味では、Yesとなり、文脈によって異なるという話になります。
204
+
205
+
206
+
207
+ 他言語に目を向けても同じように例外があったり、逆に、まさしくそう言えたりもします。オブジェクト指向言語では、だいたいがそうと言えそうですが、プログラミングにあまり詳しくない世間一般が考えるオブジェクト指向言語の代表のようなJavaですら、上のような状況です。
208
+
209
+
210
+
211
+ 結局の所、一概に「オブジェクトとは○○である」ということは**言えません**。定義が欲しいと言いますが、「仕様上の定義は言語によって異なる」ということしか言えません。仕様の厳密な定義を無視した一般的な意味での使用する場合でも、言語や状況によって1.の意味だったり、2.の意味だったりとバラバラです。文脈等からなんとなく嗅ぎ取る以外はありません。
212
+
213
+
214
+
215
+ 最後に質問文の最初に触れておきます。
216
+
217
+
218
+
219
+ > 初歩的な事かもしれませんが、
220
+
221
+
222
+
223
+ 一つの言語についてのみ話をするのであれば、その言語では何が「オブジェクト」と言われているのかは最初に知っておくべき、初歩的なことと言って良いかもしれません。しかし、複数の言語にまたいで「オブジェクト」とは何かを考えることは全くもって初歩的なことではありません。10年以上プログラミングをやって、10個以上は言語を学んで、それでいてやっと曖昧な何か掴めたかなと思うぐらいです。私は未だにこの曖昧な何かを人にうまく説明することができていません。

4

誤字の修正

2019/11/03 13:10

投稿

raccy
raccy

スコア21737

test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
 
56
56
 
57
- なお、Javaの変数はオブジェクトを直接束縛するのではく、オブジェクトへのポインターを束縛します。このポインターと`null`という特別な値(これ自体もオブジェクトでは無い)をあわせて参照値(reference value)と呼ばれます。ただし、`null`以外に参照値を直接書く方法は存在しません。
57
+ なお、Javaの変数はオブジェクトを直接束縛するのではく、オブジェクトへのポインターを束縛します。このポインターと`null`という特別な値(これ自体もオブジェクトでは無い)をあわせて参照値(reference value)と呼ばれます。ただし、`null`以外に参照値を直接書く方法は存在しません。
58
58
 
59
59
 
60
60
 

3

少し追記

2019/11/03 11:34

投稿

raccy
raccy

スコア21737

test CHANGED
@@ -5,6 +5,10 @@
5
5
  1. 処理(計算)される対象であり、メモリ上(レジスタ上や概念的な場合もある)に存在する何らかのデータ
6
6
 
7
7
  2. オブジェクト指向におけるクラス(またはそれに相当するものの)のインスタンス
8
+
9
+
10
+
11
+ ※ なお、コンピューター用語としてはより一般的なデータ全般の意味で使われる場合があります(DBでのオブジェクトやオブジェクトストレージ等)。参考: [Object (computer science) - Wikipedia](https://en.wikipedia.org/wiki/Object_(computer_science))
8
12
 
9
13
 
10
14
 
@@ -16,11 +20,21 @@
16
20
 
17
21
 
18
22
 
19
- なお、コンピューター用語としてはより一般的なデータ全般の意味使われ場合がありま(DBでのオブジェクトやオブジェクトストレージ等)
23
+ より言うと、次のよう感じ判断でき何かです。
20
24
 
21
25
 
22
26
 
27
+ 1. 変数に代入できる(変数が束縛できる)何か
28
+
29
+ 2. `レシーバー.メソッド(引数)`のレシーバーとなり得る何か
30
+
31
+
32
+
23
- 参考: [Object (computer science) - Wikipedia](https://en.wikipedia.org/wiki/Object_(computer_science))
33
+ しかし、言語によっては例外があったり、厳密には異なる事もあるため、一概にこの判断に従うとは言えません。よって、必要十分条件となり得る判断方法ではありませんので、区別するときの参考情報程度に留めてください。
34
+
35
+
36
+
37
+ 結局は言語によってバラバラですので、各言語の仕様を確認しながら、細かく見ていきます。
24
38
 
25
39
 
26
40
 
@@ -44,9 +58,7 @@
44
58
 
45
59
 
46
60
 
47
- オブジェクトや参照値以外に1.にあたる物としてプリミティブ値(primitive value)が存在します。なお、クラスそのもの(クラスをあらわす識別子による表現の意味)はオブジェクトでは無いばかりか、1.ですありませんが、`.class`等でClassオブジェクトを取り出して、扱うことは可能です。
61
+ オブジェクトや参照値以外に1.にあたる物としてプリミティブ値(primitive value)が存在します。なお、クラスそのもの(クラスをあらわす識別子による表現されるそれ自体)はオブジェクトでは無いばかりか、1.ですありませんが、`.class`等でClassオブジェクトを取り出して、扱うことは可能です。
48
-
49
-
50
62
 
51
63
 
52
64
 
@@ -68,15 +80,15 @@
68
80
 
69
81
 
70
82
 
71
- JavaScript(ECMASCript)でのオブジェクト(object)はObject型のモノです(大文字小文字を厳密に区別していることに注意してください。この文章内では大文字から始まるObjectをオブジェクトと表記することはなく、そのまま英語のObjectと表記をします。オブジェクトという表現は全てobjectの事を指します)。Object型は[6.1.7 The Object Type](https://www.ecma-international.org/ecma-262/10.0/index.html#sec-object-type)で説明があります。このObject型は0個以上のプロパティの集合体です。プロパティとは言ってしまえばキーとバリューのペアの集合であり、読み取りと書き込みができます。ただし、読み取り専用や、読み取り自体が関数呼び出しになっている特殊なプロパティも存在します。
83
+ JavaScript(ECMASCript)での**オブジェクト(object)****Object型の一種**です(大文字小文字を厳密に区別していることに注意してください。この文章内では大文字から始まるObjectをオブジェクトと表記することはなく、そのまま英語のObjectと表記をします。オブジェクトという表現は全てobjectの事を指します)。Object型は[6.1.7 The Object Type](https://www.ecma-international.org/ecma-262/10.0/index.html#sec-object-type)で説明があります。このObject型は0個以上のプロパティの集合体です。プロパティとは言ってしまえばキーとバリューのペアの集合であり、読み取りと書き込みができます。ただし、読み取り専用や、読み取り自体が関数呼び出しになっている特殊なプロパティも存在します。
72
84
 
73
85
 
74
86
 
75
- JavaScriptにおけるほとんどのオブジェクトは何からのコンストラクター(costructor、JavaScriptのプロトタイプベースオブジェクト指向においてクラスに相当するもの)のインスタンスです。そういう意味では2.近いす。しかし、いずれのコンストラクターのインスタンスではないオブジェクトも作成できます(`Object.create(null)`)。ですので、やはり2.と全く同じとは言えません。
87
+ JavaScriptにおいて、組み込みおよびリテラルや`new`等で作成されたオブジェクトは何からのコンストラクター(costructor、JavaScriptのプロトタイプベースオブジェクト指向においてクラスに相当するもの)のインスタンスです。そういう意味では2.近いように見えます。しかし、`Object.create(null)`等とすると、いずれのコンストラクターのインスタンスではないオブジェクト(`x instanceof y`が`true`になる`y`が存在しない`x`)も作成できます。ですので、やはり2.と全く同じとは言えません。
76
88
 
77
89
 
78
90
 
79
- オブジェクト以外に1.に含まれるモノでプリミティブ値(`primitive value`)があります。コンストラクターもオブジェクトであり、また、関数(function)でもあります。JavaScriptのクラス構文は一種の糖衣構文であり、クラス(class)というものが内部的にあるわけではありません。
91
+ オブジェクト以外に1.に含まれるモノでプリミティブ値(primitive value)があります。コンストラクターもオブジェクトであり、また、関数(function)でもあります。JavaScriptのクラス構文は一種の糖衣構文であり、クラス(class)というものが内部的にあるわけではありません。
80
92
 
81
93
 
82
94
 
@@ -98,11 +110,11 @@
98
110
 
99
111
 
100
112
 
101
- 言語仕様上は1.に近い意味で使われています。クラスのインスタンスであるとか、そういったことは定義に含まれていません。ただし、注記として、なんからのメソッドを持っているだろうと言うことだけがわかります。
113
+ Rubyの**オブジェクト**は**計算実体**です。言語仕様上は1.に近い意味で使われています。クラスのインスタンスであるとか、そういったことは定義に含まれていません。ただし、注記として、なんからのメソッドを持っているだろうと言うことだけがわかります。
102
114
 
103
115
 
104
116
 
105
- よく「Rubyは全てがオブジェクト」と言いますが、状態や動作を持たない計算実体は存在しない(他言語のような`null`や`undefind`みたいなものがない、`nil`は虚無という状態を持つし、メソッドも持つ)ため、当たり前の話とも言えます。でも本当に言いたいことは、「全てのオブジェクトはなんのクラスのインスタンスである」ということです。つまり、「1.=2.」の関係がRubyでは成り立つと言うことです。そのため、Rubyにおいてどちらの意味でオブジェクトという言葉を使っていても、それらが指し示すものは実質同じであると言えます。
117
+ よく「Rubyは全てがオブジェクト」と言いますが、状態や動作を持たない計算実体は存在しない(他言語のような`null`や`undefind`みたいなものがない、`nil`は虚無という状態を持つし、メソッドも持つ)ため、当たり前の話とも言えます。でも本当に言いたいことは、「全てのオブジェクトは何らかのクラスのインスタンスである」ということです。つまり、「1.=2.」の関係がRubyでは成り立つと言うことです。そのため、Rubyにおいてどちらの意味でオブジェクトという言葉を使っていても、それらが指し示すものは実質同じであると言えます。
106
118
 
107
119
 
108
120
 

2

Javaのクラスについてより正確に?

2019/11/02 22:18

投稿

raccy
raccy

スコア21737

test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
 
47
- オブジェクトや参照値以外に1.にあたる物としてプリミティブ値(primitive value)が存在します。なお、クラスはオブジェクトでは無いばかりか、1.ですありません。
47
+ オブジェクトや参照値以外に1.にあたる物としてプリミティブ値(primitive value)が存在します。なお、クラスそのもの(クラスをあらわす識別子による表現の意味)はオブジェクトでは無いばかりか、1.ですありませんが、`.class`等でClassオブジェクトを取り出して、扱うことは可能です
48
48
 
49
49
 
50
50
 

1

DB追加

2019/11/02 15:54

投稿

raccy
raccy

スコア21737

test CHANGED
@@ -16,7 +16,11 @@
16
16
 
17
17
 
18
18
 
19
- なお、コンピューター用語としてはより一般的なデータ全般の意味で使われる場合があります(オブジェクトストレージ等)。
19
+ なお、コンピューター用語としてはより一般的なデータ全般の意味で使われる場合があります(DBでのオブジェクトやオブジェクトストレージ等)。
20
+
21
+
22
+
23
+ 参考: [Object (computer science) - Wikipedia](https://en.wikipedia.org/wiki/Object_(computer_science))
20
24
 
21
25
 
22
26