2011-12-02 35 views
3

我正在爲體育俱樂部管理部門開發應用程序。而我的問題是,我有一個主要類Member,其中包含所有「默認」信息(名稱,姓氏,性別......)和其他兩個類CoachPractitioner,它們繼承自Member。教練有一些特定的屬性(薪水,本月舉辦的訓練......),練習者有其他一些東西(isCompetitor,category ...)根據角色創建班級

問題是練習者也可以是訓練師,另一種方式。我怎樣才能將這個模型建模成更好的方式,然後爲同一個人創建兩個條目?

編輯:這是它的外觀現在

Class Member {} 
Class Coach:Member {} 
Class Practitioner:Member {} 
+0

我認爲教練和教練都是同一種會員嗎? – bAN

回答

2

如果您只是一次只以一種方式查看它們 - 作爲一組從業者之一或作爲一組培訓師之一 - 那麼您可以將它們創建爲特定類型的成員被視爲一次。如果需要,您可以向練習者添加一個布爾屬性「IsTrainer」,並向培訓師添加「IsPractitioner」,以表示在其他地方有關於該人的更多信息。

這假設你只能以一種方式一次查看它們,而沒有獲取關於該人的所有信息的頁面。

+0

是的,這是真的......他們只能在特定的時間成爲一名訓練師或從業者,這樣我才能讓他們成爲另一個......非常棒! –

4

您可以創建一個類的成員「包含角色的列表。每個角色(教練和/或從業者)都從基類「角色」繼承,該角色包含您現有成員類中的所有屬性。教練和從業者比擁有自己的特定屬性。所以:

public class Member { 

    public IList<Role> Roles { get; private set; } 

    public Member(){ 
     Roles = new List<Role>(); 
    } 

} 

public class Role { 

    public string SomeGlobalProperty { get; set; } 

} 

public class Coach : Role { 

    public string SomeSpecificProperty { get; set; } 

} 

public class Practitioner : Role { 

    public string SomeSpecificProperty { get; set; } 

} 
1

SImeple:意識到你基本上需要讀入OOP的介紹書。

一位會員是會員(甚至是有爭議的 - 無論它是什麼,它都是一個黨)。

它有不同的角色,基本上是角色的集合,所有角色都有開始和結束日期。

Party 
    CoachInformation 
    PractitionerInformation 

我建議您閱讀「的數據模型資源手冊」,第1卷 - 他們詳談了這個標準的問題,大多數人怎麼會弄錯。

+0

有沒有可以查找這個問題的名稱? –