オブジェクト指向を教えてくれ!★2
レス数が1000を超えています。これ以上書き込みはできません。
オブジェクト指向について、調べれば調べるほど疑問が募ります。低レベルで粗末な疑問かも知れませんが、ご教授願いたいです。
・データと振る舞いをまとめる?
まとめると何か良いことあるの?
ファイルあるいはモジュールにはまとまってるよね?
丁度いい単位があるのに、何故わざわざオブジェクトという概念を導入するの?
(Javaには1ファイル1クラスという文化あるらしいけど)
・カプセル化?
モジュールのimport, exportでも実現出来るよね?
(構造体などへのアクセスを制限できれば)
・ポリモーフィズム?
別にデータと振る舞いをまとめなくても実現出来るよね?
・モノのように扱いたい?
モノとして扱いたいときに扱えば良くない? なんでわざわざ全てをオブジェクトにするの?
※前スレ
https://mevius.5ch.net/test/read.cgi/tech/1615881962/ PHPとかPythonでサーバーサイドのプログラム書く時ってクラス作るの? wikipediaでクラスの記事を書いてる途中で自警に目をつけられてブロックされて書けなくなってしまった
誰か↓の続きを完成させてクラスの記事を更新してくれない?
https://ja.m.wikipedia.org/wiki/%E5%88%A9%E7%94%A8%E8%80%85:I.hidekazu/%E3%82%AF%E3%83%A9%E3%82%B9_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
書きたいのは、
クラスはもともとダイクストラの構造化プログラミングにおける技法として出てきたのでその点を記述したかった。狭義の構造化プログラミングはプログラムの計算プロセスをフローチャートで書き表すことに主眼がある。だからgoto文はフローチャートで規則的に表すことができない(フローチャートの規則をぶっ壊す)ので有害とされたといえる。一方で、フローチャートの規則をぶっ壊すわけではないが、フローチャートで規則的に表すことができないプログラムコードというものとしてコルーチンなどの並列プロセスを含むプログラムが言える。クラスを使うオブジェクト指向プログラミングでフローチャートがほとんど無意味で設計にはUMLなどを使用するという事実はここに起因している、ということを出典付きで記載することを計画していた。
クラス = ブロックの構文であるという大前提を記載して欲しい(某言語の批判とかはいらん)。オブジェクト指向プログラミングでは、「オブジェクトとはなにか?」という結論は出ないが構造化プログラミングの枠内ではダールがはっきりとオブジェクトとはなにかということを定義しており、直接的ではないもののオブジェクトの素性について納得する説明が可能であるはずなのでそこを記載して欲しい。 >>954
その自警がなりすましで書き込んでんじゃねえの? >>954
こりゃダメだろ
Wikipediaは君の意見やウンチクを披露する場ではないぞ
英語のClass(computer programming)のページを見ろ >>956
なんでわかったんだよ
数学板でやってみたときはみんなピュアなのかそんなこと言うやついなかったぞ >>954,958
「クラスはもともとダイクストラの構造化プログラミングにおける技法として出てきたのでその点を記述したかった。狭義の構造化プログラミングはプログラムの計算プロセスをフローチャートで書き表すことに主眼がある。だからgoto文はフローチャートで規則的に表すことができない(フローチャートの規則をぶっ壊す)ので有害とされたといえる。一方で、フローチャートの規則をぶっ壊すわけではないが、フローチャートで規則的に表すことができないプログラムコードというものとしてコルーチンなどの並列プロセスを含むプログラムが言える。クラスを使うオブジェクト指向プログラミングでフローチャートがほとんど無意味で設計にはUMLなどを使用するという事実はここに起因している、ということを出典付きで記載することを計画していた。」
「クラス = ブロックの構文であるという大前提を記載して欲しい(某言語の批判とかはいらん)。オブジェクト指向プログラミングでは、「オブジェクトとはなにか?」という結論は出ないが構造化プログラミングの枠内ではダールがはっきりとオブジェクトとはなにかということを定義しており、直接的ではないもののオブジェクトの素性について納得する説明が可能であるはずなのでそこを記載して欲しい。」
リンク先読んでみたがここコピーだろ。なんで動機部分をコピーすんだよ。
本人ならそのウンチク書くだろ。 どうでもいいがスレ違い。
Wikipediaに書きたいならてめえでやれ。 const wiki = new wikiPedia(); フローチャートみたいな図はプログラムを理解しやすくするためのものであって、
フローチャートで表したいから構造化プログラミングしてるわけじゃないだろ
GOTO禁止は分岐を限定して処理のパターンを減らしたいだけで、
別にフローチャートで書こうと思えば書ける フローチャートとかスレ違い。
また自警か。wikiでやってろ。ここはそんな場所じゃねえんだぞ。 最近のC#とか、どのクラスにも共通のメソッドあるやん?
あれがOOPLの醍醐味だよな オブジェクト指向の既存コードが理解できません
謎のインスタンスがあり、謎のインスタンスから謎のメソッドに別の謎のインスタンスを引数として実行する
謎のインスタンスが戻り値として返る
謎のメソッドの中を覗いて見ても、やっぱり謎のインスタンスから謎のメソッドを実行するだけのコードが出てくる
フィールドになんかの値をセットするだけで終わり、みたいになってる
数値や文字列ならprintすればどんなデータを処理してるか分かるけど
インスタンスはこの変数をどうしたいのかが分からない
このインスタンスからメソッドを実行したり、フィールドになんかの値をセットしてるコードはあるけどそれを何の目的でやってるのか、そうすることで何が起きるのかよく分からない
そして一番謎なのはメソッドの中身の定義にどんどん移動していくと中身がない空のメソッドに到達してしまい、「あれ?」って迷子になってしまうこと
これが一番困ってる 実際のコード例を2~3個あげてくれないとそれだけだと理解を妨げてる本当の理由はわからないかな APIドキュメント見てる?
https://docs.oracle.com/javase/jp/8/docs/api/
こういうやつ
Visual Studioの支援でソースをおっかけるのもいいけど
文書としてまとまってるのを読んだほうがコードの意図は分かるかと
自前のソースの場合はDoxygenみたいなツールでAPIをドキュメント化しておくと
みんなで知識を共有できていいよ >>967
クイックソートやバイナリサーチのような汎用的なアルゴリズムとは違って、
アプリに近ければ近いほどプログラムの目的はコードを読んでもわからないよ
特に企業で使われるシステムは業務知識を知ってないと読んでも無駄だよ >>967
オブジェクト指向でもクソコードはある。
君の悩みは、オブジェクト指向のコードが分からない、ではなくて、クソコードの解析作業が必要になってしまった、が正解 >>970
そういうコードの読み方や向き合い方を聞いてるんじゃないか。
フィールドに値をセットするだけや
ただ単にインスタンスを別のクラスのメソッドに次々と渡すだけの処理のどこに業務知識があるのか、そして最後は中身のない抽象メソッド
>>971
クソコードって感じはしない、極めて厳格に整理されてるように見えるプロジェクトで汚いコードでは無い、多分俺が読み方やデバッグの仕方を知らんだけな気がする
ただ中身がどこにもないように感じる。玉ねぎの皮をひたすら剥いてる感じ、いかにもオブジェクト指向って感じのコードが苦手 クソコードじゃない前提ならレイヤーの分け方の意味や役割分担を理解してない可能性が高いな
どぅちにしろ分からないと言ってるコード例を出さないと話にならん >>972
めんどくさいけど推測してやるか、しょうがねえな
たぶん中身のないメソッドってのはスーパークラスのデフォルト実装だろう
サブクラスのインスタンスをスーパークラスの型で渡すのはよくある設計だよ
呼び出し元をたどればインスタンス化してるサブクラスがわかるはずだから、
オーバーライドしてるメソッドを読めば実際に何してるかわかるんじゃね 多分この人は解決を求めてるんじゃなくて愚痴を聞いて欲しいんだと思う >>967の前半は読む限りコンストラクタ・インジェクションと推測
中身のない空のメソッドはインターフェース定義とか? どうせgithubにすら上がってないオレオレライブラリの話じゃね? Debugビルド時は動的ディスパッチ、Releaseビルド時は静的ディスパッチって
切り替えられる言語ないかな?あったらテストしやすくて、実行コストもなくせると思う テストの手間が2倍になるよね
当然静的ディスパッチでも上手く動く事をテストで確認するんだよね。その動作が意図通りでないときはどうやってデバッグするのよw 動的ディスパッチだとテストしやすくなると思ってる理由がそもそも謎 知らんけどディペンデンシーインジェクションとか、開発対象の周辺を好きなヤツだけニセに置き換える想定だったのでは
でも動的~だけじゃ万事解決はせんよ、と。そして静的~でも周辺を置き換える技法はある。GoogleTestでもできるよ そもそもそんな切り替えが出来るかどうかは言語次第じゃないの?
実装を全く変えるならどの言語でも出来るだろうけど
意図が分からんし開発も静的でいいやんw
仮想関数とか殆どのもので使う必要無いし 上司から毎日のように仕事しろとメッセージが届くが、仕事したためしがない。
俺.仕事しろ(“上司”) #=> nil(null) 俺.仕事しろ(“上司”)
error: undefined method レビュー指摘
> 仕事しろ()
仕事しろって何の仕事だか不明、後々修正する人が迷うポイントになるので具体的な仕事名を含むように再設計して下さい
> ("上司")
「呼び元がどこか」をパラメータに含めて動作を変えるのは良い設計じゃない。やりたくなる事がたまにあるのは知ってるけど、本当は何で分岐したいのか再検討して下さい
佐々木::上司 が
矢島::部下 に
矢島.設計書初回レビュー(どの設計書か, 希望期限);
とか。
(所感:一人でオブジェクト指向を語れるレベルに達していないのでメンターを付ける必要がある) 俺のタスクリスト.追加("次週のリーダー会議の前に山本部長を喫煙所で捕まえてメンターの件相談しとく", 期間見積もり, メンター候補者配列) >>988
お陰で唇のひび割れが治ったよ、ありがとう 俺のタスクリスト.追加("佐々木に仕事内容は具体的に指示、伝わったか相手の言葉で復唱させろって教える")
// やっぱり佐々木に部下付けるのはまだ早いか… ひらめいた
主人公の年齢、役職、や、周辺キャラクターの人物設定などした上で、日本語コーディング風に物語を書いてアマゾンで発表する方法に関する技法
で特許申請
物語の途中でシステム障害が発生したとかイベント発生し文体も変える
障害を乗り越えて通常稼働に戻り物語が終わる
メインターゲット読者はプログラマー職で日々苦労してるひと 拾い物
hayabusa9
/test/read.cgi/news/1686317428/
あたおか
hayabusa9
/test/read.cgi/news/1686308209/ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 775日 22時間 40分 30秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。