Attribute VB_Name = "Ch3" Type Point x As Double y As Double End Type Sub ch3_4_ex() Dim L1 As New Line1 L1.refPointX = 1 L1.refPointY = 2 L1.slope = 1 MsgBox "c = " & L1.getYIntercept MsgBox "Equation: " & L1.getEquation End Sub Sub ch3_5_ex() Dim p1 As Point With p1 .x = 1 .y = 2 End With Dim L1 As New Line2 L1.mRefPointX = p1 L1.slope = 3 MsgBox L1.slope End Sub Sub ch3_5_ex2() Dim p1 As Point With p1 .x = 1 .y = 2 End With Dim L1 As New Line3 L1.refPoint = p1 L1.slope = 1 MsgBox "c = " & L1.getYIntercept MsgBox "Equation: " & L1.getEquation End Sub Sub ch3_10_ex1() Dim aLine As Line, aQuadraticCurve As QuadraticCurve Dim aPoint As Point Dim aCurve(3) As Curve 'data entry Set aLine = New Line aPoint.x = 1 aPoint.y = 2 aLine.initialize aPoint, 1 Set aCurve(0) = aLine Set aLine = New Line aPoint.x = 2 aPoint.y = 3 aLine.initialize aPoint, 4 Set aCurve(1) = aLine Set aQuadraticCurve = New QuadraticCurve aQuadraticCurve.initialize 1, 2, 1 Set aCurve(2) = aQuadraticCurve Set aQuadraticCurve = New QuadraticCurve aQuadraticCurve.initialize 2, 5, 2 Set aCurve(3) = aQuadraticCurve Dim i As Integer, str As String For i = 0 To 3 str = "Equation of Curve " & i + 1 & ": " & aCurve(i).getEquation 'notice Polymorphism str = str & vbCrLf & "Y-intercept: " & aCurve(i).getYIntercept If TypeOf aCurve(i) Is QuadraticCurve Then 'notice the use of TypeOf...Is to check type Set aQuadraticCurve = aCurve(i) str = str & vbCrLf & "Extreme point: (" & aQuadraticCurve.getExtremePoint.x & _ ", " & aQuadraticCurve.getExtremePoint.y & ")" End If MsgBox str Next i End Sub Sub ch3_10_ex2() Randomize 'initialize two stocks Dim s1 As New ContDivStock Dim s2 As New DiscDivStock s1.initialize "Stock 1", 100, 0.4, 0.03, 0.02, 0.03 s2.initialize "Stock 2", 100, 0.4, 0.03, 0.02, 2 'select stock 1 or stock 2 Dim choice As Integer choice = InputBox("Select a stock:") Dim s As Stock If choice = 1 Then Set s = s1 ElseIf choice = 2 Then Set s = s2 Else MsgBox "Invalid Choice!" Exit Sub End If 'advance 100 days s.advance 100 'pay dividend If TypeOf s Is ContDivStock Then Dim tempStockC As ContDivStock Set tempStockC = s tempStockC.payDividend ElseIf TypeOf s Is DiscDivStock Then Dim tempStockD As DiscDivStock Set tempStockD = s tempStockD.payDividend End If 'show percentage gain MsgBox "The percentage gain for " & s.stockName & ": " & Round(s.percentGain * 100, 2) & "%" End Sub Sub ch3_11_ex() Dim aLine As Line, aQuadraticCurve As QuadraticCurve Dim aPoint As Point Dim aCurve As New Collection 'data entry Set aLine = New Line aPoint.x = 1 aPoint.y = 2 aLine.initialize aPoint, 1 aCurve.Add aLine Set aLine = New Line aPoint.x = 2 aPoint.y = 3 aLine.initialize aPoint, 4 aCurve.Add aLine Set aQuadraticCurve = New QuadraticCurve aQuadraticCurve.initialize 1, 2, 1 aCurve.Add aQuadraticCurve Set aQuadraticCurve = New QuadraticCurve aQuadraticCurve.initialize 2, 5, 2 aCurve.Add aQuadraticCurve Dim i As Integer, str As String For i = 1 To 4 str = "Equation of Curve " & i & ": " & aCurve(i).getEquation 'notice Polymorphism str = str & vbCrLf & "Y-intercept: " & aCurve(i).getYIntercept If TypeOf aCurve(i) Is QuadraticCurve Then 'notice the use of TypeOf...Is to check type Set aQuadraticCurve = aCurve(i) str = str & vbCrLf & "Extreme point: (" & aQuadraticCurve.getExtremePoint.x & _ ", " & aQuadraticCurve.getExtremePoint.y & ")" End If MsgBox str Next i End Sub