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) Un e !ot fi efinite clasele n VB.NET i cu" se !roce eaz? -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 #) Care este sinta$a e efinire a unei clase n VB.NET? [acces][ ust!n"erit#$ot!n"eritable][%artial] &lass numeClasa [!n"erits numeClasaBaza ] [!mplements numeInterfata] [Instructiuni] 'nd &lass (nde: -acces ) precizeaz nivelul de acces (de protecie) al clasei: %ublic, %rotected, *riend, %rivate, %rotected*riend ust!n"erit ) indic o clas abstract

- $ot!n"eritable ) clasa nu poate fi derivabil - %artial ) clas definit incomplet - !n"erits ) precizeaz clasa de baz de la care se motenesc atributele i metodele

- !mplements ) clasa implementeaz o interfa (o clas abstract pur, fr atribute i cu metodele definite doar prin semntur (numele metodei i parametrii), fr corp) - !nstructiuni ) definesc membrii clasei (atributele i metodele) %) Cu" se efinesc atri&utele '!ro!riet(ile sau c)"!urile) unei clase n VN.NET? +ub forma unor variabile, dup sinta,a: [acces] [+"ared][-ead.nl/] 0im 1ista2tribute (nde: -acces ) precizeaz nivelul de acces (de protecie) al atributelor: %ublic, %rotected, *riend, %rivate, %rotected*riend; %entru a se implementa ncapsularea la nivelul clasei ) atributele trebuie s fie invizibile din e,terior, deci vor fi declarate cu %rivate3 2ccesarea atributelor prote4ate se va putea face din e,terior doar indirect prin intermediul metodelor de tip selector (pentru citire) i a metodelor de tip modificator (pentru scriere) - +"ared ) indic un atribut de nivel clas (static) nu instan, care este utlizat (parta4at) la nivelul clasei nu la nivelul unui obiect - -ead.nl/ ) semnific un atribut a crui valoare poate fi setat (modificat) numai la definirea sa sau n cadrul constructorului clasei (la instanierea unui obiect) -0im ) este ec"ivalent cu %rivate (dac utilizm un calificator de acces nu vom mai utiliza 0im) - 1ista2tribute ) lista cu atributele definite (denumirea atributelor ncapsulate este de preferat s fie precedate de m5) *) Cu" sunt referite 'accesate+ utilizate) atri&utele unui o&iect? -atributele de nivel instan: nume.biect3nume2tribut -atributele de nivel clas: nume&lasa3nume2tribut

6) Ce sunt 'ce re!rezint) selectorii i "o ificatorii n VB.NET cu" se "ai nu"esc i cu" se efinesc? - reprezint: metodele specifice unei clase destinate redrii (citirii) valorilor unor atribute prote4ate ) selectorii i actualizrii (scrierii#setrii) valorilor unor atribute prote4ate ) modificatorii; asi6ur accesul controlat asupra datelor stocate n atribute; ofer posibilitatea definirii unor re6uli (condiii) de validare a datelor la scriere - se mai numesc i proprieti (propert/) cu dou seciuni: 7et pentru selector (citire); +et pentru modificator (scriere) -sinta,a: [acces][-ead.nl/#8rite.nl/] %ropert/ nume ([1ista parametrii]) [2s 5 tip-ezultat] [acces] 7et [instructiuni] 'nd 7et [acces] +et (9/:al noua:aloare 2s tip0ate [, lista%arametrii]) [instructiuni] 'nd +et 'nd %ropert/ (nde: -acces ) precizeaz nivelul de acces (de protecie) al atributelor: %ublic, %rotected, *riend, %rivate, %rotected*riend - -ead.nl/ ) proprietatea poate fi numai citit - 8rite.nl/ ) proprietatea poate fi numai scris - noua:aloare ) este valoarea care va fi atribuit proprietii prote4ate

