オブジェクト指向って自然な文法だな 3 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/02(日) 16:30:38.65ID:n7h/bBRg
前スレ
オブジェクト指向って自然な文法だな 2
http://echo.2ch.net/test/read.cgi/tech/1490506257/
2017/04/02(日) 16:45:28.24ID:n7h/bBRg
C 言語によるオブジェクト記述法 COOL ver.2
http://www.sage-p.com/process/cool.htm
2017/04/02(日) 17:00:47.26ID:n7h/bBRg
モダンC言語プログラミング
http://ascii.asciimw.jp/books/books/detail/978-4-04-891309-6.shtml

統合開発環境、デザインパターン、エクストリーム・プログラミング、
テスト駆動開発、リファクタリング、継続的インテグレーションの活用

第3章 C言語とオブジェクト指向
3.1 概要
3.2 Cのモジュール化とオブジェクト指向
3.3 まとめ
第4章 C言語とデザインパターン
4.1 ステートパターン(State)
4.2 テンプレートメソッドパターン(Template)
4.3 オブザーバパターン(Observer)
4.4 チェインオブレスポンシビリティパターン(Chain of responsibility)
4.5 ビジターパターン(Visitor)
4.6 まとめ
第5章 C言語とリファクタリング
5.1 概要
5.2 テスト駆動開発
5.3 TDD入門編
5.4 リファクタリング
5.5 TDD実践編
5.6 まとめ
第6章 継続的インテグレーションとデプロイ
6.1 概要
6.2 継続的インテグレーションの前提
6.3 CIサーバの導入
6.4 CI入門編
6.5 メモリ破壊のバグと戦う
6.6 CI実践編
6.7 まとめ
2017/04/02(日) 17:02:31.63ID:n7h/bBRg
https://teratail.com/questions/37674

以前、Linuxのカーネルを読んだ時、オブジェクト指向的なプログラムされているなと思ったことが有ります。
データと関数ポインタをセットにしているイメージですね。(仮想関数的なテクニックだったように思います。)
2017/04/02(日) 17:06:49.50ID:n7h/bBRg
Linuxシステムプログラミング - 60 ページ - Google ブック検索結果
https://books.google.co.jp/books?isbn=4873113628
> Linux のすべてのフアイルシステムの基本となる共通フアイルモデル
> 〈 c 。 mm 。 n 血 em 。 de ー)を導入し、抽象化を図っています。共通ファイルモデルでは、
> 関数ポインタやオブジェクト指向的な考え方†を採用したフレームワークを提供し、フアイル
2017/04/02(日) 17:52:12.44ID:KLExlLIQ
●ドア設計問題 (出典は初代スレ)
http://echo.2ch.net/test/read.cgi/tech/1488928012/422-423
http://echo.2ch.net/test/read.cgi/tech/1488928012/577-578

1 下記機能をオプションとして持つドアを設計せよ
  (a)ドアストッパー
  (b)ドアクローザー
  (c)ドアの向こう側を目視できるガラス
  (d)内部から外部の一方通行のみ目視できるのぞき穴

2. 1.で行ったクラス設計を破壊せずに下記性質を追加せよ
  (e)異なる耐火性
  (f)異なる開閉重量
  (g)鍵がついており、サムターンか電子錠である
  (h)異なる遮音性
  (i)開き方は右開き左開き、内開き外開きスライドのいずれもありえる
  (j)ドアノブはついていることもついてないこともある

3. 2.で行ったクラス設計を破壊せずに下記性質を追加せよ
  (k)犬猫はドアノブを回転させることはできない
  (l)犬猫はプッシュで動くドアなら、ある一定の重量以下で押すことができる
  (m)数匹の犬猫が同時にドアを押すと合計重量で押すことができる
2017/04/02(日) 18:47:42.03ID:w0zTGR96
おつかれさまでした
2017/04/02(日) 20:12:49.88ID:0XahTNwQ
>>6 1(a)(b)のRubyによる実装

