PRogramare VB.net

20

Click here to load reader

description

Teorie introductiva in VB.net

Transcript of PRogramare VB.net

Page 1: PRogramare VB.net

program informatic: o succesiune logică de instrucţiuni sau expresii destinate executării lor de către calculator în vederea obţinerii unor rezultate -sinonime: produs program, aplicaţie, pachet de programe, produs-soft, software -Niklaus E. WIRTH: structuri de date + algoritmi =program -Program: Ieşiri =Funcţie(intrări) -traducerea într-un limbaj de programare a unuia sau mai multor algoritmi

Programarea orientată pe obiecte (OOP – Object Oriented Programming) este tehnica prin care programul este

format dintr-un ansamblu de obiecte care comunică între ele prin intermediul mesajelor. Conceptele de bază ale

programării orientate obiect sunt: obiectul, abstractizarea, încapsularea, moştenirea, polimorfismul şi persistenţa.

Metoda de programare reprezintă un set de concepte, principii şi regulile aferente, după care programatorul se poate

ghida în scrierea programelor.

Limbajul de programare reprezintă o tehnică de comunicare dintre om şi calculator, caracterizată prin vocabular,

sintaxă şi semantică proprii.

Limbajul de programare se caracterizează prin: vocabular - mulţimea cuvintelor rezervate; sintaxă - reguli de

compunere a propoziţiilor (instrucţiunilor sau expresiilor); regulile de punctuaţie; semantică - semnificaţiile

atribuite cuvintelor şi instrucţiunilor.

Algoritmul reprezintă o metodă prin care sunt descrişi paşii necesari rezolvării unei probleme - o succesiune de

etape aplicate unei probleme specificate cu scopul obţinerii unei soluţii, pornind de la un set de date de intrare.

Caracteristicile (proprietăţile) fundamentale ale algoritmului sunt: finitudine: pornind de la datele de intrare, un

algoritm trebuie să determine datele de ieşire într-un timp finit, cu un efort de calcul cât mai mic; claritate:

descrierea precisă, fără ambiguităţi, a procesului de calcul implică stabilirea unei ordini stricte, unice, a

transformărilor suferite de datele de intrare;

generalitate: un algoritm trebuie să fie conceput pentru rezolvarea unei clase de probleme de acelaşi tip, nu numai

pentru determinarea soluţiei unei probleme particulare;

Programarea orientată pe obiecte (OOP – Object Oriented Programming) este tehnica cea mai utilizată începând

cu începutul anilor ’90, când paradigmele sale principale au fost adoptate şi dezvoltate şi de cele mai utilizate

limbaje ale perioadei respective: C++, Pascal, Basic, Ada, Java, etc. Conceptele de bază ale OOP au fost totuşi

dezvoltate încă din anii ’60, odată cu proiectarea limbajului Simula67.

Programarea orientată pe obiect (Programare Orientată Obiectual) este unul din cei mai importanţi paşi făcuţi în

evoluţia limbajelor de programare spre o mai puternică abstractizare în implementarea programelor. Ea a apărut din

necesitatea exprimării problemei într-un mod mai natural fiinţei umane. Astfel unităţile care alcătuiesc un program

se apropie mai mult de modul nostru de a gândi decât modul de lucru al calculatorului.

Până la apariţia programării orientate pe obiect programele erau implementate în limbaje de programare procedurale

(C, Pascal) sau în limbaje care nici măcar nu ofereau o modalitate de grupare a instrucţiunilor în unităţi logice

(funcţii, proceduri) cum este cazul limbajului de asamblare (assembler). Altfel spus o problemă preluată din natură

trebuia fragmentată în repetate rânduri astfel încât să se identifice elementele distincte, implementabile într-un

limbaj de programare. O mare problemă a programării procedurale era separarea datelor de unităţile care prelucrau

datele (subrutinele), ceea ce făcea foarte dificilă extinderea şi întreţinerea unui program. Astfel s-a pus problema ca

aceste două entităţi (date şi subrutine) să fie grupate într-un anumit mod, astfel încât subrutinele să "ştie" în

permanenţă ce date prelucrează şi, mai mult decât atât, ele să formeze un modul, adică o unitate care separă

implementarea de interfaţă, ceea ce implică posibilitatea refolosirii codului. Conceptele de bază ale programării

Page 2: PRogramare VB.net

orientate obiect sunt: obiectul; abstractizarea: Este posibilitatea ca un program să ignore unele aspecte ale

informaţiei pe care o manipulează, adică posibilitatea de a se concentra asupra esenţialului. Este procesul prin care

se identifică şi se reţin numai caracteristicile esenţiale ale realităţii modelate. Cel mai des , abstractizarea este

întâlnită atunci când obiectele cu aceleaşi atribute şi acelaşi comportament sunt grupate în tipuri abstracte numite

clase. Clasele sunt reprezentări (modele) abstracte, conceptuale ale unor entităţi; clasa; încapsularea (ascunderea de

informaţii); moştenirea;

