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