http://ideone.com/or6JyE
2017/04/02(日) 20:48:03.21ID:TvISwdcG
>>6
ドアをどういうソフトウェアの中でどう使うのかを説明しろよ
それなしに”設計せよ”とか意味不明だぞ

そこに書いてるのはドアの属性だけだから単なるデータ
クラスとかオブジェクト指向とか全く関係ない
2017/04/02(日) 21:12:28.24ID:DzpU0i7z
ドアクラスの設計に上位クラスの意思が必要なら、それはモジュール分解できてないってことじゃね
2017/04/02(日) 21:21:56.68ID:l1VJjSJU
>>9
こんなんで意味不明とか言ってたらついていけんぞ
このドアに猫を通すにはどうするとか言ってたんだから
2017/04/02(日) 21:30:37.45ID:TvISwdcG
>>10
〇〇がどう使われるかは全くわかりません
〇〇にはこれこれこういう属性(性質)がありえます
〇〇を設計せよ
ふぁい!?

モジュール分解とか全く関係ない
2017/04/02(日) 21:38:49.75ID:DzpU0i7z
ドアストッパーは回転角に制限を与える
ドアクローザーは、半開状態時にゆるやかに閉状態へと変化する機構

犬猫が突進すればドアタイプと重量によっては開き、場合によっては開かない
2017/04/02(日) 22:03:35.89ID:TvISwdcG
建築家がCADで使うためのドアのモデル
ドアメーカーが生産管理のために使うためのドアのモデル
住宅メーカーが受注管理のために使うドアのモデル
ドア開け系のスマホゲームで使うためのドアのモデル

これらが同じになるわけがないんだから
どういう目的でどういう風にソフトウェア上で使われるのか
それがわからないものを設計しようとするのは時間の無駄
2017/04/03(月) 01:16:59.01ID:LFQkDYJE
>>14
よくよく考えてみるととても難しいが完全不可能ではないしょ、具体的にこんなドアと呼んでないからこそ
どんな状況とパターンでもドアをドアと呼ぶに相応しい共通項を見つけるゲームや
投げる物ではないし食べる物でもないしまぁある程度までは
2017/04/03(月) 11:28:24.86ID:MWcUZH/3
なんでメソッド名って三単現じゃないことが多いの?
2017/04/03(月) 12:06:00.26ID:4MLmk5yA
開発者に嫌われているプログラミング言語 25
http://news.mynavi.jp/news/2017/03/30/133/
http://n.mynv.jp/news/2017/03/30/133/images/001l.jpg
Visual Basic 6
VBA
CoffeeScript
VB.NET
Matlab
Objective-C
Assembly
Perl
Lua
Hack

Groovy
Common Lisp
Dart
Erland
PHP
C
Ruby
R
Java
Julia
C++
SQL
Haskell
F#
JavaScript
2017/04/03(月) 12:20:09.66ID:28dsjWMc
>>17
他のせんたくしが
2017/04/03(月) 12:21:52.64ID:28dsjWMc
>>17
他の選択肢を比較的簡単に選べるものが上位になってる気がする。
つまりdisりやすいっていう
20デフォルトの名無しさん
垢版 |
2017/04/03(月) 13:17:31.81ID:DYsJriQe
>>1
糞みたいなテンプル貼るのやめろ
2017/04/03(月) 19:08:53.61ID:gZTdU5yD
>>17
名前さえ上がらないCobol
2017/04/03(月) 19:16:57.14ID:Upl31vzs
まだやってんの?
23デフォルトの名無しさん
垢版 |
2017/04/03(月) 20:08:09.88ID:VDwG6zpG
>>22
最後にレスした奴が勝者だからな
2017/04/03(月) 20:17:49.73ID:Upl31vzs
勝ち負けってあったの?
2017/04/03(月) 20:20:18.71ID:7vHtJU9B
俺2chの議論で負けたことない