polimorfismul: Este abilitatea de a procesa obiectele în mod diferit, în funcţie de tipul sau de clasa lor. Mai exact,

este abilitatea de a redefini metode pentru clasele derivate. persistenţa: descrie durata de viaţă a unui obiect în raport

cu aplicaţia ce l-a creat.

Un program este format dintr-un ansamblu de obiecte ce comunică între ele, prin intermediul mesajelor.

În decursul timpului au fost dezvoltate mai multe metode de programare, dintre care cele mai importante sunt:

programarea structurată, programarea orientată pe obiecte şi programarea dirijată de evenimente.

caracteristicile (proprietăţile) fundamentale ale programelor?-corectitudine: la date de intrare corecte se obţin

rezultate scontate -robusteţe: face faţă unor evenimente neprevăzute -reutilizabilitate -compatibilitate -

portabilitate:poate fi executat pe calculatoare (platforme) diverse -eficienţă: utilizează optim resursele de calcul -

claritate

un limbaj de programare - o tehnică de comunicare dintre om şi calculator

caracterizează un limbaj de programare -vocabular: mulţimea cuvintelor rezervate - sintaxă:reguli de compunere a propoziţiilor (instrucţiunilor sau expresiilor); regulile de punctuaţie - semantică: semnificaţia

clasificaţi algoritmii? a) după metoda de proiectare (concepere) -backtracking (căutare cu revenire) -divide et impera (metoda divizării) -greedy (optimul local) -genetici (principiile geneticii şi ale selecţiei naturale)

b) după metoda de implementare -iterativi: cicluri repetitive -recursivi: se autoapelează

caracterizează programarea orientată pe obiect -programul este format dintr-un ansamblu de obiecte care comunică între ele prin intermediul mesajelor -conceptele de bază ale programării orientate obiect sunt: obiectul, abstractizarea, încapsularea, moştenirea, polimorfismul şi persistenţa

criterii de clasificare a) după distanţa faţă de limbajul calculatorului

-limbaje de nivel coborât (apropiate de calculator): cod maşină, de asamblare şi macro-asamblare -limbaje de nivel înalt (apropiate de programator). după clasa de probleme pe care le rezolvă în mod eficient limbajele de nivel înalt. universale -specializate (domeniul ştiinţific, economic, inteligenţa artificială) . după modul de realizare al funcţiilor de prelucrare automată -procedurale (Ce? şi Cum?) -neprocedurale (Ce?)

Paradigmele programării obiect -obiectul, abstractizarea (clasa), încapsularea, moştenirea, polimorfismul şi persistenţa

OBIECTUL - este o entitate (concretă) cu identitate proprie, caracterizată prin stare şi comportament

- modelează o entitate din lumea reală sau imaginară, definită de un set propriu şi unic de proprietăţi- anticipând: este o instanţă a unei clase

caracteristiciele unui obiect? - identitatea este dată de un cod unic care asigură diferenţierea unui obiect faţă de altul şi implementată software sub forma unui identificator (ID) de tip read-only (o adresă logică invariantă de memorie - pointer), de regulă transparent utilizatorului - starea este reprezentată de structura obiectului şi valorile curente ale elementelor acestei structuri (de exemplu: valorile proprietăţilor, atributelor unui obiect) -comportamentul este

Page 3: PRogramare VB.net

definit de modul în care obiectul reacţionează la evenimente cauzate de surse externe şi de modul în care interacţionează cu alte obiecte prin intermediul mesajelor (ceea ce ştie să facă); este descris printr-un set de metode (operaţii). Starea unui obiect este o caracteristică statică a sa, iar comportamentul o caracteristică dinamică.

o metodă şi cum se implementează -modalitatea prin care obiectul tratează un mesaj -implementarea este echivalentă cu o funcţie sau o procedură din programarea clasică

abstractizarea -procesul prin care se identifică şi se reţin numai caracteristicile esenţiale ale realităţii modelate

-în programarea orientată pe obiecte reprezintă o tehnică fundamentală prin care se obţin tipuri abstracte de date

Clasa reprezintă un tip de date obţinut prin abstractizarea unor obiecte similare. O clasă este schiţa (modelul) unui

obiect. Clasa spune maşinii virtuale cum să construiască un obiect de tipul respectiv.

Din punct de vedere structural, o clasă este descrisă prin: denumire; atribute (date); metode (operaţii).

Atributele şi metodele se mai numesc şi membri clasei. Atributele vor servi drept depozite pentru datele concrete

deţinute de obiectele clasei, iar metodele vor fi partajate de toate instanţele clasei.

Atunci când proiectăm o clasă ne gândim la obiectele care vor fi create din clasa respectivă. Identificăm ce ştiu obiectele despre ele însele şi ce vor face. Practic când proiectăm o clasă ne gândim la informaţiile (datele) pe care un obiect trebuie să le deţină despre el însuşi, dar vom proiecta şi metodele care operează asupra datelor respective.

