- スレ立てるまでもない質問はここで 135匹目
88 :前スレ991[sage]:2014/04/04(金) 00:24:55.40 ID:FlB7JCyi - >>42
>>22のクラス継承階層の設計原理については、>>22の冒頭で書いて説明した ・クラスとは(数学における)集合である ・継承とは直和であり、ここで直和とは集合の互いに交わらない 部分集合への分割を意味する ・ここで集合の要素とは、属性を指す(メソッドではない) この原理を現実のクラス継承設計へ適用していくかについては、>>22のスレの 続きである「Ruby初心者スレッド Part 52」のレス#43-45で詳しく解説している そのスレの解説で使った「互いに交わらない集合」を表す図へのリンクを以下に示す http://www.h6.dion.ne.jp/~machan/tmdoc/example/Blog.book/subset.png 詳細については、過去ログ保管サイトにあたってもらいたい なお、今回の議論は「抽象クラス-具象クラス」という概念を対象にしていたけど、 >>22には、それ以外のオブジェクト指向設計に関する方法論も交ざっていたので、 混乱を与えたかもしれない そこで、より単純に「抽象クラス-具象クラス」を表す実装を紹介する http://www.h6.dion.ne.jp/~machan/misc/exception.html これは例外(exception)を対象にして階層的なクラス設計で実装したコードであり、 現行スレ「クラス名・変数名に迷ったら書き込むスレ。Part24」のレス#81で最初に紹介した このコードで: ・モジュール(=名前空間) Syntax::Exception::Abstraction に所属する例外クラスは、すべて抽象クラス ・それ以外のモジュール Syntax::Exception の直下に所属する例外クラスは、すべて具象クラス になる
|
- スレ立てるまでもない質問はここで 135匹目
100 :前スレ991[sage]:2014/04/04(金) 22:00:39.84 ID:FlB7JCyi - >>97
自分のスタンスは方法論に従ってクラス継承を設計すべきという原理主義になる それに対して、二人はプログラミングに興味はあっても設計には無関心、いいかえると 「動けばそれでいい」「動くのに何が悪いんだ」という実践主義のスタンスに見える そうであれば、これ以上の議論を重ねても互いが納得した形で合意を得ることは不可能だろう しかも>>89,95の意見は同感だから、このスレでは議論を終えて、自分は名無しに戻る ただし、>>90の誘導先スレの提案には誰からも反対意見が無く、 なおかつKAC氏の質問「具象クラスから派生させてはいけないのは何故?」には 答えたいと考えているので、答えは誘導先スレにカキコするつもり 無理に付き合う必要はないが、もし気が変わったならレスすればいいと思う
|
- スレ立てるまでもない質問はここで 135匹目
101 :前スレ991[sage]:2014/04/04(金) 22:13:05.08 ID:FlB7JCyi - >>100を訂正
・アンカを書き漏らしていた X: >>97 O: >>97,98 ・移動先について、>>90のスレを覗いてみたらウンコスレだったので撤回する X: オブジェクト指向は愚かな考え。 O: オブジェクト指向なんて今すぐやめてください
|
- オブジェクト指向なんて今すぐやめてください
193 :デフォルトの名無しさん[sage]:2014/04/04(金) 22:22:43.50 ID:FlB7JCyi - スレ「スレ立てるまでもない質問はここで 135匹目」のレス#100,101から、
議論が長引いてきたのでこちらへ移動してきた 議論の発端は以下に示す同スレ「134匹目」のレス#991になる >あと、オブジェクト指向設計で忘れられがちな概念の一つに、 >(クラス間の関係における)抽象クラスと具象クラスという考え方(原理/原則)がある: >・ある抽象クラスはサブクラスを持てる(=継承できる)が、具象クラスはできない >・ある具象クラスはインスタンス化(=インスタンスを生成)できるが、抽象化クラスはできない これ対してKAC氏から「具象クラスから派生させてはいけないのは何故?」との疑問が出た 以下ではこの疑問への答えを書くつもりだが、一旦、ここで切る
|
- オブジェクト指向なんて今すぐやめてください
194 :デフォルトの名無しさん[sage]:2014/04/04(金) 23:21:02.37 ID:FlB7JCyi - (>>193の続き)
具象クラスから派生させる具体例として、これはIllustratorやVisioのような ドローアプリの開発を想定し、二次元座標における幾何学図形クラスの設計を検討する 図形クラスには直線/円/多角形などが様々な仕様が考えられるが、ここでは 具象クラス「長方形(Rectangle)」とそれから派生した具象クラス「正方形(Square)」に限定する 派生については、「正方形とは長方形の高さと幅が等しい図形である」という幾何学の定義に従い、 「ちょっと特別なもの」という発想で派生させることを決めた Rubyによるコードを以下に示す class Rectangle # 長方形クラス attr_accessor :height, :width # 高さと幅 -- getterとsetterを伴う属性 def initialize(height, width) # コンストラクタ @height = height; @width = width end def area; @height * @width; end # 面積を計算する def perimeter; (@height + @width) * 2; end # 周辺の長さを計算する end class Square < Rectangle # 正方形クラス def initialize(size) # コンストラクタ super(size, size) end def set_size(size); self.width = size; self.width = size; end # 大きさを再設定する end # 使用例 r = Rectangle.new(3, 5) # 高さが3で幅が5の長方形インスタンスを生成 s = Square.new(7) # 大きさが7の正方形インスタンスを生成 さて、この具象クラス継承には、どんな問題があるだろうか?
|
- 推薦図書/必読書のためのスレッド 72
604 :デフォルトの名無しさん[sage]:2014/04/04(金) 23:40:18.85 ID:FlB7JCyi - >>602
SICP本と同じパターンで、プライドが高くて 理解できない理由が己の技量不足とは認めたくないから、 それを翻訳のせいにしているだけではないかと そのレビュアには、>>592の爪の垢を煎じて飲ませてやりたい
|