オブジェクト指向の活用方法を教えて下さい

■ このスレッドは過去ログ倉庫に格納されています
2014/03/25(火) 21:44:07.66ID:AtcH5MLU
お願いします。言語は問いません。
オブジェクト指向言語じゃなくても
オブジェクト指向の話であれば問題ありません。
2014/12/18(木) 16:01:52.60ID:a38PRbZq
>>335
> ましてやプロパティを公開してしまうのは最悪
.NETのクラスは山ほどプロパティを公開してるけど、これも最悪なの?
2014/12/18(木) 22:10:35.29ID:nYq1QBRW
>>339
>>335 はプロパティをフィールドと混同している気がする。
フィールドを公開するのが最悪、なら納得できるもん。

>>338
setter/getterはあくまで、結果としてそうなるだけのものだよ。

あくまで例えばの話だけど setLeft(), setRight(), setWidth() という3つのsetterがあったとして、
内部データは「left,right」でもいいし「left,width」でも「center,width」でも
「center,half_width」でもいい、もっと言えば「width,right」でも構わない。
まあよほど処理上の都合がないかぎり最後のを選ぶ人は少数だと思うけど、
どれが単純なsetter/getterになるのか、どれが違うのかは外からは分からない。
そして、それは分からなくていいものだと思うよ。

状態が最初にあって、それを見たり弄ろうと思うとsetter/getterになっちゃうけど
まずそのオブジェクトで何をしたいのかを考えて、それを実現するための内部構造と考えると
自然とカプセル化されてくもんじゃないかな。
341デフォルトの名無しさん
垢版 |
2014/12/18(木) 22:32:07.68ID:ZOTu6c+H
>>340
いやだからアクセサでオブジェクトの状態を変える・モニターするのは別に普通だろと言ってるの。
342デフォルトの名無しさん
垢版 |
2014/12/18(木) 22:55:00.66ID:CbZTNJ5S
Entityにgetsetつけてるのって何も考えてないとしか思えない
2014/12/18(木) 23:22:15.68ID:rHvMFTQj
状態変更やモニタするメソッドの名前をgetやsetにするのは自由だけど・・・命名規則的にそれってどうなの?
それに当然モニタリング機能を提供すべき責任を負ってるクラスだけだからな

状態を変更するメソッドならバリデーションや整合性チェック、状態変化に伴う動作まで含めて一つの完結した機能として定義すべきかな
状態変化監視するならオブザーバパターンで、JavaならpropeatyChangeListenerとか
実装して受け取るべきだと思う
もしくは監視用ステータスオブジェクトを返す感じとかか?
344デフォルトの名無しさん
垢版 |
2014/12/18(木) 23:28:53.90ID:ZOTu6c+H
ああ、俺が言ってるのは単純にプロパティの事だよ。
2014/12/19(金) 00:08:44.41ID:Z5vGYKdT
こういう説明はどうだろう?
NG:状態変数を取得するために状態変数取得メソッドを作った
OK:状態取得メソッドを作ったので保管場所として状態変数を作った

少なくとも設計段階でデザインするべき物かな
そうやってデザインの結果として一部にクラスに、
結果的に単純プロパティのような形の実装になった物が出来るの悪いことではないと思う
346デフォルトの名無しさん
垢版 |
2014/12/19(金) 00:25:25.61ID:kXOboZoh
始めからプロパティとして定義するものもあれば、
プライベート変数を後からプロパティに変更する事もあれば、
プロパティだったものをプライベート変数に変更する事もあるよ。
2014/12/20(土) 09:38:36.96ID:+GgZ8JtG
CTMCPでggr
2014/12/25(木) 01:56:12.77ID:FXTtDPDb
C++とかjavaは元来の意味でのオブジェクト指向じゃないからね
あくまで、オブジェクト指向に便利な機能つけた手続き言語

オブジェクト指向をきちんと使いたいならsmalltalk参考にしてる言語のほうがいいと思われる


例として、整数を文字列に変換するときに
Java
String.valueOf(48)

Ruby
48.to_s

