Definirea unei clase de obiecte VB.NET

Clasa de obiecte este o reprezentare abstracta a unei entitati. Obiectul reprezinta o manifestare concreta a unei clase. Obiectul este structura care contine date si metode de manipulare a datelor.
Un obiect contine date prin intermediul campurilor si proprietatilor:

  •  campul: stocheaza date si este similar unei variabile;
  • proprietatea: extrage si modifica valoarea unui camp prin proceduri Get si Set; astfel, datele sunt izolate, iar valorile din campuri sunt validate.

Un obiect contine si metode prin care sunt implementate actiuni. Metodele unui obiect iau forma procedurilor.
O actiune recunoscuta de de un obiect poarta denumirea de eveniment […].
O clasa de obiecte poate implementa interfete in toate aspectele definite in acestea. Interfata reprezinta o colectie de elemente de programare si nu contine partea de implementare.
Tipuri de clase de obiecte in functie de sursa definirii:

  • incluse in VB.NET;
  • construite in alte aplicatii;
  • construite sau modificate de catre dezvoltator in cadrul aplicatiei.

Clasa de obiecte se comporta ca un tip de date, iar utilizatorul poate defini variabile de acest tip. Variabilele se numesc obiecte, continand date si actiuni.

Ca exemplu, se considera clasa de obiecte Task, avand urmatoarele campuri:

  • cDenTask: denumire task;
  • cTipTask: categorie task;
  • cResTask: nume responsabil task;
  • cPrioTask: categorie prioritate task.

Campurile cDenTask, cTipTask si cResTask sunt definite cu tipul String, iar campul cPrioTask este de tip Boolean.

Toate campurile sunt definite cu modificatorul de acces Private […], ceea ce inseamna ca accesul este restrictionat la codul sursa dezvoltat in cadrul clasei. Accesarea si modificarea valorilor campurilor sunt realizate prin proprietatile DenTask, TipTask, ResTask si PrioTask.

Public Class Task
   
    'Campuri
    Private cDenTask As String
    Private cTipTask As String
    Private cResTask As String
    Private cPrioTask As Boolean

   'Proprietati clasa Task

   'proprietate camp cDenTask
    Public Property DenTask()
        Get
            Return cDenTask
        End Get
        Set(ByVal value)
            cDenTask = value
        End Set
    End Property

   'proprietate camp cTipTask
    Public Property TipTask()
        Get
            Return cTipTask
        End Get
        Set(ByVal value)
            cTipTask = value
        End Set
    End Property

    'proprietatea camp cResTask
    Public Property ResTask()
        Get
            Return cResTask
        End Get
        Set(ByVal value)
            cResTask = value
        End Set
    End Property

    'proprietate camp cPrioTask
    Public Property PrioTask()
        Get
            Return cPrioTask
        End Get
        Set(ByVal value)
            cPrioTask = value
        End Set
    End Property

    'metoda clasa de obiecte Task
    Public Function ModificaPrioritate(ByVal prioNou As Boolean) As String
        cPrioTask = prioNou
        Dim res As String
        res = "A fost modificata prioritatea task-ului pe valoarea " &_
cPrioTask & " !"
        Return res
    End Function

    ' exemplu de constructor fara parametri
    Public Sub New()
        cDenTask = "Task Nou"
        cTipTask = "Tip Task Nou"
        cResTask = "Responsabil Task Nou"
        cPrioTask = False
    End Sub

    'supraincarcare constructor - varianta constructor cu parametri
    Public Sub New(ByVal denT As String, ByVal tipT As String, _
ByVal resT As String, ByVal prioT As Boolean)
        cDenTask = denT
        cTipTask = tipT
        cResTask = resT
        cPrioTask = prioT
    End Sub
End Class

Pe langa campuri si proprietati, clasa de obiecte Task definita mai sus contine o metoda denumita ModificaPrioritate construita ca o procedura de tip Function si doua metode constructor supraincarcate.

Metoda constructor este una speciala, fiind implementata prin procedura Sub New. Codul din metoda constructor se executa inaintea restului de cod definit in clasa de obiecte. Metoda constructor este apelata la crearea obiectului.

Cand nu mai sunt utilizate, obiectele sunt distruse prin sistemul reference-tracing garbage collection. Distrugerea obiectelor se face pe baza metodei speciale denumita destructor si implementata prin procedura Sub Finalize. Spre deosebire de metoda constructor, destructorul nu trebuie apelat explicit, sistemul ocupandu-se de apelarea automata a destructorului.