Overview


This is an OOP Metric Unit Converter application. There are five types of converter, which are selected via a ComboBox, and the Properties are edited and displayed via a PropertyGrid Control.



The five converters

  • Distance
  • Area
  • Volume
  • Mass
  • Time
Each of these converter Classes implements the Converter Interface, which allows a Property of type Converter to hold an instance of any of the five Classes. The Converter Interface doesn't contain any Methods or Properties, as the five Class types don't contain any common Methods or Properties, but using the Interface allows substitution.

This is the custom ListItem Class used to add a new instance of each of the Classes to the ComboBox.

Imports Unit_Converter
 
Public Class ListItem
 
    Public Sub New(classObject As Converter)
        _ClassObject = classObject
    End Sub
 
    Private _ClassObject As Converter
    Public Property ClassObject As Converter
        Get
            Return _ClassObject
        End Get
        Set(value As Converter)
            _ClassObject = value
        End Set
    End Property
 
    Public Overrides Function ToString() As String
        Return _ClassObject.GetType().Name
    End Function
 
End Class

The Distance Class


This class contains five Properties.
  • miles
  • km
  • m
  • cm
  • mm
When any of these Properties is edited in the PropertyGrid Control, the other Property values are calculated in the calculateFromMetres Sub-procedure...

Private Sub calculateFromMetres(m As Decimal)
    _miles = CDec(m / 1609.34)
    _km = m / 1000
    _m = m
    _cm = m * 100
    _mm = m * 1000
End Sub




The Area Class


This class contains five Properties.
  • kmSquared
  • hectares
  • mSquared
  • cmSquared
  • mmSquared

Again when any of these Properties is edited in the PropertyGrid Control, the other Property values are calculated, this time in the calculateFromMetresSquared Sub-procedure...

Private Sub calculateFromMetresSquared(ms As Decimal)
    _kmSquared = ms / 1000000
    _hectares = ms / 10000
    _mSquared = ms
    _cmSquared = ms * 10000
    _mmSquared = ms * 1000000
End Sub



The Volume Class


This class contains five Properties...
  • mCubed
  • litres
  • cl
  • cmCubed
  • mmCubed

In the familiar style of this application, when any of these Properties is edited in the PropertyGrid Control, the other Property values are calculated, this time in the calculateFromLitres Sub-procedure...

Private Sub calculateFromLitres(ltrs As Decimal)
    _mCubed = ltrs / 1000
    _litres = ltrs
    _cl = ltrs * 100
    _cmCubed = ltrs * 1000
    _mmCubed = ltrs * 1000000
End Sub



The Mass Class


This class contains eight Properties...
  • tonnes
  • kg
  • hg
  • dag
  • g
  • dg
  • cg
  • mg
When any of these Properties is edited in the PropertyGrid Control, the other Property values are calculated, this time in the calculateFromGrams Sub-procedure...

Private Sub calculateFromGrams(g As Decimal)
    _tonnes = g / 1000000
    _kg = g / 1000
    _hg = g / 100
    _dag = g / 10
    _g = g
    _dg = g * 10
    _cg = g * 100
    _mg = g * 1000
End Sub



The Time Class


The final Converter Class also has eight Properties...
  • weeks
  • days
  • hours
  • minutes
  • seconds
  • milliseconds
  • microseconds
  • nanoseconds
The calculator Method in this Class is the calculateFromSeconds Sub-procedure...

Private Sub calculateFromSeconds(s As Decimal)
    _weeks = s / (7 * 24 * 60 * 60)
    _days = s / (24 * 60 * 60)
    _hours = s / (60 * 60)
    _minutes = s / 60
    _seconds = s
    _milliseconds = s * 1000
    _microseconds = s * 1000000
    _nanoseconds = s * 1000000000
End Sub



Conclusion


Using appropriate Controls in your applications, you're able to create compact, user friendly programs. Using minimal application memory resources, makes applications that load faster, and run faster. A combination of OOP techniques and minimal Control usage makes programs that can be easily understood by other programmers who might have occasion to update your program. Programs that are easily read are a must in a working environment.




Download


Download here...