48さんに文字列になって欲しければ、48さんのメソッド呼ぶのが本来のオブジェクト指向ー
2014/12/25(木) 02:01:12.47ID:FXTtDPDb
同じように、通信をするconnectionってインスタンスがあったとして

connection.status = Status::FINISHED

とかやっちゃうのはオブジェクト指向らしくなくて

connection.finish

で、終了処理から内部状態変更やらやってくれるのがオブジェクト指向
2014/12/25(木) 03:27:23.93ID:plZQlrr3
>>348
Staticメソッドを引き合いに出してJavaをけなしてもねえ……
2014/12/25(木) 03:29:07.82ID:EL6gBj3v
>>348
そりゃ OO 的には美しいが、レジスタ一個で収まるところをごてごてとデコレートするのもね‥
2014/12/25(木) 14:56:46.31ID:UXO0kBFe
手続きとOOを排他扱いする時点でお察し
2014/12/25(木) 15:07:57.78ID:ZM9QeVU6
まぁ、速度優先するならOOPだの関数型だの構造化だのオーバーヘッドの必要なルール止めて
シーケンシャルに処理手書きしていけよってなるしな

保守性とかほかの目的で冗長な記述をルール化してるんだし
354デフォルトの名無しさん
垢版 |
2014/12/27(土) 21:08:42.89ID:Dl8SRIg9
文字列とか数値とか考えないのがオブジェクト思考じゃないの?
2014/12/31(水) 03:38:42.55ID:GtslL7/x
基底クラスが「人」で、3つの派生クラスを作ってそれぞれに「.work()」を記述した場合で
3つの派生クラスの全インスタンスの「.work()」を実行したいときどのように管理すれば良いのでしょうか
自分では派生クラス毎にループを回すことしか思いつきませんでした
2014/12/31(水) 07:56:11.57ID:grXbYJWV
基底クラスにwork()を定義して、派生クラスでオーバーライドするとか
2014/12/31(水) 11:53:58.04ID:HNmCF9/p
>>355
「職業」インターフェースを追加して、work()を定義するかな

work()を使う側は、人に対して命令しているのではなく、職業の役割に対してその通り働けと言ってるわけだから
2014/12/31(水) 17:22:24.60ID:/ugoQQzd
>>355
そんなん、クラスが「基底か」「派生か」ということとは関係ないじゃん。

基底クラスのインスタンスを複数作成した場合でも、同じでしょ。

複数インスタンスに同時にメッセージを送るということなんだから。

ヒントはリスナー。
2014/12/31(水) 19:32:50.12ID:NQSYJ4L5
>>355
> 3つの派生クラスの全インスタンスの「.work()」を
> 実行したいとき

例えば Smalltalk なら

人 allSubinstances do: #work

とかそういうこと?
2015/01/01(木) 10:15:28.02ID:J+tSiQ0Q
Javaでクラスメソッド書いてると罪悪感あるんだけど、
副作用のない関数を書くんなら問題ないよね?

OOPっぽくないというのが罪悪感の原因だろうけど、
public staticで副作用のない関数だとむしろ書いていくべきだよね?
2015/01/01(木) 10:29:00.83ID:unDf2EkN
>>360
気にするとすれば、そのクラスに対して作用を持たないメソッドが何でそのクラスにあるの?ってところかな

クラスって、データと「そのデータに対する」操作の集まりだから。
影響を受けるデータの方に自身の操作として定義した方が良くない?

良くあるアンチパターンの機能クラスと、データクラスに分かれちゃってる手続き型設計
2015/01/01(木) 10:49:25.84ID:ZjnnyCSc
> そのクラスに対して作用を持たないメソッドが何でそのクラスにあるの?ってところかな

クラスを定義しないと関数を書けないからね。

> クラスって、データと「そのデータに対する」操作の集まりだから。

Math.sinなどのメソッドは、どのデータに対する操作かな?
やっぱ、関数、っていう使い方は生き残ると思うんよね。
2015/01/02(金) 03:24:38.38ID:Urv5GfAa
オブジェクト指向的にはstrategyっぽくオブジェクトにしとくべきなんだろうとは思う