- lista%arametrii ) parametrii necesari la atribuire - tip-ezultat ) tipul rezultatului furnizat la citire (este de acelai tip cu tipul parametrului noua:aloare) ,) Ce sunt "eto ele n VB.NET i cu" se efinesc? -sunt proceduri sau funcii ncorporate n clase care pro6rameaz 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 sinta,a: [acces][modificator][+"ared] +ub#*unction nume etoda ([lista%aram]) 5 [!mplements etode!mplementate # ;andles lista'venimente] [instruciuni<] [',it +ub#*unction] [instruciuni=] 'nd +ub#*unction (nde: - acces ) precizeaz nivelul de acces (de protecie) al metodelor: %ublic, %rotected, *riend, %rivate, %rotected*riend -modificator descrie o caracteristic a metodei i poate lua valorile: .verloads ) indic o metod suprancrcat (o metod care are aceeai denumire cu o alt metod din clas, dar conine un numr diferit de parametrii)3 &lauza este opional, deoarece orice metod n :93$'> poate fi suprancrcat .verrides ) (ntr-o clas derivat) precizeaz o metod ce rescrie o metod cu aceeai denumire din clasa de baz3 0ei este o clauz

implicit, deoarece orice metod n :93$'> poate fi rescris, clauza este bine s fie utilizat .verridable ) (ntr-o clas de baz) indic o metod ce poate fi rescris n clasele derivate3 0ac se permite rescrierea n clasele derivate atunci clauza este obli6atorie (nu implicit) $ot.verridable ) (ntr-o clas de baz) indic o metod ce $( poate fi rescris n clasele derivate3 &lauza este implicit, adic, dac nu se precizeaz e,plicit prin .verridable c o metod poate fi rescris atunci automat (implicit) ea nu poate fi rescris, c"iar dac nu se precizeaz n mod e,pres aceasta prin $ot.verridable ust.verride - (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 utilizat3 &lasa ce conine cel puin o metod de acest tip (adic o metod neimplementat ) fr corp) se numete clas abstract +"ared ) definete o metod care se aplic (se utilizeaz) la nivel de clas nu de instan list%arametrii ) conine dac este cazul, lista parametrilor de care metoda are nevoie pentru e,ecuie3 0ac un parametru va fi precedat de cuv?ntul rezervat .ptional atunci acesta este opional i c?nd nu este precizat la apel se va folosi o valoare implicit definit pentru el metode!mplementate ) descrie toate metodele altei clase implementate de metod (interfa sau clas abstract pur) list'venimente ) conine un set de evenimente, la a cror apariie metoda este e,ecutat automat -) Cu" sunt referite 'accesate+ utilizate) "eto ele unui o&iect? -metodele de nivel instan: nume.biect3nume etod -metodele de nivel clas: nume&lasa3nume etod

