2009-09-03 52 views
1

我需要設計一個簡單的軟件,我想知道最好做到這一點。面向對象設計和列表和集合(C#)

首先,對於新手問題感到抱歉:什麼是使用列表的最佳方式?我嘗試了幾次,沒有發現實現它們的正確方法,以及如何在OOP中使用它們。任何人都可以爲我清理它嗎?

第二個問題是:我有以下類(鬆散的格式,而不是代碼)

Tenement: 
tenementID Int32, 
polygons Polygon, (here i need to use a list, but how?) 
status TenementStatus; 

Polygon: 
polygonID Int32, 
vertexes vertex (need to use a list here too), 
areaPolygon; 

Vertex: 
vertexID Int32, 
X Int32, 
Y Int32; 

是我這些類的想法是否正確?有沒有更簡單的方法來做到這一點?

+0

頂點看起來可能是一個結構,而不是一類。 – 2009-09-03 21:01:42

回答

3

在C#中,你要使用List<T>類是列出了集合的工作。

例如:

public class Tenement 
{ 
    public Tenement() 
    { 
     this.Polygons = new List<Polygon>(); // Create the list here... 
    } 
    public int Id { get; set; } 
    public IList<Polygon> Polygons { get; private set; } 
    // ... 

編輯: 如果您需要控制項目如何添加或刪除,如檢查,以確保多邊形是有效的,你也可以這樣做:

public class Tenement 
{ 
    public Tenement() 
    { 
     this.polygons = new List<Polygon>(); // Create the list here... 
    } 
    private List<Polygon> polygons; 

    public int Id { get; set; } 
    public IEnumerable<Polygon> Polygons { 
     get { return this.polygons; } 
    } 
    public void AddPolygon(Polygon polygon) { 
     // Do extra stuff here, then: 
     this.polygons.Add(polygon); 
    } 
    // ... 
+0

你好裏德, 爲什麼我必須使用一個特定的私人設置?我不能使用普通設置嗎? 另外,我必須實例化時創建一個新的列表?我瞭解你的代碼,只是檢查「爲什麼」。 – 2009-09-03 20:58:07

+0

另外,我是否需要在我的課堂中添加/刪除元素到某個列表中的方法?例如:Tenement.AddPolygon(polygonObject)? 最簡單的方法是什麼?聽起來很簡單,創建一個添加/刪除。 – 2009-09-03 20:59:51

+0

@George:在這種情況下公開公開是一個壞主意,因爲我們不希望有人在我們班以外「設置」我們的多邊形。 THey仍然可以這樣做:myTenement.Polygons.Add(new Polygon()); ---這是因爲他們正在添加到您的現有列表中,而不是創建一個新列表。沒有理由製作「AddPolygon()」方法,因爲它們可以將它添加到列表中。 – 2009-09-03 21:08:59

1

那麼在C#中List只是一個數據結構,表示可以通過索引訪問的對象的集合。如果這句話是有道理的,那麼你幾乎可以理解你需要知道的關於列表的所有信息(至少對於這個例子來說)。如果不是,您可以先看看List(T) class的MSDN文檔。

例子:

// Declare a new list of vertices 
List<Vertex> vertices = new List<Vertex>(); 

// Add a couple of vertices 
vertices.Add(new Vertex(0, 0, 0)); 
vertices.Add(new Vertex(1, 100, 100)); 
vertices.Add(new Vertex(2, 50, 50)); 

// Get a vertex back out of the list by using its index 
Vertex temp = vertices[1]; // this is the second vertex we added above 
+0

謝謝,你只是回答了我的問題。 它可以這樣使用嗎? Polygon poly = new Polygon(); poly.Vertices.Add(new Vertex(0,0,0)); ? – 2009-09-03 21:01:37

+0

是的,只要'Polygon'類中的'Vertices'集合可以從你想要訪問的範圍中看到即可。 – Donut 2009-09-04 12:36:08

1

如果你正在尋找一個簡單的列表對象...

List<Vertex> vertices = new List<Vertex>(); 

List<TenementStatus> statuses = new List<TenementStatus>(); 

這對您需要的簡單聲明...