んで、普通はAngleオブジェクトがあってそれがsinやらcosやらのオブジェクト持ってる感じじゃない?
2015/01/02(金) 18:16:39.18ID:u8eIFPVv
この話題でJava固有の話をするのは本意ではないんだけど、
やっぱプリミティブ型ありきの現状考えると、
式の中にAngle a = new Angle(PI/4)からのa.getSin().doubleValue()みたいなんが出てくるのも、
式の途中で new Angle(a + b) みたいな生成が混じるのもシンドイ気がする。

次に、プリミティブ以外に目を向けたとしても、
関数的に表現したほうが自然に見える操作もある。
たとえばファイルのコピーをするメソッドを考えたとき、
file.copyTo(other)というふうにするより、
FileUtils.copy(File src, File dst)となってるほうが自然に見える。
実際、Javaの標準ライブラリにおいてもjava.nio.file.Filesにおいて、
public static Path copy(Path source, Path target, CopyOption... options)
となってる。これも関数的アプローチの無くならない理由というか証拠のような気もする。
2015/01/02(金) 18:23:55.66ID:IjnWDn9W
>>364
public static Angle fromDegree(double degree);
public static Angle fromRadian(double radian);
public double sin();
public double cos();
...
でいいじゃん。
Angle.fromDegree(45).sin()とか。
2015/01/02(金) 20:15:57.81ID:86rXEaVV
三角関数自体は角度の持っている特性だからAngleから取り出せるものだけど、
数学としてそれを導き出す関数で概念化した法則≒数式はMathとして定義されていてもおかしくはないか

ただ、数式自体はオブジェクト(物)を扱わず、その法則のみを抜き出して机上で扱う関数の集合、
数学自体が物事をオブジェクトで表現せずに、関数で表現したもの(ただし、直接使え無いと超非効率になる)
って感じかな

>>364
ファイルのコピーはファイル自体の機能ではなく、その上のストレージに自身の保持してるファイルを複製せよって命令する感じのような
2015/01/02(金) 21:02:15.51ID:gr/6otir
>>365
そのnewを書く書かないとかcreateメソッドを準備するとかは興味なくて、
パラメータ→結果 で済む世界の話に短命オブジェクトを挟むのが嬉しくないよね?
絶対嫌だとか、困るとか言うつもりもないけど、今んとこメリットも見えないような。

>>366
関数型言語に詳しくてウンチクのひとつも言えるなら、
この気持ちスッキリ表せるんだろうけど、今の俺が言えるのは、
関数ありだよね、特に、式には関数だよね、みたいなことだけ…。

ファイルのコピーの例はご指摘を受け、自分の中では少なくとも、
「メソッド方式よりも、関数方式でスッキリする例」で無くなってしまったw
関数方式でスッキリするのはやっぱ数式関係だけ、なのかも。
2015/01/02(金) 23:29:08.38ID:Wdw9kQqY
基本的に読みやすいと言うか、その処理がどういう本質のものかをコード自体で示してるのが良いコードなワケで
数学関係の処理は、元が元だけに関数形式が一番本質に近いから、そりゃ関数形式が読みやすくもなるわな
2015/01/03(土) 07:48:27.17ID:aZa/y2Ql
>>367
Angleがどうして短命なわけ?Pointとの本質的な違いは?
全てはあんたの一方的な思い込みだよw
2015/01/03(土) 07:51:27.38ID:aZa/y2Ql
>>367は関数型に詳しくないだけじゃなくオブジェクト指向も初心者レベルだよw
2015/01/18(日) 03:08:14.87ID:1HDk1G1l
>>370
その理由は?
372デフォルトの名無しさん
垢版 |
2015/01/29(木) 11:14:38.08ID:FsmC2LI9
beanというかバリューオブジェクト?とユーティリティクラスって

効率のためにあえてオブジェクト指向の設計を崩して、
構造化プログラミングで設計するときに利用するものって考えでいいんですかね?