変なこと言い出したり話がそれたりで、俺がレスしなくなるか
俺が相手をやりこめて、相手がレスしなくなるかだ
2017/04/03(月) 20:23:36.71ID:Upl31vzs
勝負してないじゃん
27デフォルトの名無しさん
垢版 |
2017/04/03(月) 20:54:50.17ID:OUsiIH4G
土俵の下からヤジ飛ばしているだけで勝負している気になってるいつものあいつかw
2017/04/03(月) 20:57:17.28ID:LFQkDYJE
ウィナーオブジェクト作ろうぜ。とりあえずメソッドはコールだけ
2017/04/03(月) 21:47:10.19ID:7vHtJU9B
>>14
そこが決まってないからこそ
物事の捉えかたが人によって違うのがいいんだろ

最初から無駄なのはわかりきってるんだから無駄とかいうな
2017/04/03(月) 21:49:08.96ID:XYXk6jFX
>>15
どんな状況でもドアをドアと呼ぶに相応しい共通項を見つけるのは
ソフトウェアの設計やプログラミングの話ではなく言語学や哲学における分節化の話
なので板違い
2017/04/03(月) 21:57:16.66ID:XYXk6jFX
>>29
どういうシステムでどういう使われ方をするドアを想定した結果なのかを示せば
少しはマシだったろうけどそれをやったやつ前スレで1人でもいたか?

コンテキスト無しで現実をモデリングしようとしても設計力は高まるどころか低下するだけ
オブジェクト指向かどうかとか関係ない
無駄
2017/04/03(月) 21:57:20.04ID:LFQkDYJE
>>30
つまりオブジェクト指向は哲学と言うことだな。納得出来る
2017/04/03(月) 22:05:05.77ID:Vb9tETQW
抽象化()
2017/04/03(月) 22:05:09.73ID:MrxLrKt6
>>30
> どんな状況でもドアをドアと呼ぶに相応しい共通項を見つけるのは

取っ手のないドアがあるから、取っ手は共通項には含まれない
鍵のないドアもある。
材質も関係ない。
2017/04/03(月) 22:18:18.28ID:MrxLrKt6
なるほど、そうか。

オブジェクト指向を「現実世界を構成しているクラスを見つけ出す作業」と
捉えるからややこしいことになるんだ。

手続き型でも関数型言語でも、現実世界を表現する関数を見つけ出す作業
なんて考えるやつはいない。

見つけ出す作業ではなくて、作り出す作業なんだ。
現実世界ではなくターゲットとする要件を実現する
クラスや関数を自分たちで作り出す作業。

だから最初に要件が決まらないとクラスも関数も作れない

あたり前のことだが、混ぜっ返すやつは
「そのクラス・関数では世界のすべてを表現できない」と言ってるわけだな。
36デフォルトの名無しさん
垢版 |
2017/04/03(月) 22:25:42.68ID:VDwG6zpG
プログラミングが目的になっちゃうと
そういう思考になるのかしらん?
2017/04/03(月) 22:25:47.59ID:XYXk6jFX
どんな状況でもドアをドアと呼ぶに相応しい共通項を見つけるってのは
ドアという言葉を定義づけるのと同じこと

言葉を定義づけるには「ドアと窓は何が違うのか?」とか
「ふすまや障子はドアなのか?」みたいに隣接する概念と比較する以外有効な方法はない

で「ドアと窓は何が違うか?」みたいな問いを考えるゲームがしたけりゃ
どっか他でやりなよ
ここは板違い
2017/04/03(月) 22:42:21.43ID:MrxLrKt6
そう。我々がやってるのは、要件でドアと定義されたものを
クラスに落とし込む作業なのだ。

