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