構造体と機能モジュールの関係そのまんまだし
2015/02/02(月) 21:59:42.72ID:Q01xzseR
ブログラマの質にできるだけ影響を受けないように
プログラムの質を維持するのが目的だろ。
プログラマの質の水準をどの程度と見るかで
求められる効果が変わってくる。
2015/04/12(日) 15:53:34.84ID:Buy3OTWo
恥ずかしながらC#やった時に初めて理解できたわ

IEnumerableとかIDisposableを継承すると馬鹿でも分かると思う
375東京女子医科大学病院プロポフォール大量投与
垢版 |
2015/06/08(月) 21:15:24.77ID:Fqp3awmG
マスゴミ・売国奴・医療業界が隠そうとする真実---------------------安楽死---------------------奴隷に勝手に死なれては困る

安楽死旅行企画が大人気|竹田恒泰チャンネル

https://www.youtube.com/watch?v=XmP1TRsAe88


武田邦彦:安楽死と大麻、そして売春・・・オランダに学ぶ

https://www.youtube.com/watch?v=nWV8YOY39tw


安楽死党

https://www.youtube.com/watch?v=8nU2UaSlGx0

自殺は後遺症が怖い!だから-----------------------------------安楽死制度-------------------------------------安心して生きるために
2015/08/29(土) 13:11:34.86ID:g7aWBHc9
全ての識別子をグローバルにして誰かと共同制作したいならどうぞ、って感じだな
2015/11/01(日) 11:36:44.47ID:hTxt2JkX
データ(変数群)と関数を関連付けすることでデータがデータとして存在するだけで意味がわかるのがオブジェクト指向
たとえば貨幣として扱いたいデータに対して、貨幣として必要な機能だけに関数を限定させれば、それはもうデータが存在するだけで貨幣として意味がわかる(貨幣以外の動作が起こり得ないから)

関数型言語だとデータを出力するまで貨幣かどうかは信用できない
変数 kahei に対して全ての関数が利用できるから、kahei はどうとでもなり得る

コメントつけろとかそういう原始的な話じゃなくてね
2015/11/02(月) 05:08:00.98ID:tRZ2mEuQ
その辺は言語の構造によって違うが
つーかオブジェクトの使われ方も言語によって全然違ったりするのでね
2015/11/02(月) 08:23:24.30ID:+vmX+mwq
あ、オブジェクト指向言語の実装とはちょっとかけ離れた例え話な
関数型言語で生きてきた人間にオブジェクト指向を説明する時にこういう話し方をする

勿論、実際には外部にある関数を変数に関連付けするわけじゃなくてクラス内部にメソッド(≒関数)を実装するわけなんだが

カッチカチの関数型人間がオブジェクト指向の意味を理解できるように、多少強引に言葉を改編してる

つっても >>377で理解できるのはカプセル化のメリットだけだからまだ全然オブジェクト指向を説明しきれていないが
2015/11/22(日) 11:27:04.36ID:yehd6qpM
ネットで調べていてもオブジェクト指向が分からない…。

仕事でVB(昔の)やってたんだけど、画面のプログラムは目次状態で動かす部分は全てモジュールに作って入れてた。
画面の目次(仮名)には
<モジュール名>//○○を行う
が続いてる状態で中身はモジュールへ、モジュール使い回ししながら作ってたんだけど(時折モジュール内にも目次できたりしてた)
これはオブジェクト指向とは違うの??
モジュールがクラスになっただけちゃうんかなって、うーん良く分からない。

違いを教えてください。
2015/12/17(木) 16:14:25.39ID:f9fm3u2u
全てプリミティブかつアクセサ禁止って破綻してる
アクセスできないからプログラムも書けん
2015/12/18(金) 04:38:42.92ID:TCff1iV0
>>380
vbのユーザー定義型とそれを扱うモジュール内の関数を一つのかたまりとして収めたのがクラスの考え方の原型。
vb なら本当のクラスも定義出来るんだが使ったこと無いのか?
2015/12/18(金) 07:38:43.70ID:VKllly6g
>>382
ありがとう。
うーん、前職、書き方に制限ありまくりだったからクラスって本当に分からない。
情報系の大学だったけどプログラミングはほとんどやらなかったのに、基礎があるからって叩き上げられた形だったのよね。前職。
VB456にあるのかな。
.NET使う頃にはSEになってしまったから.NETもさわりしか分からない。
何かもう自分取り残されてるな…。
2015/12/18(金) 20:50:42.22ID:rBQUliqS
一ヶ月も前のをまだ待ってたんかいな。
検索すればいきなり出てきそうなもんだけど。

