回答編集履歴
1
原因が分かりませんが、投稿が反映されなかったようなので、再投稿します。
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
オブジェクト指向言語の一番最初の原型はSimulaで、
|
16
16
|
|
17
|
-
名前通りシミュレーションするための言語です。
|
17
|
+
名前通り**シミュレーション**するための言語です。
|
18
18
|
|
19
19
|
|
20
20
|
|
@@ -44,7 +44,7 @@
|
|
44
44
|
|
45
45
|
ただし、現実世界をそのまま再現するのではなく、
|
46
46
|
|
47
|
-
現実から抽象したドメイン(問題領域)を再現します。
|
47
|
+
現実から抽象した**ドメイン(問題領域)**を再現します。
|
48
48
|
|
49
49
|
|
50
50
|
|
@@ -60,13 +60,15 @@
|
|
60
60
|
|
61
61
|
とくに業務的な理由での変更に強くなります。
|
62
62
|
|
63
|
-
|
63
|
+
業務知識の構造を再現しているから、その変更も再現しやすいのです。
|
64
|
-
|
64
|
+
|
65
|
+
|
66
|
+
|
65
|
-
GUIは映像的なシミュレーション、
|
67
|
+
GUIやゲームは映像的なシミュレーション、
|
66
|
-
|
68
|
+
|
67
|
-
DDDは業務的なシミュレーションで、
|
69
|
+
DDD(が使われる対象)は業務的なシミュレーションで、
|
68
|
-
|
70
|
+
|
69
|
-
ドメイン
|
71
|
+
ドメインこそ違うものの、OOの性質を活かしています。
|
70
72
|
|
71
73
|
|
72
74
|
|
@@ -88,14 +90,6 @@
|
|
88
90
|
|
89
91
|
|
90
92
|
|
91
|
-
継承などは手段であって目的ではありません。
|
92
|
-
|
93
|
-
たとえば、継承で実装を再利用するのはアンチパターンです。
|
94
|
-
|
95
|
-
概念を分類する型継承と、委譲を使う方が筋の良いOOです。
|
96
|
-
|
97
|
-
|
98
|
-
|
99
93
|
普通、プログラムは開発より保守の方がコストがかかるので、
|
100
94
|
|
101
95
|
変更、修正、拡張、交換などがしやすいのは大きなメリットです。
|
@@ -110,6 +104,32 @@
|
|
110
104
|
|
111
105
|
|
112
106
|
|
107
|
+
抽象化というのが抽象的で分かりにくいと思います。
|
108
|
+
|
109
|
+
抽象の反対が具象で、命令的、手続き的な手法です。
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
機械語、アセンブラ、C言語と高級言語化してきましたが、
|
114
|
+
|
115
|
+
機械側から人間側にさらに高水準化したのがOO言語です。
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
複雑、大規模、長期運用のシステムは、
|
120
|
+
|
121
|
+
具象だけで行くと人間が認識不可能になってきます。
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
具体的な細部の手順が一度に分からなくても、
|
126
|
+
|
127
|
+
OOではドメインモデリングで人間の知識構造を再現するので、
|
128
|
+
|
129
|
+
部分的な変更・修正・拡張がしやすくなります。
|
130
|
+
|
131
|
+
|
132
|
+
|
113
133
|
|
114
134
|
|
115
135
|
---
|
@@ -134,7 +154,7 @@
|
|
134
154
|
|
135
155
|
|
136
156
|
|
137
|
-
オブジェクト指向はオブジェクト=データ中心であって、
|
157
|
+
オブジェクト指向は**オブジェクト=データ中心**の技法であって、
|
138
158
|
|
139
159
|
メソッド=処理中心ではありません。そこが構造化技法との差です。
|
140
160
|
|
@@ -152,7 +172,7 @@
|
|
152
172
|
|
153
173
|
|
154
174
|
|
155
|
-
このようにオブジェクトの関係によって、
|
175
|
+
このようにオブジェクトの関係、つまり責務の配分によって、
|
156
176
|
|
157
177
|
ドメインをシミュレーションするのがOOのポイントです。
|
158
178
|
|
@@ -179,3 +199,33 @@
|
|
179
199
|
Rubyもそうですが、Rubyの方がOO寄り、
|
180
200
|
|
181
201
|
Pythonの方が関数型寄りに感じます。
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
---
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
なお今回、ドメインモデリングから
|
212
|
+
|
213
|
+
DDDへの流れを軸に語りましたが、
|
214
|
+
|
215
|
+
Smalltalk流のOOは**メッセージング**を重視します。
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
これを一言でいうと遅延結合がポイントで、
|
220
|
+
|
221
|
+
事後的な再設計を可能にする仕組みです。
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
どういうことかというと、後から設計を修正しやすいので、
|
226
|
+
|
227
|
+
リファクタリングなども含んだ反復的開発、アジャイルがしやすい。
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
つまり、XPからDDDへという、もう一方の流れがあると思います。
|