Membri unei clase pot viza:clasa în ansamblu ei nu necesită o instanţă (atribute şi metode de clasă sau statice -

shared \’sher\); fiecare obiect al clasei (atribute şi metode de instanţă).

Orice clasă trebuie să implementeze cel puţin următoarele tipuri de metode: constructori - asigură crearea şi

iniţializarea obiectelor; destructori – asigură eliminarea obiectelor; modificatori – permit actualizarea stării

obiectelor; selectori – permit redarea stării obiectelor.

-constructor: asigură crearea şi iniţializarea obiectelor

-destructor: asigură ştergerea sau eliminarea obiectelor

-modificatori: metode de modificare (actualizare) a valorii unor proprietăţi

-selectori: metode de citire (redare) a valorii unor proprietăţi

tipuri de clase -clase instanţiabile sau concrete: clasele care au instanţieri directe (contract, factură, etc.; triunghi, cerc, etc.; femeie, bărbat) -clase abstracte:clasele care nu pot fi instanţiate direct, nu au corespondenţe concrete din realitate (document; formă geometrică; om)

Procedeul de derivare permite definirea unei clase noi, numita clasa derivata, care mosteneste proprietatile unei clase deja definite, numita clasa de baza, pe care le completeaza cu proprietati noi. Clasa derivata contine membrii clasei de baza, la care se adauga membri suplimentari, specifici (date si functii). Dintr-o clasa de baza pot fi derivate mai multe clase si fiecare clasa derivata poate servi ca baza pentru alte clase derivate. Se poate realiza o ierarhie de clase, care sa modeleze în mod adecvat sisteme complexe. Este posibil ca o clasa sa mosteneasca proprietatile mai multor clase de baza (mostenire multipla).

Încapsularea reprezintă capacitatea obiectelor (claselor) de a conţine la un loc atât date, cât şi operaţii/metode,

dintre care numai o parte sunt vizibile din exterior.

Încapsularea asigură faptul că starea internă a obiectelor nu poate fi cunoscută sau schimbă în mod direct (ci doar

prin metode şi proprietăţi puse la dispoziţie de obiectul respectiv); doar metodele şi proprietăţile proprii ale

obiectului pot accesa starea acestuia şi îi pot induce un anumit comportament. Fiecare tip de obiect expune o

interfaţă pentru celelalte obiecte care specifică modul cum acele obiecte pot interacţiona cu el.

Page 4: PRogramare VB.net

Principiul încapsulării impune ca toate atributele de instanţă ale unei clase să fie invizibile din exteriorul acesteia,

accesarea lor fiind posibilă numai prin intermediul unei metode dedicate sau proprietăţi care formează interfaţa

clasei.

-impune: ca toate atributele de instanţă ale unei clase să fie invizibile din exteriorul acesteia; accesarea lor să fie posibilă doar prin intermediul unor metode puse la dispoziţie de clasă (interfaţă)

avantajele încapsulării : datele nu mai sunt separate de prelucrări; obiectele apar ca nişte cutii negre care ascund detaliile de implementare; se asigură securitatea datelor stocate de un obiect împotriva modificărilor neautorizate sau accidentale; obiectele sunt uşor de utilizat prin intermediul interfeţei care descrie ce poate realiza o clasă

Declarare membrii -public: accesibili din afara clasei -private: nu sunt accesibili din exteriorul clasei -protected: accesibili numai claselor derivate

moştenirea -o caracteristică a clasei derivate (secundare/copil) de a moşteni toate atributele (proprietăţile) şi metodele clasei de bază (supraclasă/părinte); singurele elemente care nu se moştenesc sunt constructorii

-în VB.NET se acceptă doar moştenirea simplă (adică o clasă derivată moşteneşte doar caracteristicile unei singure clasă de bază – clasa copil moşteneşte doar un părinte) -se implementează prin comanda: Inherits numeClasăDeBază care trebuie să fie prima linie din clasa derivată .Pentru a eficientiza activitatea de proiectare a claselor şi pentru valorificarea relaţiilor dintre clase se procedează astfel: se analizează ce au clasele în comun; se abstractizează caracteristicile comune care se extrag şi se pun într-o nouă clasă (clasă de bază); se leagă clasele analizate (clase derivate) la noua clasă (clasă de bază) printr-o relaţie de moştenire.

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. -procesul prin care atributele şi

operaţiile unei clase (clasă de bază, superclasă) sunt preluate automat de o altă clasă (clasă derivată sau subclasă). -

orice clasă derivată va fi de tipul (is a) clasei de bază. -o tehnică prin care se încurajează reutilizarea şi partajarea

datelor (permite crearea de noi clase pe baza unora deja existente). -prin moştenire se pot exprima relaţii deosebite

între clase: clasificări, ierarhizări, generalizări, specializări

