Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Data
Imports System.Configuration
Imports System.Resources
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.IO
Imports System.Drawing.Printing
Module Module1
Sub Main()
Using objCar As New SportsCar
'Set the horsepower and weight(kg)
objCar.HorsePower = 240
objCar.Weight = 1085
'Display the details of the car
DisplayCarDetails(objCar)
DisplaySportsCarDetails(objCar)
End Using
'Wait for input from the user
Console.ReadLine()
End Sub
'DisplayCarDetails - procedure that displays a car's details
Sub DisplayCarDetails(ByVal theCar As Car)
'Display the details of the car
Console.WriteLine("Color: " & theCar.Color)
Console.WriteLine("Number of doors: " & theCar.NumberOfDoors)
Console.WriteLine("Current speed: " & theCar.Speed)
Console.WriteLine("Acceleration rate: " & _
theCar.CalculateAccelerationRate)
End Sub
'DisplaySportsCarDetails - procedure that displays a sports car's details
Sub DisplaySportsCarDetails(ByVal theCar As SportsCar)
'Display the details of the sports car
Console.WriteLine()
Console.WriteLine("Sports Car Horsepower: " & theCar.HorsePower)
Console.WriteLine("Sports Car Weight: " & theCar.Weight)
Console.WriteLine("Power to Weight Ratio: " & theCar.GetPowerToWeightRatio)
End Sub
End Module
Public Class Car
Implements IDisposable
Public Color As String
Public HorsePower As Integer
Private _speed As Integer
Private _numberOfDoors As Integer
Public ReadOnly Property Speed() As Integer
Get
Return _speed
End Get
End Property
Public Sub Accelerate(ByVal accelerateBy As Integer)
_speed += accelerateBy
End Sub
Public Property NumberOfDoors() As Integer
Get
Return _numberOfDoors
End Get
Set(ByVal value As Integer)
If value >= 2 And value <= 5 Then
_numberOfDoors = value
End If
End Set
End Property
Public Function IsMoving() As Boolean
If Speed = 0 Then
Return False
Else
Return True
End If
End Function
Public Sub New()
Color = "White"
_speed = 0
_numberOfDoors = 5
End Sub
Public Overridable Function CalculateAccelerationRate() As Double
Return 4.2
End Function
Private disposed As Boolean = False
' IDisposable
Private Overloads Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposed Then
If disposing Then
' TODO: put code to dispose managed resources
End If
' TODO: put code to free unmanaged resources here
End If
Me.disposed = True
End Sub
#Region " IDisposable Support "
' This code added by Visual Basic to correctly implement the disposable pattern.
Public Overloads Sub Dispose() Implements IDisposable.Dispose
' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Protected Overrides Sub Finalize()
' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
Dispose(False)
MyBase.Finalize()
End Sub
#End Region
End Class
Public Class SportsCar
Inherits Car
Public Weight As Integer
Public Function GetPowerToWeightRatio() As Double
Return CType(HorsePower, Double) / CType(Weight, Double)
End Function
Public Sub New()
'Change the default values
Color = "Green"
NumberOfDoors = 2
End Sub
Public Overrides Function CalculateAccelerationRate() As Double
'You'll assume the same 4.2 value, but you'll multiply it
'by the power/weight ratio
Return 4.2 * GetPowerToWeightRatio()
End Function
End Class