78
31 ななしのよっしん
2016/06/30(木) 11:52:47 ID: iM2uYbP4pO
オブジェクト思考は理解しきってないがクラス概念は本当に楽だな
RPGで言うならクラスが無い状態だとキャラ一人作るのに
A_str, A_def,・・・と1つ1つステータスを作らないといけなかったのを
クラスを一度作っちゃえばA(str, def,・・・)で一括管理できて事故も減るし
面倒な被ダメ判定はクラス関数に押し付けちゃえば後はワンタッチとか弄ってて楽しい
おかげでよく>>17な状況に陥るww
32 ななしのよっしん
2016/06/30(木) 12:06:06 ID: iM2uYbP4pO
あとオブジェクト志向でよく大勢で作業する時に分割出来るから楽って言われるけど
個人や少人数でやるにしてもパーツが使い回せて楽ってのがあるな
プログラムの一部をコピペでも良いんだが変数宣言が変な所に散らばってたりするから
そう言うのを使い回しやすいようにヘッダに切り分けて置くってのも魅力だと思う
33 ななしのよっしん
2016/07/10(日) 18:30:10 ID: pF4vmaDKf+
オブジェクト指向は設計や概念から学習すべきだ!なんて学者の大嘘で、結局はクラスという物体をプログラマ的にどう便利に使えるかなんだよな
現場ではそれしかできない
34 ななしのよっしん
2017/01/28(土) 01:20:19 ID: +fze9+d00D
オブジェクト指向の御利益を理解したいなら、Cとwin32APIで適当なソフトを作ってから、pythonとQtの組み合わせで同じものを作ってみれば良い
35 ななしのよっしん
2017/03/23(木) 00:59:54 ID: QaDxJ3dTMM
それ、大部分はOOPじゃなくてAPIの出来の問題なんで・・・WinAPIも考え方としてはOOP入ってる。クソダサだけど。
36 ななしのよっしん
2017/06/06(火) 16:10:28 ID: SrX5yqIHc7
処理だけでなく情報も格納できる、変数の様に振る舞う関数
こんな理解でok?
37 ななしのよっしん
2017/06/13(火) 01:22:47 ID: QaDxJ3dTMM
それはどっちかというとクロージャ。無関係でもないけど。
具体的操作レベルでいうなら、何かのデータ構造と、構造に対してできる操作(関数)をワンセットにしたものがオブジェクト。関数がデータを取るんじゃなくて、構造に関数が生えてる。
38 ななし
2017/11/18(土) 22:21:02 ID: dDYGpPa8vg
古きよきプログラマには理解できないだろう
理解できなくてよいのだ、理解できないのが正常な応答なのだから
これは壮大なフィクションなのだ
我々がするべきことは便利なライブラリを使い、ゴミみたいな抽象化をし腐ったライブラリに唾を吐く、それだけでいい
39 ななしのよっしん
2018/03/25(日) 01:16:22 ID: pF4vmaDKf+
データ構造とそのデータの関数をひとまとめにする→いい
その関数を通してしかデータを制御できず、勝手にいじれないようにして必ず通るチェックなどを作れる→いい
それらを使って便利なライブラリを作る→いい
高度な抽象化を行いオブジェクト指向設計でソフトウェアの部品化がうんぬん→帰って一人で一生やってろ
40 ||
2018/03/31(土) 19:03:38 ID: Og57t/S1Oi
41 ななしのよっしん
2018/05/26(土) 01:15:50 ID: 65VY1Qfi/e
プログラミングとかなにそれ美味しいのレベルの俺が調べても理解できるわけがなかったわ
最後の希望でバカでも分かるように書いてある大百科来たのに全然砕けた文章じゃないやん!もっと日常的な例えとかで解説してる記事が欲しかったの!
42 ななし
2018/08/12(日) 02:43:51 ID: dDYGpPa8vg
オブジェクト指向の前提条件をわかってない奴が多い
そういう奴に限って関数も理解してない
砕けた解説?オブジェクト指向を使おうとするな、自分でクラスを作ろうとするな、関数として機能をまず定義しろ、オブジェクトはデータの塊に過ぎない
よく素人本には生徒オブジェクトを定義します、とありthis.nameとthis.ageとかがメンバとして書かれていることが多い
想像を働かすために生徒という言葉を使うようだが、実際には名前と年を持つものなんて犬ですら要件に合致する
こんなもんはjavascriptでいうところの{"name":"ポチ","age":3}とかいう記述が示すデータ以上の意味を持たない、しかしクラスはメソッドを持ってるんだとほえる人間が多い、なるほどクラスだと所属しているクラスによってメソッドの挙動が変化するらしい
だがそれって結局javascriptでいうところの{"classname":"生徒","name":ポチ,"age":3}というような記述が示すデータがあるとして"classname"の内容によって関数実行をスイッチしてるだけだよね、所詮それがオブジェクト指向
43 ななしのよっしん
2018/09/05(水) 00:19:41 ID: pF4vmaDKf+
「人間.年齢」変数は「経年」関数を通してしか変化させることができず、「経年」変数では「人間.年齢」は増えるだけで決して減ることはない
そして「経年」変数によって「進学」「卒業」「入学」「就職」「留年」「就職浪人の開始」等が行われる
アクセス制御がかかっているので「人間.年齢」がバグったプログラムで減ったりすることは無いことが「人間」クラス単独で保証できる
大体現場で使うのはこの辺と継承まで
継承も現場で使われるのはソースの共通化目的で「〇〇Base」なんて作るくらいしか使われない
抽象化がどうのと言い出す奴を見たら近寄らない方がいい
44 ななしのよっしん
2019/02/10(日) 18:54:43 ID: QaDxJ3dTMM
継承の方がむしろ割とどうでもよく、「インターフェースに対してプログラムを書く」ことの方が必要だし、それができないやつは現状使い物にならんと思うけどな。もっというと、自分だったらソースの共通化を目的としてベースクラス作る人間は疑ってかかるなぁ。悪いけど。
45 ななしのよっしん
2019/03/15(金) 22:21:42 ID: r22ZMJCq5U
>>44の言う通りソースの共通化目的で継承を使うのはアンチパターン。
単にソースを共通化したいがために継承を使っていくと、リスコフの置換原則に違反する捻れたコードが出来上がっていくだろう。
「『適切な』インターフェースに対してプログラムを書く」ことで、ある変更の影響がインターフェースの向こう側に波及しなくなることはオブジェクト指向の大きなメリットですわな。
46 ななしのよっしん
2019/10/11(金) 11:43:29 ID: glEhW4RBJk
>>32
オブジェクト指向は機能分割やデータ分割ではなく、責務分割するからそのようなメリットが出るんだろうな。
役割が明確になった上で分割されるから、クラスを見たとき、そのクラスはどんな役割を持っているのか分かりやすい。
大勢の開発で楽の根拠はオブジェクト指向による責務分割だと思う。
あと、過去の自分は他人という考え方もできる。
だから個人開発でもオブジェクト指向は使えるのは同意。
オブジェクト指向指向は未来の自分も含めた他人にオブジェクトを使わせることに意義があると思う。
47 ななしのよっしん
2019/11/12(火) 00:36:01 ID: QK6qkYoffx
>>42
それはむしろ性的…
じゃなくて静的メソッドだな。ただの紐付け情報
48 ななしのよっしん
2020/01/23(木) 19:47:13 ID: QaDxJ3dTMM
そもそもビャーネ先生の影響でカプセル化・継承・多態を三要素と言いだしたのが間違いのもとで、これらは言語設計の分析としては正しいが、プログラム書く側にとっては覚えてもあんまり意味ないしむしろ下手に意識すると間違う。結局三つとも指してるところは一つで「モジュール間の結合は実装ではなく仕様に対して行うもので、広い意味で『同じ』と見なせるものは同じに扱えるようにしとけ」ということ。
『同じ』とは何なのかといえば、機能セットとしてのインターフェースが等しいということで、やってることはOOP以前からある要件定義と何ら変わらない。何ができて欲しいのかという定義が抽象化(カプセル化)であり、同一性の補助メカニズムとして継承・多態がつく。OOPやってれば必然的に入っては来るけど、やったらOOPになるって性質ではないし、三つを対等に捉えるのもなんか違う。
だから大事なのは実装と仕様は剥がしとけというただこれだけの話であって、普段OSのAPI呼ぶような時でもみんなやってるし、その延長で考えてけば別段難しいものではない。
49 ななしのよっしん
2020/01/30(木) 11:59:15 ID: hE7yiyIc6p
よく使う処理をひとまとめにする -> 関数
一緒に使うデータをひとまとめにする -> 構造体
データとそのデータの取り扱い方をひとまとめにする -> クラス
種類の違うデータでも同じ使い方が出来ると便利だよね -> ポリモーフィズム
じゃあポリモーフィズムに必要な「同じ使い方」の仕様書を作ろうぜ -> インターフェース
インターフェース通りに設計することを強制しよう -> 継承
なんでも出来るスーパークラスを作るより、特化した機能をもつ小さなクラスを組み合わせた方がメンテナンスしやすいよね -> 合成
俺は大体こんなイメージ。
50 ななしのよっしん
2020/02/03(月) 00:32:44 ID: kwm5EpKaBs
変数型プログラミングという解釈はどうでしょうか?
ノイマン型コンピュータはプログラムをデータとして扱うから
プログラムを格納できる変数があってもいいよね、みたいな。
そのうえで、ポインタで扱ったほうが融通が利きやすいので、
javaなどでは参照として扱わせるという解釈で。
51 ななしのよっしん
2020/04/07(火) 18:18:27 ID: 1APB64X2nE
以下の動画の説明が分かり易かった。
あくまでも大雑把な理解にはなるけど。
>>sm25744960
52 ななしのよっしん
2020/10/03(土) 09:05:52 ID: QK6qkYoffx
PHPerにこそ覚えて欲しい記述法。自分はオブジェクト指向を採用してから、メンテナンスや追加実装の工数が半減以下にまで短縮された
>>46
まさにそれ。過去の自分は他人、そんな一言一句憶えてないしな
53 ななしのよっしん
2021/02/08(月) 11:07:25 ID: lqHAMRldey
プログラミング以外の分野でオブジェクト指向に一番近いものといえば、FF8のジャンクションシステムじゃないだろうか
まずパーティメンバーの強化内容は、ジャンクションされているG.Fにより参照される
そのG.F.が持たせられる効果もまた、ジャンクションされているアビリティによって参照される
さらにそのアビリティの一部(「攻撃J」「追加効果J」など)の効果もまた、ジャンクションされている魔法の内容によって参照される
こんな風にして、強化や効果といった抽象的な概念を何でもかんでも"モノ"として扱い、参照(FF8で言うところのジャンクション)していくのがオブジェクト指向
プログラミングがよくわからない人にも、この例えで伝わってくれたらありがたい
(まぁFF8のシステム自体が難解だけどな!)
54 ななしのよっしん
2021/02/20(土) 12:55:51 ID: QaDxJ3dTMM
むしろそれは「OOPなんてわけわからん」と思わせる駄目なパターンなのでは・・・w
個人的には、オブジェクトはモノだと説明するのはもうやめた方がいいと思うんだよ。確かに日本語のモノも「事物」のように事柄だろうが抽象物だろうが指せるんだが、それはどちらかというとthingであってobjectじゃない気がする。
objectというのはつまり目的物であり、対象物。何かされるターゲットがobject。処理を軸に考えるんじゃなくて、処理されるなにかを軸に考えようというところが重要なので、抽象物でもモノなんだ的な説明はなんというか持って回った感じがする。
55 ななしのよっしん
2021/03/02(火) 01:41:35 ID: QK6qkYoffx
あちこちでオブジェクト指向の説明あるけど、インスタンスを金型とか雛形と説明するのはやめた方がいい。そうだとすると、記事の例では版木がインスタンスになる
あるサイトでは現場監督と説明してて、そっちの方がまだ正しいとは思った
インターフェースとプロトタイプの説明ならまだ金型でもわかるけど
56 ななしのよっしん
2021/03/02(火) 21:13:21 ID: inzcQWhwBB
この記事自体、オブジェクト指向と特定言語のオブジェクトの性質ことを混同しているような気がするんですが、自分の方が勘違いしているんでしょうか。
staticとかオブジェクトとして定義はするもののオブジェクト指向の説明としては関係がないような。
57 ななしのよっしん
2021/03/03(水) 12:07:10 ID: QK6qkYoffx
58 ななしのよっしん
2021/03/03(水) 18:08:48 ID: inzcQWhwBB
>>57
Javaとか言語によってはそうでしょうけれど、トップレベル関数がある言語もあるかと思います。
そもそも>>56はそういう話ではなく、静的メソッドはオブジェクトの話ではあるが、オブジェクト指向の説明としては蛇足ではないか、そして記事自体もそういった点に象徴されるように、Rubyにおけるオブジェクトの性質とプログラミングパラダイムとしてのオブジェクト指向を混同して語っているのではないかという話です。
59 ななしのよっしん
2021/03/05(金) 15:09:38 ID: ijrbyBe0Ys
まあ混同はされてるけど、、大百科記事は誰かが執筆料を受け取って責任持って書いてるもんじゃない
白を赤や黒と呼んでいるような明確な間違いがあるならともかく、「こうすればよりよい」なんて言っても誰も答えないよ
60 ななしのよっしん
2021/03/05(金) 22:32:20 ID: inzcQWhwBB
>>59
書いた当人には答える義理くらいはあるかと。
自分がこの記事に手を加えると、元の記述が跡形もなくなりそうなので、書いた当人の見解を聞きたいと思いまして。
>>55
金型とか雛形ってインスタンスでなくてクラス?
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。