Polimorfismul reprezintă capacitatea obiectelor de a se comporta diferit la primirea aceluiaşi mesaj (adică obiecte

diferite conţin aceleaşi operaţii, care însă vor executa acţiuni diferite – exemple: apelează un număr de telefon,

schimbă viteza la maşină). Polimorfismul măreşte flexibilitatea utilizării obiectelor. -supraîncărcarea unei operaţii

(în cadrul aceleiaşi clase): utilizarea unei metode cu acelaşi nume, dar cu un număr diferit de parametrii -rescrierea

unei operaţii (într-o clasă derivată): metoda resriscrisă are acelaşi nume, acelaşi număr de parametrii dar execută altă

prelucrare

Persistenta: -durata de viaţă a unui obiect în raport cu aplicaţia care l-a creat. -un obiect se consideră persistent, dacă starea şi comportamentul său sunt conservate între două execuţii ale programului ce la generat.

Un tip de date este un plan (un model) pentru alocarea unei zone de memorie. Acest plan determină domeniul de

valori pe care memoria le poate stoca, modul de stocare şi operaţiile pe care le putem realiza în memorie.

Categorii de tipuri de date VB.NET utilizează două categorii de tipuri de date: tipul valoare şi tipul referinţă. Înţelegerea diferenţelor dintre tipurile de date valoare şi referinţă este importantă din mai multe motive: Sunt tratate diferit de către sistemul de gestiune a memoriei; Testează egalitatea în mod diferit; Sunt iniţializate diferit de rutina de execuţie a limbajului comun (CLR); Sunt tratate diferit în declaraţiile de atribuire.

Page 5: PRogramare VB.net

a) tipul valoare (primitiv sau elementar): conţine întotdeauna o valoare; se iniţializează cu valoarea predefinită

(dacă nu sunt iniţializate explicit), pot fi întotdeauna accesate direct; nu pot fi derivate în alte tipuri (sunt închise -

sealed); sunt memorate în stivă (stack).

Tipurile primitive din VB.NET sunt identificate prin intermediul cuvintelor cheie care sunt în realitate alias-uri

pentru tipuri de structuri predefinite din spaţiul de nume System (exemplu - tipul Byte este alias-ul pentru

System.Byte).

b) tipul referinţă: conţine o referire către o altă adresă de memorie la care se află datele propriu-zise; un tip referinţă conţine o adresă validă către un obiect sau o adresă vidă (Nothing). Cu o referinţă vidă este ilegal să se facă altceva decât să i se atribuie o valoare adecvată; nu pot fi iniţializate automat cu valori implicite; referinţele sunt păstrate de obicei în stivă; datele propriu-zise sunt păstrate în memoria dinamică (heap – grămadă, mulţime ).. Acest aranjament permite colectorului de gunoaie să urmărească un obiect care a fost marcat pentru a fi şters şi să elibereze memoria alocată obiectului atunci când acesta nu mai este necesar.

Variabilele reprezintă o zonă din memoria internă în care este stocată o valoare de un anumit tip, care poate fi modificată în timp: o variabilă este descrisă printr-un nume, un tip de dată şi o valoare -lucrul cu variabilele de memorie impun declararea acestora şi iniţializarea lor. Variabila reprezintă o zonă din memoria internă în care este stocată o valoare de un anumit tip, care poate fi modificată în timp. O variabilă este definită: printr-un calificativ de acces; printr-un nume (identificator); printr-un tip de dată; printr-o valoare. Declararea variabilei [calificator de acces] numeVariabilă [As tipData] [=valoare iniţială]

Definirea variabilei presupune:alocarea unei zone în memoria internă; stabilirea unui identificator (denumire);

specificarea tipului de dată pe care o conţine; precizarea calificativului de acces.

Declararea unei variabile stabileşte: durata de viaţă (perioada de timp în care variabila poate fi utilizată); domeniul

de vizibilitate (zona din program din care variabila este vizibilă (accesibilă, cunoscută). Domeniul de vizibilitate este

dependent de locul în care variabila a fost definită şi de nivelul de protecţie stabilit); nivelul (drepturile) de acces

(defineşte nivelul de protecţie (de acces). Precizează permisiunea de acces a variabilei din afara zonei în care a fost

definită).

Drepturile de acces sunt : public, private, protected (accesibilă în clasa în care a fost definită şi în clasele derivate

din aceasta), friend (\’frend\) (accesibilă numai în proiectul unde a fost definită), protectedFriend (combinaţia celor

două).

Iniţializarea unei variabile înseamnă setarea sa cu o valoare iniţială. Iniţializarea poate fi: realizată automat de

compilator cu valoarea implicită (în cazul variabilei de tip valoare, dacă programatorul nu o iniţializează în mod

explicit); trebuie realizată explicit de programator (în cazul variabilei de tip referinţă).

Constantele descriu zone din memoria internă în care sunt stocate valori de un anumit tip care nu pot fi modificate.

O constantă este definită astfel: [calificator de acces] Const numeConstantă [As tipData] =valoare