.) Ce este "otenirea n VN.NET+ ce fel e "otenire acce!t i cu" este i"!le"entat? -o caracteristic a clasei derivate (secundare#copil) de a moteni toate atributele (proprietile) i metodele clasei de baz (supraclas#printe); sin6urele elemente care nu se motenesc sunt constructorii -n :93$'> se accept doar motenirea simpl (adic o clas derivat motenete doar caracteristicile unei sin6ure clas de baz ) clasa copil motenete doar un printe) -se implementeaz prin comanda: Inherits numeClasDeBaz care trebuie s fie prima linie din clasa derivat 1/) Ce sunt constructorii n VB.NET cu" sunt i"!le"enta(i? -un constructor este o procedur cu numele $e@ care este invocat i utilizat la instanierea unei clase (la creearea unui obiect) -o clas :93$'> poate avea zero sau mai muli constructori; dac pro6ramatorul nu definete nici un constructor atunci compilatorul va 6enera 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: /9ase3$e@ ([list%arametrii]) care va instania clasa de baz ( /9ase ) refer clasa de baz; e ) refer obiectul curent (inana curent)) 11) Cu" !ot fi accesa(i "ai co"o "e"&rii 'atri&utele i "eto ele) unui o&iect? -prin utilizarea structurii 8it" A 'nd 8it" care permite n interiorul structurii n loc s folosim: nume.biect3nume etod sau nume.biect3nume2tribut s folosim 3nume etod sau 3nume2tribut ',: 8it" nume.biect

3atribut< 3atribut= 3metoda< 3metoda= 'nd 8it" 'ste ec"ivalent cu: nume.biect3atribut< nume.biect3atribut= nume.biect3metoda< nume.biect3metoda=

',emplu: + considerm urmtoarea ierar"ie de clase

Bn care cu elipse au fost simbolizate clasele abstracte iar cu dreptun6"iuri clasele concrete3 :om defini la nivelul claselor urmtorii membrii: &lasa 2nimal: - proprieti: - 6reutate: privat, real simpl precizie - culoare: privat, ir de caractere - metode: - respira: concret - dorm: concret -mananca: abstract &lasa *eline: - proprieti: -6"iare&u%ernute: privat, sir de caractere - metode: - vaneaz: abstract - sefuriseaza: concret

&lasa &anine: - proprieti: -6"iare*ara%ernute: privat, sir de caractere - metode: - :aneaz: abstract

- +e+tran6!n;aita: concret &lasa ;ipopotam: - proprieti: -copita:privat, sir de caractere - metode: - mananca: concret - +e9alaceste: concret

&lasa %isica: - proprieti:

- metode: - mananca: concret - vaneaza: concret - toarce: concret &lasa 1up: - proprieti:

- metode: - vaneaza: concret - urla: concret !mplementarea 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 Propert greutate() As Single 'citire !et greutate " m_greutate #nd !et 'scriere Set($ %al noua!reutate As Single) m_greutate " noua!reutate #nd Set #nd Propert Public Propert culoare() As String !et culoare " m_culoare #nd !et Set($ %al value As String) m_culoare " value #nd Set #nd Propert 'definirea metodelor 'metoda concreta Public Sub &espira() Msg$o'((Inspira si e'pira() #nd Sub 'metoda concreta Public Sub )oarme() Msg$o'((Puf***+ pufff() #nd Sub 'metoda abstracta Public Must,verride Sub Mananca() 'urmeaza

#nd Class

'definirea unei clase abstracte derivate Public MustInherit Class -eline 'definirea clasei de baza (parinte) Inherits Animal 'dfinire atribute Private m_ghiareCuPernute As String 'definire selectori si modificatori Public Propert ghiareCuPernute() As String !et

ghiareCuPernute " m_ghiareCuPernute #nd !et Set($ %al value As String) m_ghiareCuPernute " value #nd Set #nd Propert 'definirea metodelor 'metoda abstracta Public Must,verride Sub %aneaza() 'metoda concreta Public Sub Se-uriseaza() Msg$o'((P./**p.////**() #nd Sub

#nd Class

')efinirea unei clase derivate concrete Public Class Pisica ')efinirea clasei parinte Inherits -eline ')efinire meta proprie Public Sub 0oarce() Msg$o'((Sf.rr**sf.r() #nd Sub '&escrierea metodei clasei Animal Public ,verrides Sub Mananca() Msg$o'((&oan1**roan11..() #nd Sub '&escrierea metodei clasei -eline Public ,verrides Sub %aneaza() Msg$o'((2dup**() #nd Sub #nd Class

12) Cu" !ot fi utilizate clasele? -se definesc obiectele (ca instane ale clasei) cu: 0im $ume.biect 2s $e@ $ume&lasa -se utilizeaz atributele i metodele obiectului respectiv prin: $ume.biect3$ume etota

+au $ume.biect3$ume2tribut

',emplu: vom 6enera obiectul %isica ea


Public Class -orm3 'definirea obiectului PisicaMea )im PisicaMea As 4e5 Pisica

Private Sub $utton3_Clic6($ %al sender As ,b7ect+ $ %al e As S stem*#ventArgs) 8andles $utton3*Clic6 PisicaMea* #nd Sub #nd Class

etodele i proprietile disponibile vor fi:

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