2010-09-16 48 views
0

有人能告訴我如何在c#中映射聚合和合成,考慮到兩個類STUDENT和LECTURER。c#中的UML映射

我的問題可能並不清楚。作爲一個例子,我使用VS類設計器來生成類之間的關聯關係。考慮2個類LECTURER和STUDENT_SOCIETY.Class Designer生成以下代碼。 大段引用

public class Lecturer 
{ 
    private string Name; 
    private string Specialization; 

    public StudentSociety StudentSociety 
    { 
     get 
     { 

     } 
     set 
     { 
     } 
    } 


} 

public class StudentSociety 
{ 
    private int Name; 
    private string NoOfMembers; 
} 

所以同樣的方式,我怎麼能聚合和組合

+1

問題仍然不清楚。你問的問題是:(1)UML模型對於組合/聚合會是什麼樣子? (2)如果建模的關係是組合/聚合,結果代碼將會是什麼樣子?或者是其他東西?如果是(2),請參閱下面的@ FixerMark的解決方案。 – sfinnie 2010-09-16 19:31:55

+0

由於它站在那裏,因爲StudentSociety是Lecturer外部的聚合關係,它包含一個動態分配Studentociety對象的工具。要將其改變爲複合關係,您需要使StudentSociety成員及其get/set函數保持私有,並且可以證明,將StudentSociety類作爲講師的子類。 (你也應該把它叫做StudentSociety以外的東西,以避免與同名類的混淆/衝突) – FixerMark 2010-09-16 19:46:25

+0

VS類設計者不是UML工具。它不支持聚合或組合。 – 2010-10-07 09:39:15

回答

1

通常構圖是永久性的,並通過在另一個類中完全包含一個類來表示,而聚合涉及某種分配或鏈接。

因此,假設講師負責一些學生組成的會是這樣的:

Public class Lecturer 
{ 
    public class Student 
    { 
     string mName = ""; 
... etc. 

而聚集可能是:

Public class Lecturer 
{ 
    ... Some code ... 
} 

Public class Lecturer 
{ 
    Student mStudent; 

    public void setStudent(Student theStudent) 
    { 
     mStudent = theStudent 
    } 

... etc. 

讓我知道如果我得到一個好標記爲你的作業...;)

+0

錯字 - 第一行彙總示例應該是公共班學生(不是講師)。否則回答良好。但是,從域的角度來看,我仍然質疑「包含」或聚合學生的講師的概念(上面的評論)。 – sfinnie 2010-09-16 19:27:57

+0

非常正確,它應該是學生 - 這會教我快速切割和粘貼。 – FixerMark 2010-09-16 19:29:51

1

需要更多的信息模型。你想把你的領域模型和映射到一個UML圖嗎?通常它會發生在另一個方面(圖先,然後生成模型作爲代碼對象)。 C#或「香草」Visual Studio沒有內置任何內容來執行此操作;但是,MS Visio(「專業」級辦公室安裝的一部分)可以從圖表轉到代碼並返回,並與VS集成來執行此操作。最後,我與Visio一起工作,它不是「純粹的」UML;圖表符號借鑑了圖表方案的組合。但是,它會爲您提供可讀的模型圖形表示,並且可以將其作爲代碼對象重新發射。

就實際確定它們之間的關係而言,它通常是多對多的,可用的一對多關係的統一上下文是「課程」的「類」或「部分」,或者「學科」。單個課程有很多部分。每個部分有一位講師和許多學生。同一個學生可以參加多個部分,同一位老師可以教授多個部分。這意味着講師和學生都可以列出他們教授/參加的部分(如果您需要一個「雙向」領域模型,您可以圍繞對象圖的任何方向進行導航)。

+0

Visual Studio可以從代碼生成類圖。它們與UML靜態圖相似。 – 2010-09-16 18:37:37

+0

同意@Keith。你沒有提到你想要捕捉的關係的性質 - 這是非常重要的。假設它符合'講師教學生'這一思路:(1)通常很多:很多(有一些中介)等等(2)聚合/構成通常對這種類型的關係沒有用處。 – sfinnie 2010-09-16 18:58:40

+0

感謝您的回覆PLZ請參閱編輯 – chamara 2010-09-16 19:03:15