-vizează: a) durata de viaţă (perioada de timp în care variabila poate fi utilizată); b) domeniul de vizibilitate (zona din program din care variabila este vizibilă (accesibilă, cunoscută)); c) nivelul (drepturile) de acces (defineşte nivelul de protecţie (de acces)). Drepturile de acces sunt : public, private, protected (accesibilă în clasa în care a fost definită şi în clasele derivate din aceasta), friend (\’frend\) (accesibilă numai în proiectul unde a fost definită), protectedFriend

declararea variabilelor [calificator de acces] Dim numeVariabilă [As tipData] [=valoare iniţială]

constantele -descriu zone din memoria internă în care sunt stocate valori de un anumit tip care nu pot fi modificate -se definesc în VB.NET prin: [calificator de acces] Const numeConstantă [As tipData] =valoare iniţială

Page 6: PRogramare VB.net

Ce sunt funcţiile de sistem (intrinseci) în VB.NET?

-funcţiile VB.NET sunt unităţi lexicale definite de creatorul limbajului care execută anumite prelucrări; care pot fi apelate pentru a executa anumite prelucrări predefinite

-în VB numele unei funcţii trebuie urmate de paranteze rotunde (), între care se introduc parametrii actuali dacă este cazul şi sunt permise doar în interiorul subprogramelor (proceduri sau funcţii)

-deoarece funcţiile întorc prin numele său o valoare, aşa cum am mai precizat, funcţiile pot fi utilizate şi ca operanzi într-o expresie

Care sunt principalele categorii de funcţii intrinseci (de sistem) în VB.NET?

a) Funcţii pentru conversii de tipuri-permit conversia valorilor dintr-un tip de date în altul

b) Funcţii pentru operaţii cu şiruri de caractere -mai sunt păstrate în VB.NET din motive de compatibilitate cu versiunile anterioare ale limbajului VB -în VB.NET este de recomandat să se utilizeze metodele clasei String (IndexOf, Replace, Substring, ToLower, ToUpper, Trim, etc.)

c) Funcţii pentru operaţii cu date calendaristice d) Funcţii de informare -testează apartenenţa unei variabile la un anumit tip de dată

e) Funcţii pentru interacţiunea cu utilizatorul final -cele mai utilizate sunt InputBox (p1, [p2],[p3]) şi MsgBox(p4, [p5],[p6])

Unde: p1, p4-mesajul afişat; p2,p6 –titlul ferestrei, p3-valoarea predefinită, p5-butoanele generate

f) Funcţii matematice g) Funcţii financiare

SUBPROGRAMELE-reprezintă proceduri sau funcţii definite de utilizator, formate din blocuri de instrucţiuni destinate realizării împreună a unor operaţii pentru atingerea unui obiectiv -procedurile (numite şi subrutine) sunt subprograme care nu returnează valori -funcţiile sunt subprograme ca returnează o valoare prin numele funcţieisemnătura unui subprogramnumele procedurii sau funcţiei şi lista de parametrii

avantajele utilizării subprogramelor?-simplifică programul (prelucrările ca se repetă se scriu o singură dată şi apoi sunt apelate – nu mai sunt inserate în program) -programele sunt mai uşor de verificat şi de întreţinut (se verifică mai întâi subprogramul şi după ce se constată că este corect – poate fi utilizat cu încredere; când se fac modificări acestea se fac doar în subprogramele afectate restul programului nu este afectat) -se încurajează reutilizarea (sunprogramele pot fi utilizate în mai multe programe sau proiecte)

defineşte o procedură (subrutină)Public/Private/Protected/Friend/… Sub numeSubrutina([Listă parametrii _ formali])

Instrucţiuni [Return ] End Sub

-la apel se execută prelucrările cuprinse între Sub şi End Sub sau între Sub şi prima instrucţiune Return/Exit întâlnită după care prelucrarea va continua cu instrucţiunea următoare celei care a apelat-o -prelucrările se fac asupra (cu valorile) parametrilor actuali (reali) transmişi la apel

apelează o procedura [Call] numeSubrutina([Listă parametrii actuali])

Cum se defineşte o funcţie:Public/Private/Protected/Friend/… Sub numeFunctie([Listă parametrii _ formali]) [As tipRezultat] Instrucţiuni [Return expresie] End Function

-la apel se execută prelucrările cuprinse între Function şi End Function sau între Function şi prima instrucţiune Return/Exit întâlnită, după care prelucrarea va continua cu instrucţiunea următoare celei care a apelat-o sau imediat după locul apelului în cazul utilizării în cadrul unei expresii -prelucrările se fac asupra (cu valorile) parametrilor

Page 7: PRogramare VB.net

actuali (reali) transmişi la apel -deoarece numeleFunctiei întoarce un rezultat atunci: fie numele funcţiei va apare cel puţin o dată în partea stângă a unei expresii de atribuire, fi se va utiliza Retun expresie (expresia este cea care calculează şi întoarce rezultatul)

apelează o funcţie? [Call] numeFunctie([Listă parametrii actuali])

