Sunteți pe pagina 1din 13

C6 Definirea i utilizarea claselor n VB.

NET
1) Ce este i ce nu este o clas n VB.NET?

-este: un model, un ablon, un tipar, o descriere a mai multor obiecte


asemntoare

-nu este: o colecie (mulime) de obiecte

2) Unde pot fi definite clasele n VB.NET i cum se procedeaz?

-n fiiere clas; n cadrul unui fiier declaraia clasei este posibil numai la
nivel fiier sau la nivel clas; un fiier surs poate conine mai multe clase

-din Project se selecteaz Add class, n fereastra Add New Item, se


selecteaz Class se specific numele i n final se acioneaz butonul Add

3) Care este sintaxa de definire a unei clase n VB.NET?

[acces][MustInherit/NotInheritable][Partial] Class numeClasa

[Inherits numeClasaBaza]

[Implements numeInterfata]

[Instructiuni]

End Class

Unde:

-acces precizeaz nivelul de acces (de protecie) al clasei: Public,


Protected, Friend, Private, ProtectedFriend

- MustInherit indic o clas abstract

- NotInheritable clasa nu poate fi derivabil

- Partial clas definit incomplet

- Inherits precizeaz clasa de baz de la care se motenesc atributele i


metodele
- Implements clasa implementeaz o interfa (o clas abstract pur,
fr atribute i cu metodele definite doar prin semntur (numele metodei
i parametrii), fr corp)

- Instructiuni definesc membrii clasei (atributele i metodele)

4) Cum se definesc atributele (proprietile sau cmpurile) unei clase


n VN.NET?

Sub forma unor variabile, dup sintaxa:

[acces] [Shared][ReadOnly] Dim ListaAtribute

Unde:

-acces precizeaz nivelul de acces (de protecie) al atributelor: Public,


Protected, Friend, Private, ProtectedFriend; Pentru a se implementa
ncapsularea la nivelul clasei atributele trebuie s fie invizibile din
exterior, deci vor fi declarate cu Private. Accesarea atributelor protejate se
va putea face din exterior doar indirect prin intermediul metodelor de tip
selector (pentru citire) i a metodelor de tip modificator (pentru scriere)

- Shared indic un atribut de nivel clas (static) nu instan, care este


utlizat (partajat) la nivelul clasei nu la nivelul unui obiect

- ReadOnly semnific un atribut a crui valoare poate fi setat


(modificat) numai la definirea sa sau n cadrul constructorului clasei (la
instanierea unui obiect)

-Dim este echivalent cu Private (dac utilizm un calificator de acces nu


vom mai utiliza Dim)

- ListaAtribute lista cu atributele definite (denumirea atributelor


ncapsulate este de preferat s fie precedate de m_)

5) Cum sunt referite (accesate, utilizate) atributele unui obiect?

-atributele de nivel instan: numeObiect.numeAtribut

-atributele de nivel clas: numeClasa.numeAtribut


6) Ce sunt (ce reprezint) selectorii i modificatorii n VB.NET cum se
mai numesc i cum se definesc?

- reprezint: metodele specifice unei clase destinate redrii (citirii) valorilor


unor atribute protejate selectorii i actualizrii (scrierii/setrii) valorilor
unor atribute protejate modificatorii; asigur accesul controlat asupra
datelor stocate n atribute; ofer posibilitatea definirii unor reguli (condiii)
de validare a datelor la scriere

- se mai numesc i proprieti (property) cu dou seciuni: Get pentru


selector (citire); Set pentru modificator (scriere)

-sintaxa:

[acces][ReadOnly/WriteOnly] Property nume ([Lista parametrii]) [As _


tipRezultat]

[acces] Get

[instructiuni]

End Get

[acces] Set (ByVal nouaValoare As tipDate [, listaParametrii])

[instructiuni]

End Set

End Property

Unde:

-acces precizeaz nivelul de acces (de protecie) al atributelor: Public,


Protected, Friend, Private, ProtectedFriend

- ReadOnly proprietatea poate fi numai citit

- WriteOnly proprietatea poate fi numai scris

- nouaValoare este valoarea care va fi atribuit proprietii protejate


- listaParametrii parametrii necesari la atribuire

- tipRezultat tipul rezultatului furnizat la citire (este de acelai tip cu tipul


parametrului nouaValoare)