オブジェクト指向ってのは、
データ構造と処理構造を動的にかつ個別に、そしてそれらを一体化して管理できるようにできる仕組み。

全部まとめたその一連の一体がクラス
動的に個別に扱ってるデータがインスタンス
インスタンスに対応した処理がメソッド
インスタンスを発生させるのがそのクラスのコンストラクタ
いらないインスタンスを消すのがデストラクタ

インスタンスってのは、動的に作られたクラスデータ(専用型)であり、さらにそのクラスが持つメソッドを呼び出すことが出来る。
したがってこう書ける。

//インスタンス = クラス名->コンストラクタ(引数);
//戻り値 = インスタンス->メソッド名(引数);

うさぎ = 動物->new(耳が長い、白い); //コンストラクタ起動。動的に新データを生成します。うさぎが産まれました。インスタンスは必要な情報を全て保持しているかのように振舞います。
きりん = 動物->new(首が長い, 黄色い); //きりんが産まれました。


跳ねた距離 = うさき->動け(跳ねろ); //動物クラスが持つ、動くメソッドをうさぎに適用しました。うさぎは跳ねたときのデータに書き変わります。疲労度が増えてるかもしれません。戻り値は跳ねた距離です。
食った葉っぱの枚数 = きりん->食え->(柳); //きりんに柳の葉っぱを食わせます。きりんの内部データは自動で腹が膨れます。戻り値として食った葉っぱが返されます。

きりん->死ね; //デストラクタ。キリンに関するデータを全部メモリから消去します。


メソッドは関数のようですが、当然インスタンスからしか呼ぶことができず、名前空間を汚しません。
きりんからメソッドを呼ぶと、メソッドはきりんの情報を受け取ります。(もしくはメソッドやクラス全体はきりんの情報をすでに持っていて、きりんから呼ばれたことをメソッド自身は知っており、きりんのデータを扱えます)。
2015/12/22(火) 12:13:39.68ID:aBFh4Ipr
勘違いが多々見受けられるので、もう少し勉強したほうがいいね。
2015/12/31(木) 03:23:42.07ID:riQaChnP
その言語のオブジェクト指向か、オブジェクト指向自体の定義か。
かなり違う。
2016/03/27(日) 21:38:57.58ID:N7IGtcj3
結局、設計って何のためにするの?
って言ったら読む人間にわかりやすくするためだから
いくら哲学でガチガチに固めても読み手が
「何これさっぱりわからなーい」って言ったらそこで終わりな
設計書と内容が乖離してるソースもクソだし
どの仕様を実現しようとして書いたコードなのかわからないのもクソ
そもそも仕様の定義が明確でないのなんてソース書く前からクソが漏れてる

ブリブリブリブリ漏れてる!
2016/03/28(月) 21:59:57.56ID:jI9F+kOe
家と同じ
無計画に建てたらあばら家になる
389デフォルトの名無しさん
垢版 |
2016/03/29(火) 09:35:59.83ID:/c8bAcK4
サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート
2016/03/29(火) 21:13:02.91ID:WTA2j3Vp
オブジェクト指向に何故するかと言えば
変数、プロパティは全てpublicにすればいいじゃないかと言うところから始まる
2016/03/30(水) 09:31:45.09ID:idf8Q5SU
それなんて構造体?
カプセル化なんて常識じゃんw
2016/03/30(水) 20:08:05.29ID:H6rY7wzp
>>391
常識になってるが故に何故する必要があるのか説明が出来ない人が多いかと

