Documente Academic
Documente Profesional
Documente Cultură
NET
_________________________________________________________________________________________________________________
UNITATEA DE ÎNVĂŢARE 4
PROGRAMAREA ÎN VB.NET
___________________________________________________________________________
Cuprins
Definirea claselor
Definirea atributelor
Definirea metodelor
Constructori
Destructori
Proprietăţi
Întrebări
Definirea obiectelor
Manipularea obiectelor prin referinţe
Structura With … End With
Finalizarea obiectelor
Întrebări
1
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
Definirea claselor
Pentru a proiecta (a construi, a genera, a defini) o nouă clasă în VB.NET, pentru aplicaţii
Windows, se procedează astfel:
Pentru generarea unei clase independente
se selectează opţiunile de meniu File, New Project…, ;
se selectează din caseta New Project (Tipul proiectului): Visual Basic, Windows
2
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
End Class
unde vom înlocui numele clasei din Class1 în numele dat de noi de (exemplu
Persoana)
Public Class Persoana
End Class
3
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
End Class
pe care este bine pentru început s-o lăsăm aşa;
în cadrul clasei Form1 vom construi propriile clase de exemplu, clasa Persoana
Public Class Form1
End Class
End Class
4
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
Tot ceea ce introducem între Class nume clasă şi … End Class reprezintă noua clasă. În
cadrul clasei Form1 putem genera mai multe clase:
Public Class Form1
End Class
End Class
End Class
Definirea atributelor
Atributele sau câmpurile se definesc sub forma unor variabile, după sintaxa:
5
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
Unde:
- acces – precizează nivelul de acces (de protecţie) 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 utilizat
(partajat) la nivelul clasei nu la nivelul unui obiect
- ReadOnly – semnifică un atribut a cărui valoare poate fi setată (modificată) numai la
definirea sa sau în cadrul constructorului clasei (la instanţierea unui obiect)
-Dim – este echivalent cu Private (dacă utilizăm 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_)
Atributele la nivelul clasei sunt referite astfel:
numeClasa.numeAtribut
Dacă atributul apare în partea stângă a unei expresii:
numeClasa.numeAtribut =
atunci i se atribuie o valoare.
Dacă atributul apare în partea dreaptă a unei expresii:
= numeClasa.numeAtribut
atunci i se citeşte valoarea (valoarea atributului va fi atribuită elementului din stânga
semnului egal).
Definirea metodelor
În VB.NET metodele sunt proceduri sau funcţii încorporate în clase care programează
comportamentul dinamic al obiectelor instanţiate 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:
6
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
[instrucţiuni1]
[Exit Sub/Function]
[instrucţiuni2]
End Sub/Function
Unde:
- acces – precizează nivelul de acces (de protecţie) al metodelor: Public, Protected,
Friend, Private, ProtectedFriend
listăParametrii – conţine dacă este cazul, lista parametrilor de care metoda are nevoie
pentru execuţie. Dacă un parametru va fi precedat de cuvântul rezervat Optional
atunci acesta este opţional şi când nu este precizat la apel se va folosi o valoare
implicită definită pentru el
7
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
Constructori
În VB.NET un constructor este o procedură cu numele New() care este invocat şi utilizat la
instanţierea unei clase (la crearea unui obiect). O clasă VB.NET poate avea zero sau mai
mulţi constructori. Dacă programatorul nu defineşte nici un constructor atunci compilatorul
va genera unul implicit.
Constructorii se definesc prin sintaxa:
[Public Sub New ([listaParam])
[instrucţiuni]
End Sub]
În momentul în care este instanţiat un obiect dintr-o clasă, prima metodă care se execută este
constructorul New(). Astfel există posibilitatea ca unui obiect să-i fie stabilită o stare iniţială
în momentul în care este instanţiat, prin supraîncărcarea constructorului New(), definind mai
mulţi constructori care diferă prin numărul parametrilor utilizaţi.
Supraîncărcarea constructorilor are avantajul că oferă utilizatorului mai multe interfeţe
distincte din punct de vedere al funcţionalităţii, putând instanţia obiecte în funcţie de valorile
cu care dorim să le iniţializăm şi în funcţie de datele pe care le avem la dispoziţie.
Constructorii când se execută se comportă ca orice altă procedură (subrutină):
- poate apela instrucţiuni predefinite;
- poate apela chiar şi un alt constructor din lista constructorilor definiţi în cadrul
clasei.
O clasă VB.NET poate avea zero sau mai mulţi constructori. Dacă programatorul nu defineşte
nici un constructor atunci compilatorul va genera unul implicit. O instanţiere a clasei derivate
(copil) trebuie să conţină o instanţiere a clasei de bază (părinte) de aceea prima linie din
constructorul clasei derivate, trebuie să fie: MyBase.New ([listăParametrii]) care va instanţia
clasa de bază (MyBase – referă clasa de bază; Me – referă obiectul curent (inţanţa curentă)).
Destructori
8
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
Destructorii sunt metode pentru ştergerea (eliminarea) obiectelor din memorie. În VB.NET,
eliberarea memoriei alocate unui obiect iniţializat cu New() se face automat din momentul în
care nu mai există nici o referinţă la obiectul respectiv. O referinţă la un obiect este anulată
dacă i se atribuie valoarea Nothing:
variabilaReferinta= Nothing
Proprietăţi
Selectorii şi modificatorii reprezintă metodele specifice unei clase destinate redării (citirii)
valorilor unor atribute protejate – selectorii şi actualizării (scrierii/setării) valorilor unor
atribute protejate – modificatorii. Selectorii şi modificatorii asigură accesul controlat asupra
datelor stocate în atributele protejate şi permite oferirea posibilităţii definirii unor reguli
(condiţii) de validare a datelor la scriere. Selectorii şi modificatorii în VB.NET sunt
implementaţi prin structura Proprietate (Property) cu două secţiuni: Get pentru selector
(citire); Set pentru modificator (scriere).
Structura Property are sintaxa:
[acces][ReadOnly/WriteOnly] Property nume ([Lista parametrii]) [As
tipRezultat]
[acces] Get
[instructiuni]
End Get
[instructiuni]
End Set
End Property
Unde:
9
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
Întrebări
1. Precizaţi cum poate fi generată o clasă în VB.NET (o clasă independentă, în cadrul clasei
Form).
2. Care este forma generală de definire a unei clase în VB.NET?
3. Cum se defineşte o clasă abstractă, dar o clasă închisă, care nu poate fi derivată?
4. Care este prima instrucţiune care trebuie precizată într-o clasă copil (clasă derivată)?
5. Cum trebuie declarat un atribut pentru a se implementa încapsularea VB.NET?
6. Ce se înţelege prin atribut static sau Shared?
7. Cum se realizează atribuirea unei valori a unui atribut dar citirea valorii acestuia?
8. Unde poate fi accesată o metodă Friend dar o metodă Protected?
9. Cum se precizează că o metodă este supraîncărcată?
10. Cum se precizează că o metodă din clasa de bază nu poate fi suprascrisă?
11. Cum se defineşte o metodă abstractă în VB.NET?
12. Ce sunt constructorii?
13. Cum se realizează supraîncărcarea constructorilor în VB.NET?
14. Cum poate fi grăbită eliminarea din memorie a obiectelor care nu mai sunt necesare?
15. Ce sunt proprietăţile şi cum sunt ele implementate în VB.NET?
Unul dintre punctele forte ale modelului obiectual, pe lângă încapsularea atributelor şi
metodelor, îl reprezintă conceptul de moştenire, care presupune specializarea claselor într-o
ierarhie bine definită.
10
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
11
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
se leagă clasele analizate (clase derivate) la noua clasă (clasă de bază) printr-o relaţie
de moştenire. Termenul tradiţional pentru a exprima astfel de relaţii între clase de
obiecte este ” IS A” (este o / este un).
Dacă apar cerinţe suplimentare se poate proiecta o nouă clasă (clasa derivată, secundară sau
copil), care derivă din clasa de bază (sau părinte), care va moşteni caracteristicile acesteia,
căreia îi putem adăuga atribute şi metode noi, sau putem să rescriem anumite metode pe care
le moşteneşte conform noilor cerinţe.
Implementarea moştenirii în VB.NET presupune:
se declară şi se defineşte clasa părinte;
se declară clasa-copil ca moştenind clasa-părinte (prin folosirea cuvântului-cheie
Inherits);
se definesc atributele şi metodele specifice clasei-copil.
Arborele de moştenire poate fi vizualizat în VB.NET cu ajutorul utilitarului Class View
(View, Other Windows, Class View – din meniul principal), care înlocuieşte fereastra
Solution Explorer cu fereastra Class View.
Polimorfismul
12
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
Clasa Object
Ierarhia de clase în VB.NET are clasa Object la baza tuturor claselor (părintele comun al
tuturor claselor). Clasa Object are implementate următoarele metode:
Aşa cum se constată în imaginea precedentă ne-am folosit de instrumentul Object Browser,
opţiunile: View, Object Browser din meniul principal. În cadrul spaţiului de nume System am
căutat clasa Object, care este selectată în panoul din stânga. Observăm că în panoul din
dreapta sus sunt prezentate metodele clasei, iar în panoul dreapta jos, este descrisă clasa
Object (selecţia curentă). Din descrierea clasei rezultă că aceasta este baza tuturor claselor în
VB.NET şi este singura clasă care nu are părinţi.
13
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
Dacă vom selecta fiecare metodă a clasei, vom avea în panoul din dreapta jos o descriere
destul de practică a acesteia. De exemplu metoda ToString:
14
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
Pentru ierarhia de clase prezentate anterior vom defini la nivelul claselor următorii membrii:
Clasa Animal:
- proprietăţi:
- greutate: privat, real simplă precizie
- culoare: privat, şir de caractere
- metode:
- respira: concret
- dorm: concret
-mananca: abstract
Clasa Feline:
- proprietăţi:
-ghiareCuPernute: privat, sir de caractere
- metode:
- vanează: abstract
- sefuriseaza: concret
Clasa Canine:
- proprietăţi:
-ghiareFaraPernute: privat, sir de caractere
- metode:
- Vanează: abstract
- SeStrangInHaita: concret
15
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
Clasa Hipopotam:
- proprietăţi:
-copita:privat, sir de caractere
- metode:
- mananca: concret
- SeBalaceste: concret
Clasa Pisica:
- proprietăţi:
- metode:
- mananca: concret
- vaneaza: concret
- toarce: concret
Clasa Lup:
- proprietăţi:
- metode:
- vaneaza: concret
- urla: concret
O implementare parţială ar presupune:
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
End Sub
End Class
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
Întrebări
1. Ce se înţelege prin moştenire?
2. Ce fel de moştenire se acceptă în VB.NET?
3. Precizaţi principalii paşi care trebuie parcurşi pentru construirea unui arbore de moştenire.
4. Cum se implementează polimorfismul în VB.NET?
5. Care sunt principalele metode ale clasei Object şi ce returnează?
Definirea obiectelor
18
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
După definirea şi iniţializarea obiectelor, membrii acestora pot fi utilizate prin numele
variabilei de referinţă la obiect:
NumeObiect.NumeMetota;
sau
NumeObiect.NumeAtribut;
Exemplu: vom genera obiectul PisicaMea
Public Class Form1
'definirea obiectului PisicaMea
Dim PisicaMea As New Pisica
Membrii (atributele şi metodele) unui obiect pot fi accesaţi mai comod prin utilizarea
structurii With … End With care permite în interiorul structurii în loc să folosim:
19
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
With numeObiect
.atribut1
.atribut2
.metoda1
.metoda2
End With
Este echivalent cu:
numeObiect.atribut1
numeObiect.atribut2
numeObiect.metoda1
numeObiect.metoda2
Notă
De asemenea pentru o utilizare generică putem utiliza Me (care desemnează obiectul curent) şi
My Base (care desemnează clasa părinte).
Obiectele vor exista cât timp variabila referinţă din stivă este vizibilă (utilizabilă) sau până
când obiectul va fi distrus.
Pentru a înţelege durata de viaţă a obiectelor vom proceda astfel:
considerăm clasa DoarPrenume cu următoarea structură
Public Class DoarPrenume
Public prenume As String
'Constructor supraincarcat
Public Sub New(ByVal noulPrenume As String)
prenume = noulPrenume
MsgBox("Am initializat obiectul: " & noulPrenume)
End Sub
End Class
20
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
End Sub
-pasul b): vom lista conţinutul obiectelor (ne convingem că ele există)
Obiectul Prenume2 nu mai există logic (nu mai poate fi accesat). El fizic
un timp poate să mai existe (mai ocupă un spaţiu în memorie până când:
garbage collector-ul îl şterge din memorie)
Pentru a înţelege mecanismele duratei de viaţă a obiectelor, vom încerca să dăm răspuns la
următoarele întrebări:
21
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
22
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
23
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
I3) Cine curăţă memoria heap de obiectele care nu mai sunt utile
(nu mai au referinţe vizibile)?
24
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
25
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
26
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 4 PROGRAMAREA ÎN VB.NET
_________________________________________________________________________________________________________________
1.2. Algoritmi....................................................................................................................................4
27
Copyright Catedra Informatică de Gestiune, 2010