- オブジェクト指向なんて今すぐやめてください
200 :KAC[sage]:2014/04/05(土) 02:02:43.29 ID:Dr+e6snh - >>194
問題提起の前に、そもそもクラスの定義がおかしい。 こんな状態で継承関係の話をしても無駄。 そのコードでいう「長方形」「正方形」の振る舞いを 日本語で書いて並べてみ? 間違えてる事に気がつくから。
|
- C++相談室 part111
964 :KAC[sage]:2014/04/05(土) 02:06:26.69 ID:Dr+e6snh - 問題の出し方がいまいちよくわからんね。
たぶん、#include使って複数から参照するって話でもしたいのかと。
|
- C++相談室 part111
966 :KAC[sage]:2014/04/05(土) 02:07:17.21 ID:Dr+e6snh - 安価忘れた orz
|
- オブジェクト指向なんて今すぐやめてください
203 :KAC[sage]:2014/04/05(土) 16:00:08.67 ID:Dr+e6snh - >>202
クラスの振る舞いがまともに書かれていないだろ? 長方形は、高さと幅で初期化され、面積と周辺の長さを取得できる。 正方形は、サイズで初期化され、長方形の計算に加えて、サイズを再設定できる。 ↑これ読んで気がつかないか? これ、そもそも正方形の特徴をあらわした派生じゃないだろ。 せめて、「正方形とはこういうものです」って自然な派生クラス書いてからにしてくれ。
|
- オブジェクト指向なんて今すぐやめてください
205 :KAC[sage]:2014/04/05(土) 16:31:50.52 ID:Dr+e6snh - >>204
いや、あまりにもクラス設計が酷かったから思わず書いただけ。 せめて、長方形のクラスにも同じメソッドがないと話が進まないと思って。 今後の話に関係ない部分なんだったら無視して進めてくれて構わない。
|
- オブジェクト指向なんて今すぐやめてください
208 :KAC[sage]:2014/04/05(土) 17:38:04.47 ID:Dr+e6snh - >>206
具体的に指摘も何も、203読んだら流石にわかると思ったんだけど。。。 少なくとも、一般的に認識される「正方形」「長方形」の扱いと、 書かれているクラスの仕様がかけ離れてるぞっていう指摘なんだけど、 もしかして193のいう図形ってのはたとえば以下のような特徴を持つのか? 正方形は大きさを変化させることができるが長方形は変化しない。 そうなんだとしたら、別に構わない。 ただ、それならそういうものだという日本語での仕様説明があったほうがいいと思う。
|
- オブジェクト指向なんて今すぐやめてください
213 :KAC[sage]:2014/04/05(土) 18:20:28.71 ID:Dr+e6snh - >>210
やはり正方形ってものを正しく認識できていないだけにしか見えない。 あと、(2)に関してはオブジェクト指向その物の理解がなっていない事によるバグだし、 (3)のような瑣末な事に気をとられ過ぎてコード量を増やし、バグの温床になってる。 def area; @size * 2; end # 面積を計算する とか、わざわざコード書いてバグ出してるとかアホの極み。
|
- オブジェクト指向なんて今すぐやめてください
219 :KAC[sage]:2014/04/05(土) 19:46:17.99 ID:Dr+e6snh - >>216
| なぜそれにKAC氏は気付かない or 気付けなかったんだろうか.... あまりにもツッコミどころが多すぎて書かなかっただけ。 設計観点からいうとその指摘じゃなくて既に指摘済みの内容の方が先だろ。 オブジェクト指向にとっては、そんな実装の問題よりも重要な事があることを理解しろよ。 まあ、そんなことはどうでもいいけど。 >>210-211に書いてあることが「長方形から正方形を派生してもできる」 という当たり前の事実(→実装あの仕方が下手なだけ)に何故気がつかないのかが不思議。
|
- オブジェクト指向なんて今すぐやめてください
222 :KAC[sage]:2014/04/05(土) 20:41:15.19 ID:Dr+e6snh - >>214
あぁ、読み落としてた。 | いいや持たないよ、長方形は高さと幅を(setterメソッドで)変化させることができる 属性を直接触って変化させることを良しとしないからこそ def set_size(size); self.width = size; self.width = size; end # 大きさを再設定する こんなメソッドを用意したんだと思ったんだが、そういう思想すら無い訳ね。 | それともgetter/setterという用語すら知らなかったのかな? お前のソースは酷すぎて意図すらロクに相手に伝わらない事を自覚しろ・・・
|
- オブジェクト指向なんて今すぐやめてください
225 :KAC[sage]:2014/04/05(土) 20:59:34.10 ID:Dr+e6snh - >>224
じゃあ、C++で同じコードかいてくれ。 おかしいところ全部なおしてやるから。
|
- オブジェクト指向なんて今すぐやめてください
227 :KAC[sage]:2014/04/05(土) 21:13:53.22 ID:Dr+e6snh - >>224
どうせ後で「後出し」とか言い出すんだろうから先に言っといてやるけど、 そもそも「長方形」と「正方形」でクラスを分けるってのに 長方形の形を変化させることができるってのがナンセンスだろ? 長方形を 10,10で作っても正方形の特徴を持たないのか? こういうところから、"オブジェクト指向がわかっていない"って言ってるんだ。 "今回の実装ではそういう前提にする"というのはよくあることだから、 それなら話を聞いといてもいいかと思って細かいことは言わんかったけど 前提の話を出してくるわけでもなく、正方形の説明があるわけでもなく、 ソース見て判断したら読みづらいし、よくわからん言いがかりつけてくるし。 お前がちゃんと設計できるようになったら設計の相手してやるけど、 今回はお前の実装指摘するくらいはしといてやるよ。
|
- オブジェクト指向なんて今すぐやめてください
231 :KAC[sage]:2014/04/05(土) 21:33:22.05 ID:Dr+e6snh - あ、>>225にコードだけ指定したけど、
やっぱりお前のコードは見ても理解できないだろうから先に要求出しとく。 今回の設計における 長方形とは、 (1) の属性を持ち、(2) の操作が可能な図形である。 正方形とは、長方形のうち (3) という特徴をもったものである。 の形でいいから、(1)〜(3)を埋めてそれぞれのクラスの意図を書いてくれ。
|
- オブジェクト指向なんて今すぐやめてください
238 :KAC[sage]:2014/04/05(土) 22:02:42.14 ID:Dr+e6snh - >>235
正方形に別のメソッド作ってたのみて、 お前の意図はそういうことだと思ったんだが深読みしすぎただけだったよ。 だから、早くクラスの説明をしろ・・・と
|
- オブジェクト指向なんて今すぐやめてください
244 :デフォルトの名無しさん[sage]:2014/04/05(土) 22:47:45.73 ID:Dr+e6snh - >>240
すごいな。 訳わからんソースだして勝ち誇るのか これ、どっちが先に喧嘩売ったの?
|
- オブジェクト指向なんて今すぐやめてください
245 :KAC[sage]:2014/04/05(土) 22:48:34.40 ID:Dr+e6snh - 名前わすれた
|
- オブジェクト指向なんて今すぐやめてください
246 :KAC[sage]:2014/04/05(土) 23:08:17.44 ID:Dr+e6snh - 書き損じのままじゃ伝わらない気がしたのでもう一度。
>>240 まず、この話題は何のためにやっているのか思い出せ。 お前が主張する「具象クラスから派生させてはいけない」を説明するためのものだよな。 で、例示してきたソースはぐちゃぐちゃ、仕様もわからない。 肝心の解説もソースの実装が下手な事によるバグのことだけ。 お前のやったことは、 「ほら、このコードにはこんなバグがあるでしょ」 って説明して、 「ほら、このコードにはそのバグは無いでしょ」 って説明しただけ。 でも、そもそもの仕様からバグってるから言ってることが誰もわからない。 誰も賛同していないことに気がつかないのか? で、 仕様もわからんけどバグだらけのコードをどうやって正しく示せというのか。 逃げも何も、そんなエスパー求められても困るし、正直どうでもいい。
|
- オブジェクト指向なんて今すぐやめてください
247 :KAC[sage]:2014/04/05(土) 23:10:10.14 ID:Dr+e6snh - せっかくお前の説明が理解できるようにフォローのコメントしてやってたのに
>>241-243みたいな態度をとられるともうね。 もうフォローしないので、ちゃんと自分で説明しろよ
|
- スレ立てるまでもない質問はここで 135匹目
114 :KAC[sage]:2014/04/05(土) 23:14:15.07 ID:Dr+e6snh - ごめん。浮いてるスレだと思って相手してた・・・
もう相手するの止めとくよ。
|