Index  -  Omat luokat - New - Get ja Set - Metodit - Perintä -Override - Implements

IComparable - ICloneable - IDisposable

Implements


Implements ilmaisee että luokka toteuttaa jonkun määritellyn rajapinnan ominaisuudet. Tyypilleiset rajapinnat tavallisille luokille ovat:
      
        Implements System.ICloneable  ' kloonattavuus
        Implements System.IComparable ' akkostettavuus
        Implements System.IDisposable ' tyhjättävyys

Kun luokka toteuttaa jonkun rajapinnan, saadaan vb.net:ssä sisäänrakennettuja toimintoja käyttöön, esimerkiksi  IComparable tuo tullessaan taulukon aakkostettavuuden.

1) Lisätään luokan yhteyteen tieto että toteuttaa rajapintaa

    Public Class Huonekalu
        Implements System.IComparable

2) Tehdään luokan sisälle rajapintamäärittelyn mukainen toiminto, tässä esimerkissä Huonekalut sortataan "Lajin" mukaan.

        ' Tämä funktio tekee olioista sortattavia (aakkostus)
        Public Function CompareTo(ByVal Objekti As Object) As Integer Implements System.IComparable.CompareTo
            If Not TypeOf Objekti Is Huonekalu Then ' väärää tyyppiä verrataan
                Throw New ArgumentException("Olio ei ole tyyppiä Huonekalu")
            End If
            Dim verrokki As Huonekalu = CType(Objekti, Huonekalu)
            Dim vertailuTulos As Integer = Me.Laji.CompareTo(verrokki.Laji)
            Return vertailuTulos
        End Function

Näin sitä käytetään:

        'aakkostus esimerkki
        Dim Kalusto(2) As Huonekalu
        Kalusto(0) = New Huonekalu : Kalusto(0).Laji = "Pöytä"
        Kalusto(1) = New Huonekalu : Kalusto(1).Laji = "Jakkara"
        Kalusto(2) = New Huonekalu : Kalusto(2).Laji = "Soffa"
        Array.Sort(Kalusto)
        Dim i As Integer : TextBox1.Text = ""
        For i = 0 To 2
            TextBox1.Text = TextBox1.Text & i.ToString & "  " & Kalusto(i).Laji & vbNewLine
        Next

Tähän vielä koko demo:

 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
    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer
    '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.
    Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
     Private Sub InitializeComponent()
        Me.TextBox1 = New System.Windows.Forms.TextBox
        Me.SuspendLayout()
        '
        'TextBox1
        '
        Me.TextBox1.Location = New System.Drawing.Point(32, 24)
        Me.TextBox1.Multiline = True
        Me.TextBox1.Name = "TextBox1"
        Me.TextBox1.Size = New System.Drawing.Size(216, 152)
        Me.TextBox1.TabIndex = 0
        Me.TextBox1.Text = "TextBox1"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Controls.Add(Me.TextBox1)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)
    End Sub
 #End Region
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Pöytä As Huonekalu = New Huonekalu
        Pöytä.Laji = "Ruokapöytä"
        Pöytä.Tyyli = "Talonpoikais"
        Pöytä.Ostohinta = 389.0F
        Pöytä.ValmVuosi = #1/7/1889#
        Dim ikä As Integer = Pöytä.ikä
        Dim Myyntihinta As Single = Pöytä.LaskeMyyntihinta(40.0F) 'kate pros = 40%
        Dim Tuoli2 As Tuoli = New Tuoli
        Tuoli2.Laji = "Nojatuoli"
        Tuoli2.Ostohinta = 123.5F
        Myyntihinta = Tuoli2.LaskeMyyntihinta(50)
        Tuoli2.Päällyste = "Nahka"
        Tuoli2.Väri = "Ruskea"
        'haetaan rekisteröinti pvm, joka on tehnyt "huonekalu" luokassa
        Dim pvm As Date = Tuoli2._RekisteröintiPVM
        'aakkostus esimerkki
        Dim Kalusto(2) As Huonekalu
        Kalusto(0) = New Huonekalu : Kalusto(0).Laji = "Pöytä"
        Kalusto(1) = New Huonekalu : Kalusto(1).Laji = "Jakkara"
        Kalusto(2) = New Huonekalu : Kalusto(2).Laji = "Soffa"
        Array.Sort(Kalusto)
        Dim i As Integer : TextBox1.Text = ""
        For i = 0 To 2
            TextBox1.Text = TextBox1.Text & i.ToString & "  " & Kalusto(i).Laji & vbNewLine
        Next
    End Sub
    '
    Public Class Tuoli
        Inherits Huonekalu ' perintä luokasta Huonekalu
        Private _Päällyste As String
        Private _PäällysteenVäri As String
        Sub New()
            MyBase.New() ' kutsutaan luokan huonekalu luontia
        End Sub
        Overrides Property Väri() As String    ' uusi lisättävä ominaisuus
            Get
                Return _PäällysteenVäri
            End Get
            Set(ByVal Value As String)
                _PäällysteenVäri = Value
            End Set
        End Property
        Property Päällyste() As String ' uusi lisättävä ominaisuus
            Get
                Return _Päällyste
            End Get
            Set(ByVal Value As String)
                _Päällyste = Value
            End Set
        End Property
    End Class
    '
    Public Class Huonekalu
        Implements System.IComparable
        Private _Laji As String
        Private _Tyyli As String
        Private _Ostohinta As Single
        Private _ValmVuosi As Date
        Private _Väri As String
        Public ReadOnly _RekisteröintiPVM As Date
        Sub New() ' new ajetaan aina kun objekti tehdään
            _RekisteröintiPVM = Now
        End Sub
        Public Function LaskeMyyntihinta(ByVal katepros As Single) As Single
            Return _Ostohinta / (1 - katepros / 100.0F) * 1.22F
        End Function
        Overridable Property Väri() As String
            Get
                Return _Väri
            End Get
            Set(ByVal Value As String)
                _Väri = Value
            End Set
        End Property
        Property Laji() As String
            Get
                Return _Laji
            End Get
            Set(ByVal Value As String)
                _Laji = Value
            End Set
        End Property
        Property Tyyli() As String
            Get
                Return _Tyyli
            End Get
            Set(ByVal Value As String)
                _Tyyli = Value
            End Set
        End Property
        Property Ostohinta() As Single
            Get
                Return _Ostohinta
            End Get
            Set(ByVal Value As Single)
                _Ostohinta = Value
            End Set
        End Property
        Property ValmVuosi() As Date
            Get
                Return _ValmVuosi
            End Get
            Set(ByVal Value As Date)
                _ValmVuosi = Value
            End Set
        End Property
        ReadOnly Property ikä() As Integer
            Get
                ikä = Now.Year - _ValmVuosi.Year
            End Get
            ' set puuttuu koska vain luettava ominaisuus
        End Property
        ' Tämä funktio tekee olioista sortattavia (aakkostus)
        Public Function CompareTo(ByVal Objekti As Object) As Integer Implements System.IComparable.CompareTo
            If Not TypeOf Objekti Is Huonekalu Then ' väärää tyyppiä verrataan
                Throw New ArgumentException("Olio ei ole tyyppiä Huonekalu")
            End If
            Dim verrokki As Huonekalu = CType(Objekti, Huonekalu)
            Dim vertailuTulos As Integer = Me.Laji.CompareTo(verrokki.Laji)
            Return vertailuTulos
        End Function
    End Class
 End Class