-când se ignoră (nu se valorifică) rezultatul returnat de funcţie [rezultat =] numeFunctie([Listă parametrii actuali]) -când se valorifică rezultatul returnat de funcţie prin variabila rezultat sau în cadrul unei expresii

o clasă în VB.NET?-este: un model, un şablon, un tipar, o descriere a mai multor obiecte asemănătoare -nu este: o colecţie (mulţime) de obiecte . Se defines în fişiere clasă; în cadrul unui fişier declaraţia clasei este posibilă numai la nivel fişier sau la nivel clasă; un fişier sursă poate conţine mai multe clase

sintaxa de definire a unei clase în VB.NET[acces][MustInherit/NotInheritable][Partial] Class numeClasa[Inherits numeClasaBaza][Implements numeInterfata][Instructiuni]End Class

Sub forma unor variabile, după sintaxa:

[acces] [Shared][ReadOnly] Dim ListaAtribute

-atributele de nivel instanţă: numeObiect.numeAtribut

-atributele de nivel clasă: numeClasa.numeAtribut

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; asigură accesul controlat asupra datelor stocate în atribute; oferă posibilitatea definirii unor reguli (condiţii) de validare a datelor la scriere- se mai numesc şi proprietăţi (property) cu două secţiuni: 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

structura alternativă generalizată= permite execuţia selectivă a unui singur bloc de instrucţiuni ales dintre mai

multe blocuri în funcţie de o condiţie (opţiune) stabilită. O instrucţiune Select Case are aceleaşi posibilităţi cu

instrucţiunea If ... Then ... Else, dar ea face codul mai lizibil atunci când există mai multe opţiuni.

Subprogramele definite de utilizator reprezintă proceduri sau funcţii definite de utilizator, formate din blocuri de

instrucţiuni destinate realizării împreună a unor operaţii pentru atingerea unui obiectiv.

Procedurile (numite şi subrutine) sunt subprograme care nu returnează valori.

Funcţiile sunt subprograme ca returnează o valoare prin numele funcţiei. Numele procedurii sau funcţiei şi lista de

parametrii – definesc semnătura procedurii sau funcţiei.

Avantajele utilizării subprogramelor sunt: simplifică programul (prelucrările ca se repetă se scriu o singură dată şi

apoi sunt apelate – nu mai sunt inserate în program);programele sunt mai uşor de verificat şi de întreţinut (se

verifică mai întâi subprogramul şi după ce se constată că este corect – poate fi utilizat cu încredere; când se fac

modificări acestea se fac doar în subprogramele afectate restul programului nu este afectat);se încurajează

reutilizarea (subprogramele pot fi utilizate în mai multe programe sau proiecte).

Procedurile şi funcţiile utilizatorului, în cadrul claselor se numesc metode.

Definirea şi apelul unei proceduri (subrutine)Definirea unei proceduri Public/Private/Protected/Friend/…

numeSubrutina ([Listă parametrii _ formali] Instrucţiuni [Return] End Sub

Page 8: PRogramare VB.net

la apel se execută prelucrările cuprinse între Sub şi End Sub sau între Sub şi prima instrucţiune Return/Exit întâlnită

după care prelucrarea va continua cu instrucţiunea următoare celei care a apelat-o. prelucrările se fac asupra (cu

valorile) parametrilor actuali (reali) transmişi la apel

Apelul unei proceduri [Call] numeSubrutina([Listă parametrii actuali])

Metode:-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.

tablou = o variabilă de memorie ce conţine o listă (o mulţime) de elemente de acelaşi tip, stocate în zone contiguie de memorie; Un tablou se caracterizează prin: -nume (numele variabilei) -rang/dimensiune (numărul de dimensiuni/ indecşi): unidimensional (1 index), bidimensional (2 indecşi); tridimensional (3 indecşi), etc. Pentru fiecare dimensiune tabloul va avea alocat un index. Indexul pentru fiecare dimensiune are o valoare de început/limita inferioară (în VB.NET 0) şi o limită superioară (egală cu numărul de valori ale unei dimensiuni - 1) -capacitate (numărul de elemente care pot fi memorate/înregistrate) în tablou), care defineşte numărul maxim de elemente care pot fi memorate. Exemplu capacitatea tabloului tridimensional VanzariJudetMagazinLuna(39,15,11) care va memora vânzările unei firme pentru 40 de judeţe, maxim 16 magazine în judeţ pe luni (12) va fi: 40 x 16 x 12 = 7.680 celule (sau elemente) -tipul/natura elementului memorat (toate elementele sunt de acelaşi tip)

[Acces] numeTablou([listăIndecşi]) As tipData

- listăIndecşi: conţine valorile maxime ale indecşilori pentru fiecare dimensiune. La definire lista poate lipsi dar este obligatorie înainte de utilizare. Dacă la definire lista lipseşte, în VB se considera că tabloul este definit dinamic (adică) putea fi redimensionat după necesităţi. In VB.NET toate tablourile sunt dinamice, pot fi redimensionate.

