回答編集履歴
3
微修正
answer
CHANGED
@@ -12,5 +12,5 @@
|
|
12
12
|
chickenクラスがweight変数(例えば単位はグラム)を持っていて、chefがcutメソッドでそれを2つに切り分けるとすっきりしそうな印象です。(5つに切る際には4回適用する。)
|
13
13
|
そして、関数テンプレートやポリモーフィズムを用いればchiken以外のオブジェクトも処理できますので、それほど巨大化しないで済むかも。
|
14
14
|
|
15
|
-
オブジェクト指向を良く知っている人の中には、構造体の概念を許さず、クラスしか有ってはならないと言う考え方の人がいます。そのような人ならchefだけでなくchikenにもcutメソッドを実装して、現実離れしているだけでなく、よく似た微妙に異なるコード(cut)をいくつも書くと思います。
|
15
|
+
オブジェクト指向を良く知っている人の中には、構造体の概念を許さず、クラス(原則フィールドはprivateでメソッド経由でのみ操作する)しか有ってはならないと言う考え方の人がいます。そのような人ならchefだけでなくchikenにもcutメソッドを実装して、現実離れしているだけでなく、よく似た微妙に異なるコード(cut)をいくつも書くと思います。
|
16
16
|
しかし、chikenを構造体(全てのフィールドがpublicなクラス)として設計すれば、スマートに現実をモデル化できると思います。
|
2
一部補足追加
answer
CHANGED
@@ -5,7 +5,9 @@
|
|
5
5
|
そもそも`chicken.cut(5)`の戻り値はなんでしょう? chickenインスタンスが5個とは思いますがlistに入れて返すのでしょうか?
|
6
6
|
そんな基本的な部分を曖昧にしているので、いざプログラムを書こうとした時に障害になりそうな印象を受けます。(既に知っている人への説明なら気にする必要はないと思いますが、比較的基礎に近いオブジェクト指向の説明なので初心者さん向けでしょう。)
|
7
7
|
|
8
|
-
また、現実世界でも鶏肉が自ら5片に切れるというのはあり得ないです
|
8
|
+
また、現実世界でも鶏肉が自ら5片に切れるというのはあり得ないです。その現実からかけ離れたプログラムは人間であるプログラマにとって理解が難しいです。
|
9
|
+
更に、あり得ない姿でモデル化されたプログラムは、現実世界で発生する仕様変更にうまく追従できない可能性が高いと思います。
|
10
|
+
そして、両方が相まって無理っと更にあり得ないクラスを導入して謎化するのではないでしょうか?
|
9
11
|
|
10
12
|
chickenクラスがweight変数(例えば単位はグラム)を持っていて、chefがcutメソッドでそれを2つに切り分けるとすっきりしそうな印象です。(5つに切る際には4回適用する。)
|
11
13
|
そして、関数テンプレートやポリモーフィズムを用いればchiken以外のオブジェクトも処理できますので、それほど巨大化しないで済むかも。
|
1
修正
answer
CHANGED
@@ -10,5 +10,5 @@
|
|
10
10
|
chickenクラスがweight変数(例えば単位はグラム)を持っていて、chefがcutメソッドでそれを2つに切り分けるとすっきりしそうな印象です。(5つに切る際には4回適用する。)
|
11
11
|
そして、関数テンプレートやポリモーフィズムを用いればchiken以外のオブジェクトも処理できますので、それほど巨大化しないで済むかも。
|
12
12
|
|
13
|
-
オブジェクト指向を良く知っている人の中には、構造体の概念を許さず、クラスしか有ってはならないと言う考え方の人がいます。そのような人なら
|
13
|
+
オブジェクト指向を良く知っている人の中には、構造体の概念を許さず、クラスしか有ってはならないと言う考え方の人がいます。そのような人ならchefだけでなくchikenにもcutメソッドを実装して、現実離れしているだけでなく、よく似た微妙に異なるコード(cut)をいくつも書くと思います。
|
14
|
-
しかし、
|
14
|
+
しかし、chikenを構造体(全てのフィールドがpublicなクラス)として設計すれば、スマートに現実をモデル化できると思います。
|