7) Ce sunt metodele n VB.NET i cum se definesc?

-sunt proceduri sau funcii ncorporate n clase care programeaz


comportamentul dinamic al obiectelor instaniate din clasa respectiv; o
metod poate accesa orice atribut i poate apela orice alt metod a clasei
indiferent de calificatorul de acces al acesteia; variabilele i constantele
declarate la nivelul unei metode sunt valabile (accesibile, vizibile) numai n
interiorul acesteia

-metodele se definesc prin sintaxa:

[acces][modificator][Shared] Sub/Function numeMetoda ([listaParam]) _


[Implements MetodeImplementate / Handles listaEvenimente]

[instruciuni1]

[Exit Sub/Function]

[instruciuni2]

End Sub/Function

Unde:

- acces precizeaz nivelul de acces (de protecie) al metodelor: Public,


Protected, Friend, Private, ProtectedFriend

-modificator descrie o caracteristic a metodei i poate lua valorile:

Overloads indic o metod suprancrcat (o metod care are aceeai


denumire cu o alt metod din clas, dar conine un numr diferit de
parametrii). Clauza este opional, deoarece orice metod n VB.NET
poate fi suprancrcat

Overrides (ntr-o clas derivat) precizeaz o metod ce rescrie o


metod cu aceeai denumire din clasa de baz. Dei este o clauz
implicit, deoarece orice metod n VB.NET poate fi rescris, clauza este
bine s fie utilizat

Overridable (ntr-o clas de baz) indic o metod ce poate fi rescris n


clasele derivate. Dac se permite rescrierea n clasele derivate atunci
clauza este obligatorie (nu implicit)

NotOverridable (ntr-o clas de baz) indic o metod ce NU poate fi


rescris n clasele derivate. Clauza este implicit, adic, dac nu se
precizeaz explicit prin Overridable c o metod poate fi rescris atunci
automat (implicit) ea nu poate fi rescris, chiar dac nu se precizeaz n
mod expres aceasta prin NotOverridable

MustOverride - (ntr-o clas de baz) definete o metod ce nu este


implementat n clasa curent i care trebuie rescris n clasele derivate
pentru a putea fi utilizat. Clasa ce conine cel puin o metod de acest tip
(adic o metod neimplementat fr corp) se numete clas abstract

Shared definete o metod care se aplic (se utilizeaz) la nivel de clas


nu de instan

listParametrii conine dac este cazul, lista parametrilor de care metoda


are nevoie pentru execuie. Dac un parametru va fi precedat de cuvntul
rezervat Optional atunci acesta este opional i cnd nu este precizat la
apel se va folosi o valoare implicit definit pentru el

metodeImplementate descrie toate metodele altei clase implementate de


metod (interfa sau clas abstract pur)

listEvenimente conine un set de evenimente, la a cror apariie metoda


este executat automat

8) Cum sunt referite (accesate, utilizate) metodele unui obiect?

-metodele de nivel instan: numeObiect.numeMetod

-metodele de nivel clas: numeClasa.numeMetod


9) Ce este motenirea n VN.NET, ce fel de motenire accept i cum
este implementat?

-o caracteristic a clasei derivate (secundare/copil) de a moteni toate


atributele (proprietile) i metodele clasei de baz (supraclas/printe);
singurele elemente care nu se motenesc sunt constructorii

-n VB.NET se accept doar motenirea simpl (adic o clas derivat


motenete doar caracteristicile unei singure clas de baz clasa copil
motenete doar un printe)

-se implementeaz prin comanda: Inherits numeClasDeBaz


care trebuie s fie prima linie din clasa derivat

10) Ce sunt constructorii n VB.NET cum sunt implementai?

-un constructor este o procedur cu numele New care este invocat i


utilizat la instanierea unei clase (la creearea unui obiect)

-o clas VB.NET poate avea zero sau mai muli constructori; dac
programatorul nu definete nici un constructor atunci compilatorul va
genera unul implicit

-o instaniere a clasei derivate (copil) trebuie s conin o instaniere a


clasei de baz (printe) de aceea prima linie din constructorul clasei
derivate, trebuie s fie: MyBase.New ([listParametrii]) care va instania
clasa de baz (MyBase refer clasa de baz; Me refer obiectul curent
(inana curent))

11) Cum pot fi accesai mai comod membrii (atributele i metodele)


