X



C#, C♯, C#相談室 Part97
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん (ワッチョイ d707-bKpv)
垢版 |
2022/12/21(水) 10:18:38.02ID:DxBIri9+0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0861デフォルトの名無しさん ころころ (ワッチョイ 53ae-aesm)
垢版 |
2024/05/12(日) 22:53:33.15ID:oU1NEJC80
ここで聞くのは正しくなかもしれませんが、分かる方がいれば教えてください。
ドメイン駆動設計を勉強中です。エンティティに識別子を持たせる意味が分かりません。
エンティティをインスタンス化するとそれぞれアドレスが異なるインスタンスが生成されると思います。
==演算子やEqualsメソッドで比較するのは参照じゃダメなんでしょうか?
識別子を比較するようにオーバーライドしているのは何故ですか?
0862デフォルトの名無しさん (ワッチョイ 2701-IR/V)
垢版 |
2024/05/12(日) 23:06:12.43ID:13YW9m600
>>861
いろいろ問題あるやろ

例えば本と著者のようにエンティティ動詞を関連付けるとして
識別子じゃなくメモリアドレスで紐づけるの?
メモリアドレスで識別するなら永続化できないし
異なるメモリ空間で実行するプログラムにエンティティを渡せない

データベースのプライマリキーと同じでエンティティの識別には
エンティティの一生涯で変化しない識別子が必要
0863 警備員[Lv.1][新初] (ワッチョイ 53ae-aesm)
垢版 |
2024/05/13(月) 00:07:27.42ID:T0EdOj3i0
>>862
ありがとうございます。何となく分かってきました。
ということは、そのプログラム実行時(永続化する必要が無い)かつ同じメモリ空間かつであれば、アドレスで比較しても問題ないですか?
それとも普通そういった使い方はしないんでしょうか?
0864デフォルトの名無しさん (ワッチョイ 4fda-lgp4)
垢版 |
2024/05/13(月) 00:57:13.99ID:KNVG9kbW0
エンティティをインスタンス化するとアドレスが異なるインスタンスが生成されるのはいいとして、そこから対偶になっていない、
エンティティが同一ならアドレスが等しいという条件を課すとするならば、
アドレスが異なるならばエンティティが異なるということが導かれ、
当たり前だけどエンティティが同一だけどアドレスが異なる状態は許容しないということになるよね
どんな操作をするのにも参照を取り回して同一インスタンスを操作することを徹底できればいいけれど、
気軽にコピーできなくなるということなので、実用アプリケーションの制作において足枷にならないかな?
とりあえずキャッシュがかなりやりにくくなるような気がするけど
0877デフォルトの名無しさん (ワッチョイ 53ff-0yLd)
垢版 |
2024/05/15(水) 12:53:10.60ID:/Mhgjk7F0
思考実験としてはそれなりに面白いお題だった

「メモリアドレスを識別子とするエンティティは果たして存在するのだろうか?存在するならそれは具体的にどういうエンティティなのか?」

もちろんメモリ領域そのものの管理を目的としたエンティティは除いてだけど
0879デフォルトの名無しさん (ブーイモ MMf3-0yLd)
垢版 |
2024/05/15(水) 18:48:28.55ID:FpKtUTMgM
>>878
仮にメモリアドレスを識別子とするエンティティが存在するなら別々のインスタンスが同じエンティティを表すことは当然ないよね

そういうエンティティがありえるのかどうかという問題
0881デフォルトの名無しさん (ブーイモ MM5b-0yLd)
垢版 |
2024/05/15(水) 23:12:27.13ID:s7hy7sHPM
>>880
オブジェクトインスタンスそのものの管理を行うような低レイヤーのソフトウェアで考えた場合、オブジェクトインスタンスそのものが一つのエンティティとなりうるというのはOK?

その場合別インスタンスが同一エンティティを表すことはないよね?

ってことはエンティティの種類によってはそういうこともあるということだとおもうけど
0882デフォルトの名無しさん (ブーイモ MM5b-0yLd)
垢版 |
2024/05/15(水) 23:20:45.90ID:ZskG14vCM
一応書いておくけど
インスタンスやメモリ領域の管理を目的とした場合以外でメモリアドレスを識別子にするのが妥当なケースがあるとは思ってないからね

あくまで普段考えない角度から物事を見て理解を深めるための思考実験
0886デフォルトの名無しさん (ワッチョイ 1b01-lNhc)
垢版 |
2024/05/17(金) 23:18:16.81ID:SQDXRiXC0
ある種の限られたドメインにおいてはメモリアドレスを識別子とするエンティティが(理屈の上では)存在しうることはDDD本のエンティティの項目を読めばわかると思う
ただ現実的にそういう低レイヤーにDDDが適用されるかどうかは別の問題

(以下引用)
Object-oriented languages build “identity” operations into every object (for example, the “==” operator in Java). These operations determine if two references point to the same object by comparing their location in memory or by some other mechanism. In this sense, every object instance has identity. In the domain of, say, creating a Java runtime environment or a technical framework for caching remote objects locally, every object instance may indeed be an ENTITY. But this identity mechanism means very little in other application domains.
0887デフォルトの名無しさん (ワッチョイ eb9c-b4O/)
垢版 |
2024/05/17(金) 23:54:44.95ID:0Qw7AgxQ0
「が妥当」は言いすぎたか

インスタンスやメモリ領域の管理を目的とした場合はメモリアドレスをエンティティの識別子にするの「は」ドメイン駆動設計として妥当である

こうか
0889デフォルトの名無しさん (オイコラミネオ MM49-YREO)
垢版 |
2024/05/18(土) 08:59:29.69ID:uwOjIZn9M
どういうゲームでどこに行きつけばゴールなのか?

既存の枠組みで何も考えないで実装できるから同じルールでやってるだけ
思考実験しなくていいそれが利点

永続化問題、DB使う使わないとか言語がなにかでルール変えてコーディングするのかどうか
考えないでいいと言うことは手間が減る
人材も幅広く取れるし共通概念なので理解してもらいやすい

アドレスはIDと違ってコーディング側では割り振りできない
recordをwithで書き換えたりしたらアドレスでは残念なことになる
普通にそんなことは起こらないだろうけど今後もC#が変わっていったとして同じとは限らない
レスを投稿する

レス数が900を超えています。1000を超えると表示できなくなるよ。

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