O colectie de obicete-o variabilă de memorie ce conţine o mulţime (o listă) de elemente de tip obiect stocate în memoria internă în zone neadiacente de memorie

2) Care sunt etapele necesare definirii, încărcării şi utilizării (valorificării) unei colecţii ArrayList de obiecte?

se definesc clasele, se defineşte colecţia, se încarcă obiectele în colecţie, se instanţiază un obiect al unei clase, se preiau valorile proprietăţilor (uneori şi ale atributelor neprotejate) ale obiectelor şi se adaugă în colecţie, se actualizează colecţia -se şterg anumite obiecte din colecţie -se adaugă noi obiecte în colecţie -se modifică valorile unor proprietăţi ale unui obiect din colecţie, se valorifică (se utilizeză) datele unei colecţii, se parcurge colecţia şi se fac prelucrările solicitate pe baza datelor din colecţie

Există mai multe tipuri de erori:

- erori în faza de proiectare (erori de sintaxă) care survin când o comandă este scrisă greşit (cuvinte cheie incorecte, parametrii lipsă, expresii incorecte, etc.) -erori de execuţie (detectabile) care sunt cauzate de situaţii necontrolabile de program (împărţirea la zero, un fişier lipsă, un fişier deja activ, depăşirea sau violarea memoriei, etc.) - erori de logică care duc la obţinerea de rezultate incorecte sau imprevizibile

2) Care este asemănarea şi deosebirea dintre o eroare şi o excepţie?

Limbajele de programare tradiţionale aveau un foarte bine dezvoltat concept care cuprindea noţiunea de eroare (error). Se considera ca fiind eroare orice situaţie în care programul nu evolua corect.

Ulterior, platformele moderne (C++, Java) au introdus un nou concept excepţia (excepţion)

În aceste noi condiţii (din punctul strict de vedere al programării):

-eroarea ţine strict de programator, atunci când nu gestionează în mod corect structurile aplicaţiei (exemplu: a nu prevedea faptul că numărul la care se realizează împărţirea poate fi zero poate fi considerată o eroare)

Page 9: PRogramare VB.net

-excepţia este o situaţie care nu se încadrează în modul de execuţie uzual sau dorit al aplicaţiei, însă nu înseamnă că apare mai rar sau mai des decât situaţia situaţia dorită de proframator sau utilizator (exemplu: dacă stabilim că numărul la care se realizează împărţirea nu poate fi zero, atunci cazul în care utilizatorul introduce valoarea zero este o excepţie)

tratate AUTOMAT excepţiile în VB.NET?-atunci când apare o exceţie programul se întrerupe şi sistemul afişează o casetă ajutătoare pentru a depista cauza anomaliei

Cum ar trebui tratate excepţiile de programator în VB.NET?Programatorul ar trebui să prevadă posibilitatea apariţiei unor asemenea anomalii şi să le trateze prin program prin mecanisme specifice

Excepţiile sunt obiecte derivate din clasa System.Exception, care oferă două proprietăţi mai importante: Message – conţine o descriere textuală a erorii; Source – redă numele aplicaţiei sau al obiectului care a generat eroarea

4) Ce oferă VB.NET pentru tratarea excepţiilor?

VB.NET oferă o modalitate structurată de interceptare şi tratare a excepţiilor, bazată pe structura Try … Catch … Finally cu sintaxa

Try[instructiuni monitorizate][Exit Try] [Catch NumeExceptie [As TipExcepte][instructiuni de tratare a tipului de exceptie][Exit Try] Finally[instructiuni care se executa la sfarsit] End TryCe alte posibilităţi de tratare a erorilor mai există în VB.NET?A) Exită posibilitatea de a ne crea propria clasă pentru tratarea erorilor, evident o clasă derivată dintr-o clasă a sistemului, de regulă derivată din clasa System.Exception.B) Vom avea posibilitatea să generăm propriile excepţii atunci când sunt îndeplinite anumite condiţii. Generarea ”aruncarea” unei excepţii se poate face prin instrucţiunea:Throw exceptie, unde excepţie reprezintă o instanţă a unei clase de excepţie.

În momentul apariţiei sau generării unei excepţii, execuţia programului se opreşte în punctul respectiv şi se transferă blocului Catch (dacă este definit, dacă nu, aşa cum arătat mai sus apare o casetă de excepţie şi progranul se încheie). Generarea excepţiilor se poate folosi la implementarea mai riguroasă a validărilor de integritate a proprietăţilor, când în loc să afişăm un mesasj de eroare vom întrerupe controlat execuţia programului la introducerea unor date incorecte şi nu vom permite continuarea programului decât după introducerea corectă a datelor