unui obiect?

-prin utilizarea structurii With End With care permite n interiorul structurii
n loc s folosim: numeObiect.numeMetod sau numeObiect.numeAtribut
s folosim .numeMetod sau .numeAtribut

Ex:

With numeObiect
.atribut1

.atribut2

.metoda1

.metoda2

End With

Este echivalent cu:

numeObiect.atribut1

numeObiect.atribut2

numeObiect.metoda1

numeObiect.metoda2

Exemplu:

S considerm urmtoarea ierarhie de clase


n care cu elipse au fost simbolizate clasele abstracte iar cu dreptunghiuri
clasele concrete.

Vom defini la nivelul claselor urmtorii membrii:

Clasa Animal:

- proprieti:

- greutate: privat, real simpl precizie

- culoare: privat, ir de caractere

- metode:

- respira: concret

- dorm: concret

-mananca: abstract

Clasa Feline:

- proprieti:

-ghiareCuPernute: privat, sir de caractere

- metode:

- vaneaz: abstract

- sefuriseaza: concret

Clasa Canine:

- proprieti:

-ghiareFaraPernute: privat, sir de caractere

- metode:

- Vaneaz: abstract
- SeStrangInHaita: concret

Clasa Hipopotam:

- proprieti:

-copita:privat, sir de caractere

- metode:

- mananca: concret

- SeBalaceste: concret

Clasa Pisica:

- proprieti:

- metode:

- mananca: concret

- vaneaza: concret

- toarce: concret

Clasa Lup:

- proprieti:

- metode:

- vaneaza: concret

- urla: concret

Implementarea parial ar presupune:


'definirea unei clase abstracte de baza

Public MustInherit Class Animal


'definirea atributelor (proprietatilor) locale
Private m_greutate As Single
Private m_culoare As String
'utilizarea selectorilor si modificatorilor
Public Property greutate() As Single
'citire
Get
greutate = m_greutate
End Get
'scriere
Set(ByVal nouaGreutate As Single)
m_greutate = nouaGreutate
End Set
End Property
Public Property culoare() As String
Get
culoare = m_culoare
End Get
Set(ByVal value As String)
m_culoare = value
End Set

End Property
'definirea metodelor
'metoda concreta
Public Sub Respira()
MsgBox("Inspira si expira")
End Sub
'metoda concreta
Public Sub Doarme()
MsgBox("Puf..., pufff")
End Sub
'metoda abstracta
Public MustOverride Sub Mananca()

'urmeaza

End Class

'definirea unei clase abstracte derivate


Public MustInherit Class Feline
'definirea clasei de baza (parinte)
Inherits Animal
'dfinire atribute
Private m_ghiareCuPernute As String
'definire selectori si modificatori
Public Property ghiareCuPernute() As String
Get
ghiareCuPernute = m_ghiareCuPernute
End Get
Set(ByVal value As String)
m_ghiareCuPernute = value
End Set
End Property
'definirea metodelor
'metoda abstracta
Public MustOverride Sub Vaneaza()
'metoda concreta

Public Sub SeFuriseaza()


MsgBox("P..p..")

End Sub

End Class

'Definirea unei clase derivate concrete

Public Class Pisica

'Definirea clasei parinte


Inherits Feline
'Definire meta proprie
Public Sub Toarce()
MsgBox("Sfrr..sfr")
End Sub
'Rescrierea metodei clasei Animal
Public Overrides Sub Mananca()
MsgBox("Roan..roan")

End Sub
'Rescrierea metodei clasei Feline
Public Overrides Sub Vaneaza()
MsgBox("Zdup..")
End Sub
End Class

12) Cum pot fi utilizate clasele?

-se definesc obiectele (ca instane ale clasei) cu:

Dim NumeObiect As New NumeClasa

-se utilizeaz atributele i metodele obiectului respectiv prin:

NumeObiect.NumeMetota
Sau

NumeObiect.NumeAtribut

Exemplu: vom genera obiectul PisicaMea


Public Class Form1
'definirea obiectului PisicaMea
Dim PisicaMea As New Pisica

Private Sub Button1_Click(ByVal sender As Object, ByVal e As


System.EventArgs) Handles Button1.Click
PisicaMea.
End Sub
End Class

Metodele i proprietile disponibile vor fi:

S-ar putea să vă placă și