決しての中にあるドアがどういうクラスかを
解析する仕事ではないのだ。
2017/04/03(月) 22:42:49.69ID:MrxLrKt6
決して世の中にあるドアがどういうクラスかを
解析する仕事ではないのだ。
2017/04/03(月) 23:09:18.39ID:7vHtJU9B
>>31
同じドアを扱っているにもかかわらず
最初は小売りか設計かと思わせておいて
いきなり「猫に押される」っていうコンテキストも抽象度も異なるものが割り込んでくるのが
問題の肝

多少視点をゆさぶられても大丈夫なのを設計しろってことだろ
そこで状況がわかんないとか言ってたら降参してるようなもんじゃん
2017/04/03(月) 23:57:11.85ID:7vHtJU9B
なんかわからんけど急にしにたくなった
2017/04/04(火) 00:16:51.37ID:L1aPO2JG
俺も俺も
2017/04/04(火) 00:32:31.54ID:Y80clcxw
いいぞ。遠慮なく死ね
2017/04/04(火) 00:33:57.09ID:Tk79CS9z
現実世界をモデリングできているか、とかいう謎の評価基準

迷宮を進むゲームでドアとして表現されたドアがあったとして、そのモデリングの良し悪しを
・家の内装をVR体験させるソフトでも使えるか
・大型家電通販でドア付きの部屋に搬入できるかをチェックするプログラムでも使えるか
・エアコンの空調のシミュレーションでも使えるか
で判断したことがあるのかな。そうだったら何も言えない。
2017/04/04(火) 01:01:13.36ID:AiGPoot5
オブジェクト指向にむりやり難癖つけてるけど結局
「具体性を持たせることで取り回しが楽になった」に対して
「これには対応できるのか!」「こういう例外はどうだ!」って難癖てるだけだから
「で、おまえの棲んでるとこの方は取り回しどうなの?」って
隠れ家に光浴びせると黙って棲んでる泥に潜っていくというね…
2017/04/04(火) 01:32:16.54ID:QcgfrUUh
>>40
問題の肝でもなんでもないわw

そういうふうに設計が変わった時に
安全な方法で設計を変更するのが
リファクタリングだよ。

どっかのバカ共は、汚いコードを修正するものだと
勘違いしているようだがね。

オブジェクト指向に限らず、変更はあるのだから
その変化についていく技術が重要
2017/04/04(火) 01:37:41.67ID:TSsDdMVB
>>17
Swiftが入ってない
やり直し
2017/04/04(火) 05:34:43.80ID:ld6GL0Sw
キャットドア問題解決したのか?
49デフォルトの名無しさん
垢版 |
2017/04/04(火) 07:33:17.45ID:gTa0RwdG
素材まで網羅した完璧なドアの設計を最初からしなくて良いのがオブジェクト指向の強みなんじゃね

難癖野郎の要望にも応えられる
50デフォルトの名無しさん
垢版 |
2017/04/04(火) 07:34:20.63ID:gTa0RwdG
>>17
C#最高なだけじゃねえか
2017/04/04(火) 15:08:10.80ID:AeH3x9f/
今後も使い続けたいと思うかどうかの割合が低いもの

嫌われている

さすがマイナビ
堂々とすり替えw
52デフォルトの名無しさん
垢版 |
2017/04/04(火) 18:42:21.83ID:PnaBNYoq
データベース操作クラスって
アンチパターンらしいですけど
世間ではどうやって操作をまとめてるんですか?
2017/04/04(火) 18:44:12.01ID:pyoNKlrC
>>52
まず、アンチパターンだと言ってる人に聞いてみてください。
54デフォルトの名無しさん
垢版 |
2017/04/04(火) 19:01:23.29ID:12S8JRG0
オブジェクト指向って、
プログラミングを自動化=部品化してくれるものというイメージしかない。
プログラマはプラモデルを組み立てているような感覚。
2017/04/04(火) 19:22:07.15ID:6xG2515u
>>52
レコードセットとかフィールドとかトランザクションを抽象化することの話?
2017/04/04(火) 19:48:05.98ID:XraiJtPm
DAOみたいなのがクソなだけで、アクセスを抽象化したクラスは必要。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況