teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

微修正

2016/07/22 06:05

投稿

Chironian
Chironian

スコア23274

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

一部補足追加

2016/07/22 06:05

投稿

Chironian
Chironian

スコア23274

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

修正

2016/07/22 06:01

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -10,5 +10,5 @@
10
10
  chickenクラスがweight変数(例えば単位はグラム)を持っていて、chefがcutメソッドでそれを2つに切り分けるとすっきりしそうな印象です。(5つに切る際には4回適用する。)
11
11
  そして、関数テンプレートやポリモーフィズムを用いればchiken以外のオブジェクトも処理できますので、それほど巨大化しないで済むかも。
12
12
 
13
- オブジェクト指向を良く知っている人の中には、構造体の概念を許さず、クラスしか有ってはならないと言う考え方の人がいます。そのような人ならFoodインスタンスを切り分cutメソッドを実装して、現実離れしているだけでなく、よく似た微妙に異なるコード(cut)をいくつも書くと思います。
13
+ オブジェクト指向を良く知っている人の中には、構造体の概念を許さず、クラスしか有ってはならないと言う考え方の人がいます。そのような人ならchefだでなくchikenにもcutメソッドを実装して、現実離れしているだけでなく、よく似た微妙に異なるコード(cut)をいくつも書くと思います。
14
- しかし、Foodを構造体(全てのフィールドがpublicなクラス)として設計すれば、スマートに現実をモデル化できると思います。
14
+ しかし、chikenを構造体(全てのフィールドがpublicなクラス)として設計すれば、スマートに現実をモデル化できると思います。