Option Strict On Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call End Sub 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub Friend WithEvents Button1 As System.Windows.Forms.Button Friend WithEvents Button2 As System.Windows.Forms.Button 'Required by the Windows Form Designer Private components As System.ComponentModel.Container 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Private Sub InitializeComponent() Me.Button1 = New System.Windows.Forms.Button() Me.Button2 = New System.Windows.Forms.Button() Me.SuspendLayout() ' 'Button1 ' Me.Button1.Font = New System.Drawing.Font("Verdana", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Button1.Location = New System.Drawing.Point(32, 24) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(232, 32) Me.Button1.TabIndex = 0 Me.Button1.Text = "Set up Individual Shapes" ' 'Button2 ' Me.Button2.Font = New System.Drawing.Font("Verdana", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Button2.Location = New System.Drawing.Point(32, 80) Me.Button2.Name = "Button2" Me.Button2.Size = New System.Drawing.Size(232, 32) Me.Button2.TabIndex = 0 Me.Button2.Text = "Set up Array of Shapes" ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(292, 141) Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button2, Me.Button1}) Me.Name = "Form1" Me.Text = "Shapes Class Test Form" Me.ResumeLayout(False) End Sub #End Region Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim shape1 As New Triangle() Dim shape2 As New Circle(4) Dim shape3 As New Square(10.01) ' SET UP TRIANGLE shape1.SideA = 3 shape1.SideB = 3.2 shape1.SideC = 0.94 Dim msg As String msg = "The triangle’s area is " & shape1.Area msg = msg & vbCrLf & "The circle’s area is " & shape2.Area msg = msg & vbCrLf & "The square’s area is " & shape3.Area MsgBox(msg) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim aList As New ArrayList() aList.Add(New Triangle(3, 3.2, 0.94)) aList.Add(New Square(10.01)) aList.Add(New Circle(4)) Dim shapeEnum As IEnumerator Dim totalArea As Double shapeEnum = aList.GetEnumerator While shapeEnum.MoveNext ' If OPTION STRICT = OFF, then the following statement can be written ' without explicit casting: ' totalArea = totalArea + shapeEnum.Current.Area totalArea = totalArea + CType(shapeEnum.Current, Shape).Area End While MsgBox("The total area of the three shapes is " & totalArea) End Sub End Class