例えばオブジェクトのプロパティを全てpublicにしてコンピューターからしてみたらそれで何の問題があるのかと
2016/04/01(金) 18:13:49.68ID:ELyCfH/G
>>392
ばか?
2016/04/01(金) 18:22:47.72ID:TewsBR2n
>>393
でも全publicのプログラムって何の問題もなく動きますよね?それが悪いんですかね?
2016/04/01(金) 18:28:15.95ID:j6FPRdfu
CPUがpublicかprivateか判断するのか
2016/04/01(金) 19:43:57.88ID:RonLnaIy
あ、アセンブラ的な話はちょっと、、
2016/04/02(土) 06:38:34.56ID:vYH8mHjR
>>394
もうちょっと気合い入れて釣れよ
2016/04/02(土) 16:15:31.86ID:P45UDLlW
>>397
えー結構いいキレ具合やろ
2016/04/03(日) 21:25:16.27ID:AFllrpm9
キレ過ぎてストライクゾーンから外れてるんやで
もうちょい工夫して再チャレンジするように
2016/04/03(日) 23:25:16.70ID:I1bXI3bS
じゃあここはオブジェクト指向の大敵publicおじさん登場という展開の方針で
2016/04/03(日) 23:37:46.54ID:GlCd9dIf
Setter getter使えw
2016/04/04(月) 19:02:28.23ID:Pgq0yCJI
大敵はstaticおじさんだろ?
403デフォルトの名無しさん
垢版 |
2016/05/01(日) 15:58:07.83ID:tKi6j9CT
匿名通信(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的に分散され、特定のサーバーに依存しません
2016/05/05(木) 17:44:51.45ID:uHWe44q7
OOPに毒されすぎた人間はOCamlをやるべき
オブジェクト指向を活用できる部分は驚くほど少なく、殆どの問題はポリモーフィズムで静的に解決できることを知るだろう
OOの本質であるメッセージパッシングを活用できる場面を見極めることができるようになるだろう

オブジェクトの階層構造のデメリットが分からないなら、traitを知るべきだろう。

階層構造の設計、リファクタリング、デザインパターンの適用は仕事をした気になるが、
それらのほとんどが、何でもOOで問題に取り組もうとしたから発生する必要性だと気付くべきだ
2016/05/17(火) 16:15:23.13ID:PHOPFQsz
OCamlってそんなに駄目な言語なの?
2016/05/18(水) 01:04:43.37ID:ErRdtrnJ
みんなにとってオブジェクト指向ってどんなの?
言語がJavaやC#だったり、Hibernateとかの有名ライブラリ使ってればオブジェクト指向?
「受注Entityにはgetterでカプセル化された各変数と、決済・出荷・返品・破棄のメソッドがあって...」みたいにビジネスロジックまでがっつり?

後者の失敗した感じの奴を引き取るハメになったんだが、巨大で邪悪な状態地獄を前に吐きそう・・・
2016/05/23(月) 21:43:40.30ID:VxHtpmL+
>>406
>決済・出荷・返品・破棄のメソッドがあって

クラスじゃないの?
そうだとしたら凄そうだな。
とりあえずリファクタリングが許されるなら、機能ごとにクラス化して責務をきちんと分けるとか。
でもきっとパッチ当てるような修正しか許されないんじゃないかな。

頑張ってくださいとしか言いようがないです。
2016/05/24(火) 14:37:31.12ID:kSJa5DY/
>>407
ありがとう…
手持ちの知識と経験で最初から実装するなら「振る舞いを持たない受注Dto」と「状態を持たない受注各種操作サービス」で作ると思う。
それとも「受注Dtoを包んだ受注操作Executer」みたいなのがOOPっぽくて良いのかな。

どうしてこうなったんだろ
入門書の自動車クラスを忠実に参考にしたのかな
2017/03/25(土) 13:05:46.69ID:Hepb4FxQ
ふるまいを持たないクラスと状態クラスを分離したいよね
その設計指針は全くもって正しいと思う
でもそれはオブジェクト指向を真っ向から否定してるんだよね

我々の言葉に言い換えるとこうだ
データとふるまいが合併しているクラスは、プログラムサイズが巨大化するにつれて問題であるとわかった

なぜかといえば状態がそこらじゅうのクラスにちりばめられていてプログラマやSEがコントロールが不可能な領域になっている
だからふるまいと状態を分離しよう

ふるまいを失ったクラス、それは構造体あるいは単なるコンテナだ

状態を失ったクラス、それは単なる関数だ
つまり君が直感的にやりたいとおもっていることは実は関数型なわけだ

もしベースがJavaならScalaまたはclojureで再実装することをおすすめする

もしJavaでやるなら君がいった通り、サービスクラスとコンテナクラスに分離するべき

これはトランザクションスクリプトとよばれ、OOP界隈ではディスられているやり方だけど、(なぜならクラスという概念を否定してるから)、こっちのほうが設計がシンプルかつ明瞭にたもたれると思う
個人的にはjavaでこれをやりたくないけどね
2017/03/28(火) 18:35:33.54ID:wSpDlXLz
一年近く前のレスになにを書いてるんだって思ったがそれは置いておいて、
最初にオブジェクト指向を学んだ時、もっとも意味不明でかつ無意味な単語が「ふるまい」だった。
2017/03/29(水) 09:44:06.57ID:PMA68UxV
>>410
> 「ふるまい」

Smalltalkなら言語レベルで組み込みの概念なんだけどね…

ProtoObject
 Object
  Behavior
   ClassDescription
    Class
    Metaclass
2017/07/23(日) 00:47:28.95ID:4pTb5xvQ
       ┌─マシン語

言語のレベル─┼─低級言語
       │      ┌─コンパイラ型
       └─高級言語─┤ 
              └─インタプリタ型
    ┌─手続き型

    │       ┌─宣言型
│ │
文法──┤       ├─関数型
│ │
   └ 非手続き型─┼─論理型

         ├─グラフィック型

         └─問い合わせ

パラダイム──オブジェクト指向


ttp://webrylabo.blogspot.jp/2009/11/blog-post_28.html
2009年11月28日土曜日
2017/07/23(日) 00:54:24.08ID:4pTb5xvQ
           ┌─マシン語
           │
言語のレベル─┼─低級言語
           │            ┌─コンパイラ型
           └─高級言語─┤ 
                         └─インタプリタ型
        ┌─手続き型
        │
        │         ┌─宣言型
        │         │
文法──┤         ├─関数型
        │         │
        └ 非手続き型─┼─論理型
                   │
                   ├─グラフィック型
                   │
                   └─問い合わせ
                           
パラダイム──オブジェクト指向
                           
ttp://webrylabo.blogspot.jp/2009/11/blog-post_28.html
2009年11月28日土曜日
2017/09/16(土) 17:26:47.77ID:3R6WSf4d
関数型はパラダイムの方にもっていきたいね
415デフォルトの名無しさん
垢版 |
2017/11/06(月) 03:33:00.01ID:2Q/sT7xS
ヤフーブログの https://blogs.yahoo.co.jp/kamyu_2010 にデザパタ解説を発見した。
416デフォルトの名無しさん
垢版 |
2018/05/23(水) 21:20:33.63ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

5648K
417デフォルトの名無しさん
垢版 |
2018/07/05(木) 00:37:19.93ID:RfoszcD2
QS9
418デフォルトの名無しさん
垢版 |
2018/07/08(日) 16:25:00.06ID:vDaTJ8Du
ヤフーのブログのサイトで初心者にはわかりやすいブログを発見したよ。
https://blogs.yahoo.co.jp/kamyu_2010/35417803.html
2020/06/18(木) 19:59:44.28ID:n5xiCy8O
こちらで同意を得られなかったからニュース速報スレで騒いでるw

オブジェクト指向は愚かな考え   
https://hayabusa9.5ch.net/test/read.cgi/news/1592474015/
  
420デフォルトの名無しさん
垢版 |
2020/06/18(木) 22:56:36.42ID:g18Fqbw/
未経験から半年でフリーエンジニアになれる人の特徴
https://www.youtube.com/watch?v=YCxu0jn52Qw
フリーランスか会社員かどっちが簡単かについての最終回答
https://www.youtube.com/watch?v=JA4JNSmIdxI
【エンジニア】正社員/派遣社員/フリーランスのメリット・デメリットについて
https://www.youtube.com/watch?v=fTG-eMpwhCg
月収1000万円オンラインサロンオーナーの日常【飲み過ぎ】
https://www.youtube.com/watch?v=lPfWZLatYus&;t=107s
借金400万円から人生逆転するまでの軌跡
https://www.youtube.com/watch?v=fXdHlFFUjGY
エンジニアはお金を追求してはいけないという年寄りを論破してみた
https://www.youtube.com/watch?v=qJHCmxFv718
プログラミングスクールを否定する老害どもについて
https://www.youtube.com/watch?v=K2SN-Rr0PgY&;t=506s
新人叩きしてる古参勢がすぐ儲からなくなる理由
https://www.youtube.com/watch?v=Ch9Ir8O-iqU&;t=332s
421デフォルトの名無しさん
垢版 |
2020/08/23(日) 20:35:12.94ID:qp6BB2Af
ところで「チンポがシコシコする」という日本語表現は、文法的に正しいのか?

チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
2020/08/23(日) 20:54:14.43ID:QkS8Y3mc
まだ言ってる
2020/08/24(月) 03:51:28.76ID:kS+LJTrm
>>1
必要なものと思い込ませて教材商法で荒稼ぎ
2020/08/24(月) 12:34:56.77ID:jN2NYQ9A
複雑なあるいは煩雑なデータ構造を管理するとき。
類似したデータを系統立てて扱いたい時。
データが多くのインスタンスで構成される時。
2020/08/25(火) 01:58:34.46ID:kR3OjXLq
enemyオブジェクトとか?
bulletインスタンスとか?
426デフォルトの名無しさん
垢版 |
2020/08/25(火) 04:40:46.72ID:yD81MP45
>>17
T-SQLは問合せ文と制御文が同時に書けるので、かなり複雑なことが手軽にできる(熟練者には)
なのでSQL Server技術者の方がORACLE技術者よりも腕がいいことが多いらしい
工夫する幅が広いので、経験も広くなる

ウィンドウ操作ができないだけ
データ操作とウィンドウ操作を完全に分けると、要件的にはSQLの方が大部分を占めることもある
特に業務系の場合、ウィンドウ操作は定型的で、業務要件にそれほど関わらない
そっちの方がオマケ
データ処理の一部がクライアント側でしかできないと思ってるのは、腕がないだけ
427デフォルトの名無しさん
垢版 |
2020/08/25(火) 04:55:25.53ID:yD81MP45
MS-DOSの頃はMacを「オブジェクト指向」と言ったもんだが、今の意味とは違う
「オブジェクト思想」と言った方がいいのかな

Windowsはフォルダ構成以外に、スタートメニューがある
フォルダがごちゃごちゃしてるからだ
フォルダ構成とスタートメニューが二重にあるので、「インストール」を経ないと同期しない
実際にはレジストリで三重
なので「インストール」や「アンインストール」に抜けがあるとゴミが残ったり

それは机に物を置くという「オブジェクト思想」のデスクトップじゃない
そのかわり、動作が速く落ちにくい

今のMacは知らんが当時のMacは、「物」をどう置こうが自由なので、
パスも起動してから動的に確定したり、「機能拡張」のファイル数が少ない換わりに大きいので、遅く落ちやすかった
428デフォルトの名無しさん
垢版 |
2020/08/25(火) 05:00:39.88ID:yD81MP45
APPDATAで四重かw
Macは設定ファイルもアプリケーションの隣に置かれた
429デフォルトの名無しさん
垢版 |
2020/08/25(火) 05:02:41.90ID:yD81MP45
ところがそのスタートメニューもごちゃごちゃしてるので、もう長年見てないw
使う物をタスクバーにピン留めしてる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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