オブジェクト指向の活用方法を教えて下さい
■ このスレッドは過去ログ倉庫に格納されています
お願いします。言語は問いません。
オブジェクト指向言語じゃなくても
オブジェクト指向の話であれば問題ありません。 あ、オブジェクト指向言語の実装とはちょっとかけ離れた例え話な
関数型言語で生きてきた人間にオブジェクト指向を説明する時にこういう話し方をする
勿論、実際には外部にある関数を変数に関連付けするわけじゃなくてクラス内部にメソッド(≒関数)を実装するわけなんだが
カッチカチの関数型人間がオブジェクト指向の意味を理解できるように、多少強引に言葉を改編してる
つっても >>377で理解できるのはカプセル化のメリットだけだからまだ全然オブジェクト指向を説明しきれていないが ネットで調べていてもオブジェクト指向が分からない…。
仕事でVB(昔の)やってたんだけど、画面のプログラムは目次状態で動かす部分は全てモジュールに作って入れてた。
画面の目次(仮名)には
<モジュール名>//○○を行う
が続いてる状態で中身はモジュールへ、モジュール使い回ししながら作ってたんだけど(時折モジュール内にも目次できたりしてた)
これはオブジェクト指向とは違うの??
モジュールがクラスになっただけちゃうんかなって、うーん良く分からない。
違いを教えてください。 全てプリミティブかつアクセサ禁止って破綻してる
アクセスできないからプログラムも書けん >>380
vbのユーザー定義型とそれを扱うモジュール内の関数を一つのかたまりとして収めたのがクラスの考え方の原型。
vb なら本当のクラスも定義出来るんだが使ったこと無いのか? >>382
ありがとう。
うーん、前職、書き方に制限ありまくりだったからクラスって本当に分からない。
情報系の大学だったけどプログラミングはほとんどやらなかったのに、基礎があるからって叩き上げられた形だったのよね。前職。
VB456にあるのかな。
.NET使う頃にはSEになってしまったから.NETもさわりしか分からない。
何かもう自分取り残されてるな…。 一ヶ月も前のをまだ待ってたんかいな。
検索すればいきなり出てきそうなもんだけど。
オブジェクト指向ってのは、
データ構造と処理構造を動的にかつ個別に、そしてそれらを一体化して管理できるようにできる仕組み。
全部まとめたその一連の一体がクラス
動的に個別に扱ってるデータがインスタンス
インスタンスに対応した処理がメソッド
インスタンスを発生させるのがそのクラスのコンストラクタ
いらないインスタンスを消すのがデストラクタ
インスタンスってのは、動的に作られたクラスデータ(専用型)であり、さらにそのクラスが持つメソッドを呼び出すことが出来る。
したがってこう書ける。
//インスタンス = クラス名->コンストラクタ(引数);
//戻り値 = インスタンス->メソッド名(引数);
うさぎ = 動物->new(耳が長い、白い); //コンストラクタ起動。動的に新データを生成します。うさぎが産まれました。インスタンスは必要な情報を全て保持しているかのように振舞います。
きりん = 動物->new(首が長い, 黄色い); //きりんが産まれました。
跳ねた距離 = うさき->動け(跳ねろ); //動物クラスが持つ、動くメソッドをうさぎに適用しました。うさぎは跳ねたときのデータに書き変わります。疲労度が増えてるかもしれません。戻り値は跳ねた距離です。
食った葉っぱの枚数 = きりん->食え->(柳); //きりんに柳の葉っぱを食わせます。きりんの内部データは自動で腹が膨れます。戻り値として食った葉っぱが返されます。
きりん->死ね; //デストラクタ。キリンに関するデータを全部メモリから消去します。
メソッドは関数のようですが、当然インスタンスからしか呼ぶことができず、名前空間を汚しません。
きりんからメソッドを呼ぶと、メソッドはきりんの情報を受け取ります。(もしくはメソッドやクラス全体はきりんの情報をすでに持っていて、きりんから呼ばれたことをメソッド自身は知っており、きりんのデータを扱えます)。 勘違いが多々見受けられるので、もう少し勉強したほうがいいね。 その言語のオブジェクト指向か、オブジェクト指向自体の定義か。
かなり違う。 結局、設計って何のためにするの?
って言ったら読む人間にわかりやすくするためだから
いくら哲学でガチガチに固めても読み手が
「何これさっぱりわからなーい」って言ったらそこで終わりな
設計書と内容が乖離してるソースもクソだし
どの仕様を実現しようとして書いたコードなのかわからないのもクソ
そもそも仕様の定義が明確でないのなんてソース書く前からクソが漏れてる
ブリブリブリブリ漏れてる! サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート オブジェクト指向に何故するかと言えば
変数、プロパティは全てpublicにすればいいじゃないかと言うところから始まる >>391
常識になってるが故に何故する必要があるのか説明が出来ない人が多いかと
例えばオブジェクトのプロパティを全てpublicにしてコンピューターからしてみたらそれで何の問題があるのかと >>393
でも全publicのプログラムって何の問題もなく動きますよね?それが悪いんですかね? CPUがpublicかprivateか判断するのか キレ過ぎてストライクゾーンから外れてるんやで
もうちょい工夫して再チャレンジするように じゃあここはオブジェクト指向の大敵publicおじさん登場という展開の方針で 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
¥ OOPに毒されすぎた人間はOCamlをやるべき
オブジェクト指向を活用できる部分は驚くほど少なく、殆どの問題はポリモーフィズムで静的に解決できることを知るだろう
OOの本質であるメッセージパッシングを活用できる場面を見極めることができるようになるだろう
オブジェクトの階層構造のデメリットが分からないなら、traitを知るべきだろう。
階層構造の設計、リファクタリング、デザインパターンの適用は仕事をした気になるが、
それらのほとんどが、何でもOOで問題に取り組もうとしたから発生する必要性だと気付くべきだ みんなにとってオブジェクト指向ってどんなの?
言語がJavaやC#だったり、Hibernateとかの有名ライブラリ使ってればオブジェクト指向?
「受注Entityにはgetterでカプセル化された各変数と、決済・出荷・返品・破棄のメソッドがあって...」みたいにビジネスロジックまでがっつり?
後者の失敗した感じの奴を引き取るハメになったんだが、巨大で邪悪な状態地獄を前に吐きそう・・・ >>406
>決済・出荷・返品・破棄のメソッドがあって
クラスじゃないの?
そうだとしたら凄そうだな。
とりあえずリファクタリングが許されるなら、機能ごとにクラス化して責務をきちんと分けるとか。
でもきっとパッチ当てるような修正しか許されないんじゃないかな。
頑張ってくださいとしか言いようがないです。 >>407
ありがとう…
手持ちの知識と経験で最初から実装するなら「振る舞いを持たない受注Dto」と「状態を持たない受注各種操作サービス」で作ると思う。
それとも「受注Dtoを包んだ受注操作Executer」みたいなのがOOPっぽくて良いのかな。
どうしてこうなったんだろ
入門書の自動車クラスを忠実に参考にしたのかな ふるまいを持たないクラスと状態クラスを分離したいよね
その設計指針は全くもって正しいと思う
でもそれはオブジェクト指向を真っ向から否定してるんだよね
我々の言葉に言い換えるとこうだ
データとふるまいが合併しているクラスは、プログラムサイズが巨大化するにつれて問題であるとわかった
なぜかといえば状態がそこらじゅうのクラスにちりばめられていてプログラマやSEがコントロールが不可能な領域になっている
だからふるまいと状態を分離しよう
ふるまいを失ったクラス、それは構造体あるいは単なるコンテナだ
状態を失ったクラス、それは単なる関数だ
つまり君が直感的にやりたいとおもっていることは実は関数型なわけだ
もしベースがJavaならScalaまたはclojureで再実装することをおすすめする
もしJavaでやるなら君がいった通り、サービスクラスとコンテナクラスに分離するべき
これはトランザクションスクリプトとよばれ、OOP界隈ではディスられているやり方だけど、(なぜならクラスという概念を否定してるから)、こっちのほうが設計がシンプルかつ明瞭にたもたれると思う
個人的にはjavaでこれをやりたくないけどね 一年近く前のレスになにを書いてるんだって思ったがそれは置いておいて、
最初にオブジェクト指向を学んだ時、もっとも意味不明でかつ無意味な単語が「ふるまい」だった。 >>410
> 「ふるまい」
Smalltalkなら言語レベルで組み込みの概念なんだけどね…
ProtoObject
Object
Behavior
ClassDescription
Class
Metaclass ┌─マシン語
│
言語のレベル─┼─低級言語
│ ┌─コンパイラ型
└─高級言語─┤
└─インタプリタ型
┌─手続き型
│
│ ┌─宣言型
│ │
文法──┤ ├─関数型
│ │
└ 非手続き型─┼─論理型
│
├─グラフィック型
│
└─問い合わせ
パラダイム──オブジェクト指向
ttp://webrylabo.blogspot.jp/2009/11/blog-post_28.html
2009年11月28日土曜日 ┌─マシン語
│
言語のレベル─┼─低級言語
│ ┌─コンパイラ型
└─高級言語─┤
└─インタプリタ型
┌─手続き型
│
│ ┌─宣言型
│ │
文法──┤ ├─関数型
│ │
└ 非手続き型─┼─論理型
│
├─グラフィック型
│
└─問い合わせ
パラダイム──オブジェクト指向
ttp://webrylabo.blogspot.jp/2009/11/blog-post_28.html
2009年11月28日土曜日 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
5648K ところで「チンポがシコシコする」という日本語表現は、文法的に正しいのか?
チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。
違うか?
「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ! 複雑なあるいは煩雑なデータ構造を管理するとき。
類似したデータを系統立てて扱いたい時。
データが多くのインスタンスで構成される時。 enemyオブジェクトとか?
bulletインスタンスとか? >>17
T-SQLは問合せ文と制御文が同時に書けるので、かなり複雑なことが手軽にできる(熟練者には)
なのでSQL Server技術者の方がORACLE技術者よりも腕がいいことが多いらしい
工夫する幅が広いので、経験も広くなる
ウィンドウ操作ができないだけ
データ操作とウィンドウ操作を完全に分けると、要件的にはSQLの方が大部分を占めることもある
特に業務系の場合、ウィンドウ操作は定型的で、業務要件にそれほど関わらない
そっちの方がオマケ
データ処理の一部がクライアント側でしかできないと思ってるのは、腕がないだけ MS-DOSの頃はMacを「オブジェクト指向」と言ったもんだが、今の意味とは違う
「オブジェクト思想」と言った方がいいのかな
Windowsはフォルダ構成以外に、スタートメニューがある
フォルダがごちゃごちゃしてるからだ
フォルダ構成とスタートメニューが二重にあるので、「インストール」を経ないと同期しない
実際にはレジストリで三重
なので「インストール」や「アンインストール」に抜けがあるとゴミが残ったり
それは机に物を置くという「オブジェクト思想」のデスクトップじゃない
そのかわり、動作が速く落ちにくい
今のMacは知らんが当時のMacは、「物」をどう置こうが自由なので、
パスも起動してから動的に確定したり、「機能拡張」のファイル数が少ない換わりに大きいので、遅く落ちやすかった APPDATAで四重かw
Macは設定ファイルもアプリケーションの隣に置かれた ところがそのスタートメニューもごちゃごちゃしてるので、もう長年見てないw
使う物をタスクバーにピン留めしてる ■ このスレッドは過去ログ倉庫に格納されています