2011-07-23 3 views
1

私はUMLクラスのモデルで作業していましたが、(基本的にはそのままですが)私の前提が正しいかどうかを知る必要があると感じています。私は2つのタイプがあります:管理者と場所。 (管理者が1つ以上の場所にいる場合、2つの間に関係がある)。簡単なOO質問:これらのクラスのどれがこの操作を所有する必要がありますか?

管理者は自分自身を場所に割り当てる必要があります。この割り当て操作は、場所の種類または管理者の種類にする必要がありますか? 1つの推論の推論は何ですか?

答えて

1

両方とも可能であり、議論では、両方ともうまくいくかもしれません。

管理者がメインサーバーにログインしている場合は、AdminUtils.Locations(That).AddAdministrator(Me)を呼び出すことができます。一方、管理者が特定の場所にいる場合は、その場所にログインする前にAdminUtils.Administrators(Me).AddLocation(This)を呼び出します。

これらの種類の質問は、責任を考慮して一般的に回答される特定の状況に関するものです。どのエンティティがどのエンティティを担当しますか?

これらのAddメソッドは完全に両方のエンティティの要素になる可能性がありますが、そのうちの1つは実際のストレージにマップされます。

2

私が見ているように、管理者は状態を持っているので、彼がどこにいるか知ることができます。場所はデータ入力であり、ステートレスでなければなりません。

したがって、場所を追加または削除するのは管理者です。

e。典型的なC#の:どのようにそれは場所の種類にできた

Administrator.Locations.Add 
Administrator.Locations.Remove 

また、私はあなたがここに適切ないないような双方向の関係を、使用しなくても、表示されません。

+0

ありがとうございました。だから、方法はどこに行かなければならないのかを決定する際に、状態が鍵だと言いますか? – proggrock

+0

しかし、あなたはどこの管理者がどの管理者であるか知りたければ、すべての管理者とすべてのLocationsレコードを調べる必要があります。 –

0

これは、ソフトウェアの種類によって異なります。それは人々についてのデータベースをだ場合、それは場所について、その後、場所はその管理者(setAdministrator)を参照する必要があります場合は、管理者は、割り当てられた場所(addLocation/removeLocation)のリストが含まれます。あなたが割り当ての履歴を追跡するならば、明らかに割り当ては別個のエンティティになります。 このようなことは、DDD Bookで非常によく説明されています。エリックエバンスによって

関連する問題