2012-04-11 4 views
0

私はエンタープライズアプリケーション用の一連のモデルを作成しようとしています。データベースに非常に緊密に結ばれたことはありませんでした。この時点で、私は単純に「Is-A」または「Has-A」の質問に答えるためにtrynigです。私はこれをDB構造体の外に置いていますが、必要に応じて結びつけたくありません。メンバー "Is-A" PersonまたはPerson "Has-A"の登録

私は、非常に明白なPersonモデルに典型的な "Has-A"電話とアドレスを持っています。ほとんどすべてがそのPersonモデルで機能し、 "Has-A"です。

ただし、メンバーがいます。私たちのDB /現行システムでは、メンバーは登録者です。具体的には、Dis-Registered(by Date)の特定の種類の登録です。

一方、私はメンバーが "Is-A"関係としてPersonを継承すると感じます。しかし、私はこのタイプのものには非常に新しいですし、私はそれを考えているかどうか疑問に思います。私の人物が「Has-A」の登録をしているのですか、それとも他に何かを暗示していますか?

私はメンバーがいれば、事前登録、登録、以前の登録のための異なる "Is-A"モデルが必要ですか?それは国家の問題ですが、もう一度、私はこれで新しいです。状態の質問であれば、「Has-A」登録というPersonモデルを持つだけに戻っていますか?

これは、多少、意見に基づいていると私は理解しており、これについてそれぞれの人の意見を歓迎します。

+0

登録は、[関連クラス]のように聞こえる(http://etutorials.org/Programming/UML/Chapter+6.+Class+ダイアグラム+アドバンスト+コンセプト/アソシエーション+クラス/)(特に、いくつかの登録(pre、formerなど)について言及しています。その場合に欠けているのは、登録の「何が」であるか(たとえば、ある種の計画ですか?)です。 – Fuhrmanator

+0

@Fuhrmanator:Personクラスから継承したMemberクラスを持っているのに対して、前述の "Associationクラス"を使ったPersonクラス "has-a"の登録を信じているようです。このモデルを私のモデルに適用し、それがどのように見えるかを見てみましょう。あなたのリンクされた例のように、登録簿には日付範囲があり、これは頭をよじれないように見えます。 –

+0

Is-aは@Alex Burtsevが答えたのと同じ理由で私には意味がありません。 – Fuhrmanator

答えて

1

人が階層内でより高くなることがより理にかなっています。すべての人のグループから、あなたはいくつかのメンバー、いくつかの元メンバー、およびいくつかのメンバーを持っています。

あなたはそれを他の方法で見てみると、すべてのメンバーのグループから、すべてが人々だと言いますが、一部はDis-Enrolledですか?彼らがDis-Enrolledである場合、彼らはもはやメンバーではないので、それはあまり意味がありません。

メンバーではなく、登録が接続されていない限り(つまり、登録を取り消してもまだメンバーになっていない場合)。

+0

最後の声明には、いいえ、Dis-Enrolled Memberであってもメンバーにしか適用できないことがシステム内にあることがあります。だからこそ、私は「国家」のように感じるのですが、最初に尋ねなければならなかったので、私は何を知っていますか? –

+0

あなたの最初の声明に、多分私は誤解しているかもしれませんが、私はあまりにも人が高くなるべきだと思います。私の人が登録をしているかどうか、または登録がある人から継承するメンバーが必要かどうかを聞くことを意味しました。さらに、私はどのように私が全体の "国家"のことを管理するのだろうかと思っています。 これは理にかなっていますか? –

+0

あなたは確かに知っている!これはあなたのプログラムafterallです。ほんの少しの質問: 1)複数の登録ができますか? 2)複数のメンバーシップを持てますか? どのように状態を管理するかわからない場合は、まずメンバー/登録と何をしたいかを決定する必要があります。 –

0

「登録」とは完全には理解できませんが、私はあなたの質問に答えようとします(私は英語のネイティブスピーカーではありません)。

IS-A関係を使用すると決めたら、 メンバー:Person、VIPMember:Member、ExMember:Memberなどとなります。PersonオブジェクトがMemberや何かに変更された場合それ以外は?このタイプにオブジェクトを変換し、Personオブジェクトから値をコピーしてメンバオブジェクトを作成する必要があります...多くの定型作業があります。

オブジェクトが変更された場合作成後に型を識別するプロパティを使用することをお勧めします。 Cosider Apple:フルーツ(アップルは常にフルーツ、それはトマトにならない)、CanceledOrder:Order(注文はCancledOrderになり、Order.Stateを好むだろう)。これは、オブジェクトが作成された後は、そのタイプを変更することができない言語(C#など)の場合に特に当てはまります。私は、私が作成し理解するものから、あなたのケースについては

public class Person 
{ 
    public IEnumerable<Membership> Memberships {get;} 

    public bool IsMember 
    { 
     get 
     { 
      return Memberships.Any(); 
      //Or what ever logic you imply 
     } 
    } 
} 
関連する問題