' Visual Basic 2008 9.0 .NET Examples - Collections - Introduction - Object Oriented Programming : Class Person Private m_Name As String Public Property Name() As String Get Name = m_Name End Get Set(ByVal value As String) m_Name = value End Set End Property End Class Module Client1 Dim persons As Person() Dim personsCount As Integer Sub Main() Dim person1 As Person = New Person person1.Name = "John" ' Dim person2 As Person = New Person person2.Name = "Jane" ' Console.WriteLine(personsCount) ' AddPerson(person1) AddPerson(person2) ' Console.WriteLine(personsCount) ' Console.WriteLine(persons(1).Name) ' Console.ReadLine() End Sub Sub AddPerson(ByVal item As Person) ReDim Preserve persons(personsCount) persons(personsCount) = item personsCount += 1 End Sub End Module Class Persons Private m_Items As Person() Default Public ReadOnly Property Item(ByVal index As Integer) As Person Get ' (1) Item = m_Items(index) End Get End Property Private m_Count As Integer Public ReadOnly Property Count() As Integer Get Count = m_Count End Get End Property Public Sub Add(ByVal item As Person) ReDim Preserve m_Items(Count) m_Items(Count) = item m_Count += 1 End Sub End Class Module Client2 Sub Main() Dim person1 As Person = New Person person1.Name = "John" ' Dim person2 As Person = New Person person2.Name = "Jane" ' Dim persons1 As Persons = New Persons ' Console.WriteLine(persons1.Count) ' persons1.Add(person1) persons1.Add(person2) ' Console.WriteLine(persons1.Count) ' Console.WriteLine(persons1(1).Name) ' (2) Console.WriteLine(persons1.Item(1).Name) ' (3) ' Console.ReadLine() End Sub End Module Module Client3 Sub Main() Dim person1 As Person = New Person person1.Name = "John" ' Dim persons1 As Persons = New Persons persons1.Add(person1) End Sub End Module Class Rectangle Private m_Height As Integer Public Property Height() As Integer Get Height = m_Height End Get Set(ByVal value As Integer) m_Height = value End Set End Property Private m_Width As Integer Public Property Width() As Integer Get Width = m_Width End Get Set(ByVal value As Integer) m_Width = value End Set End Property Public Function GetArea() As Integer GetArea = Height * Width End Function End Class Class Rectangles Private m_Items As Rectangle() Default Public ReadOnly Property Item(ByVal index As Integer) As Rectangle Get Item = m_Items(index) End Get End Property Private m_Count As Integer Public ReadOnly Property Count() As Integer Get Count = m_Count End Get End Property Public Sub Add(ByVal rectangle As Rectangle) ReDim Preserve m_Items(Count) m_Items(Count) = rectangle m_Count += 1 End Sub Public Sub RemoveAt(ByVal index As Integer) For itemIndex As Integer = index To Count - 2 m_Items(itemIndex) = m_Items(itemIndex + 1) Next ReDim Preserve m_Items(Count - 2) m_Count -= 1 End Sub Public Function GetTotalArea() As Integer For Each item As Rectangle In m_Items GetTotalArea += item.GetArea() Next End Function End Class Module Exercise1Solution Sub Main() Dim rectangle1 As Rectangle = New Rectangle rectangle1.Height = 1 rectangle1.Width = 2 Console.WriteLine(rectangle1.GetArea()) ' Dim rectangle2 As Rectangle = New Rectangle rectangle2.Height = 3 rectangle2.Width = 4 Console.WriteLine(rectangle2.GetArea()) ' Dim rectangles1 As Rectangles = New Rectangles rectangles1.Add(rectangle1) rectangles1.Add(rectangle2) ' For index As Integer = 0 To rectangles1.Count - 1 Console.Write(rectangles1(index).GetArea() & " ") Next Console.WriteLine() Console.WriteLine(rectangles1.GetTotalArea()) ' rectangles1.RemoveAt(1) ' For index As Integer = 0 To rectangles1.Count - 1 Console.Write(rectangles1(index).GetArea() & " ") Next Console.WriteLine() Console.WriteLine(rectangles1.GetTotalArea()) ' Console.ReadLine() End Sub End Module ' Visit www.studyvb.com for more examples. Copyright 2003-2008 De Wolf.