Tipuri de erori: Există mai multe tipuri de erori: erori în faza de proiectare (erori de sintaxă) care survin când o comandă este scrisă greşit (cuvinte cheie incorecte, parametrii lipsă, expresii incorecte, etc.); erori de execuţie (detectabile) care sunt cauzate de situaţii necontrolabile de program (împărţirea la zero, un fişier lipsă, un fişier deja activ, depăşirea sau violarea memoriei, etc.); erori de logică care duc la obţinerea de rezultate incorecte sau imprevizibile.

Tratarea erorilor de execuţie: Erorile de rulare (execuţie) se mai numesc şi detectabile, deoarece programul Visual Basic sesisează că s-a produs o eroare, dând posibilitatea detectării şi soluţionării ei.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

Page 10: PRogramare VB.net

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()

End Class 'definirea unei clase abstracte derivatePublic 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("Sfârr..sfâr") End Sub

Page 11: PRogramare VB.net

'Rescrierea metodei clasei Animal Public Overrides Sub Mananca() MsgBox("Roanţ..roanţţââ")

End Sub 'Rescrierea metodei clasei Feline Public Overrides Sub Vaneaza() MsgBox("Zdup..") End SubEnd ClassPublic Class Form1 Private unAngajatRegie As New AngajatRegie

Public Class Persoana 'Definre atribute Private m_Nume As String Private m_Sex As String Private m_DataNasterii As Date 'Definire proprietati Public Property Nume As String Get Nume = m_Nume End Get Set(ByVal value As String) If value <> "" Then m_Nume = value Else MsgBox("Nume incorect") End If End Set End Property Public Property DataNasterii() As Date Get DataNasterii = m_DataNasterii End Get Set(ByVal value As Date) m_DataNasterii = value End Set End Property 'Definire metode Public Function dCalculVarstaAni() As Integer dCalculVarstaAni = Now().Year - m_DataNasterii.Year If Now().Month < m_DataNasterii.Month Then dCalculVarstaAni = Now().Year - m_DataNasterii.Year - 1 End If

If (Now().Month = m_DataNasterii.Month) And (Now().Day < m_DataNasterii.Day) Then dCalculVarstaAni = Now().Year - m_DataNasterii.Year - 1 End If

End Function

End Class Public Class Angajat 'Definire clasa parinte Inherits Persoana 'Defire atribute Private m_DataAngajarii As Date

Page 12: PRogramare VB.net

'definire proprietati Public Property DataAngajarii As Date Get DataAngajarii = m_DataAngajarii End Get Set(ByVal value As Date) m_DataAngajarii = value End Set End Property

'Definire metode Public Overridable Function dCalculSalariu() As Decimal dCalculSalariu = 0 End Function Private Function iCalculVechimeAni() As Integer iCalculVechimeAni = Now().Year - m_DataAngajarii.Year If Now().Month < m_DataAngajarii.Month Then iCalculVechimeAni = Now().Year - m_DataAngajarii.Year - 1 End If

If (Now().Month = m_DataAngajarii.Month) And (Now().Day < m_DataAngajarii.Day) Then iCalculVechimeAni = Now().Year - m_DataAngajarii.Year - 1 End If

End Function Public Function dCalculSporFidel() As Decimal If iCalculVechimeAni() >= 5 Then dCalculSporFidel = 0.15 ElseIf iCalculVechimeAni() >= 3 Then dCalculSporFidel = 0.1

Else dCalculSporFidel = 0

End If End Function End Class Public Class AngajatRegie 'Definire clasa parinte Inherits Angajat 'Definire atribute Private m_SalNegociat As Decimal Private m_OreAbsente As Integer 'Definire proprietati Public Property SalNegociat As Decimal Get SalNegociat = m_SalNegociat End Get Set(ByVal value As Decimal) m_SalNegociat = value End Set End Property Public Property OreAbsente As Integer Get OreAbsente = m_OreAbsente End Get Set(ByVal value As Integer) m_OreAbsente = value

Page 13: PRogramare VB.net

End Set End Property 'Definire metode Public Overrides Function dCalculSalariu() As Decimal dCalculSalariu = m_SalNegociat - (m_SalNegociat / 168 * m_OreAbsente) End Function Public Overloads Function dCalculSalariu(ByVal fi As Decimal) As Decimal dCalculSalariu = dCalculSalariu() + dCalculSalariu() * fi End Function End Class

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim spor As Decimal MsgBox("data=" & Now())

With unAngajatRegie .Nume = InputBox("Tastati nume") .DataNasterii = InputBox("Tastati data nasterii") .DataAngajarii = InputBox("Tastati data anjajarii") .SalNegociat = InputBox("Tastati salariu negociat") .OreAbsente = InputBox("Tastati ore absente")

End With spor = unAngajatRegie.dCalculSporFidel

MsgBox("Salariatul " & unAngajatRegie.Nume & " are varsta de " & unAngajatRegie.dCalculVarstaAni & " ani, un salariul fara spor de fidelitate de " & unAngajatRegie.dCalculSalariu & " lei iar cu spor este de " & unAngajatRegie.dCalculSalariu(spor))

End SubEnd Class