2013-05-07 82 views
1

在C#中,我有一個AddressBook類,並且在該類中有一個聯繫人列表。我有一個Contact類繼承自我的抽象Person類(它具有Name,Sex,DOB)。但我希望每個聯繫人都能夠獲得聯繫信息,所以我創建了另一個名爲ContactInfo的類(電話號碼,地址,城市)。我在解決如何將ContactInfo屬性(數字,地址等)附加到用戶決定輸入到AddressBook的每個聯繫人時遇到問題。下面是我的聯繫人類和我的ContactInfo類:我在向類中添加信息時遇到問題

public class Contact : Person 
{ 
    public ContactInfo info, newInfo; 
    public Contact() 
    { } 

    public ContactInfo GetContactInfo() 
    { 
     var info = new ContactInfo(); 
     return info.GatherContactInfo(); 
    } 

    //public ContactInfo Info { get; set; } 
} 

public class ContactInfo 
{ 
    public string PhoneNumber { get; set; } 
    public string Address { get; set; } 
    public string City { get; set; } 
    public string State { get; set;} 
    public Contact contact; 

    public ContactInfo() 
    { } 
     public ContactInfo GatherContactInfo() 
     { 
      var newInfo = new ContactInfo(); 
      Console.WriteLine("Enter their phone number:"); 
      string phoneNumber = Console.ReadLine(); 
      newInfo.PhoneNumber = StorePhoneNumber(phoneNumber); 
      Console.WriteLine("Enter their address: "); 
      string address = Console.ReadLine(); 
      newInfo.Address = StoreAddress(address); 
      Console.WriteLine("Enter city: "); 
      string city = Console.ReadLine(); 
      newInfo.City = StoreCity(city); 
      Console.WriteLine("Enter State: "); 
      string _state = Console.ReadLine(); 
      newInfo.State = StoreState(_state); 

      return newInfo; 
     } 
+4

'我有問題'是什麼問題?你無法弄清楚如何以一種合理的方式來設計它,或者你的實現在這裏不起作用?你可以說得更詳細點嗎? – tnw 2013-05-07 20:05:45

+1

您通常希望將模型與數據條目分開。因此,用戶輸入聯繫人詳細信息,並使用輸入的字段創建或填寫ContactInfo。 – flup 2013-05-07 20:08:37

+1

是否有其他信息不直接存儲在'聯繫人'中的原因? ...或者是那個問題?即,*如何將字段添加到子類?*(如果是這樣,答案與其他類相同*) – svidgen 2013-05-07 20:09:56

回答

0

我認爲你需要重新考慮你的代碼結構。爲什麼你會有AddressBook包含ContactInfo將包含的信息?

爲什麼不讓聯繫人包含所有內容,並且這是AddressBook內的列表?

// obviously pseudocode 
AddressBook { 
    Name 
    OwnerName 
    ... 
    List(of Contacts) 
    MethodToGetContactInfo() 
} 

如果你可以避免它(你幾乎總是可以有良好的設計),你不想多次存儲相同的數據。在你深入研究之前,我會回到繪圖板,以至於需要做更多的工作。

+0

我同意Yatrix,並且寧願將所有聯繫信息放入一個Contact類。我正在學習,我的朋友試圖教我「是一個」和「有一個」關係之間的區別,即:聯繫人是一個人,聯繫人有聯繫信息,因此分開ContactInfo的聯繫人已經讓我目前的情況。 – user2359626 2013-05-07 23:41:54

+0

油嘴,您還提到通過使用輸入的字段創建或填充ContactInfo來將模型從數據條目中分離出來。我理解封裝ContactInfo類只知道它的特性,但是有人可能會發佈一個接受用戶輸入並填充ContactInfo字段的示例 – user2359626 2013-05-07 23:45:39

+0

此外,如果我要將Contact和ContactInfo保留在單獨的類中,我怎麼能將每個Contact擁有它自己的ContactInfo?我上面的失敗嘗試顯然沒有奏效。 – user2359626 2013-05-07 23:54:43

相關問題