Sunteți pe pagina 1din 16

MINISTERUL EDUCAȚIEI CULTURII ȘI CERCETĂRII AL

REPUBLICII MOLDOVA
Colegiul „IULEA HASDEU” din Cahul

LUCRARE DE DIPLOMĂ
la specialitatea Informatica

Autor:
elevul gr. I-1441, MazîluSergiu,
_____________________
(semnătura)

Conducător ştiinţific:
gr. didactic I, Pîrvan Evgheni
____________________
(semnătura)

Cahul 2018
DECLARAŢIA pe propria răspundere

Subsemnatul Mazîlu Sergiu absolvent al Colegiului ”Iulia Hasdeu” din Cahul,


specialitatea Informatica declar pe propria răspundere că lucrarea de diplomă pe
tema:
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
a fost elaborată de mine şi nu a mai fost prezentată niciodată la o altă instituţie
de învăţământ din ţară sau din străinătate.
De asemenea, declar că sursele utilizate în lucrare, inclusiv cele din internet sunt
indicate cu respectarea regulilor de evitare a plagiatului. - Fragmentele de text
sunt reproduse întocmai şi sunt scrise în ghilimele, deţinând referinţa precisă a
sursei; - Redarea/reformularea în cuvinte proprii a textelor altor autori conţine
referinţa precisă; - Rezumare ideilor altor autori conţine referinţă precisă a
originalului.

Mazîlu Sergiu
__________________
(semnătura)
Capitolul 1

1.1.1. Microsoft Visual Studio este un mediu de dezvoltare integrat de la Microsoft. Acesta
poate fi folosit pentru a dezvolta aplicații consolă și aplicații cu interfață grafică pentru
toate platformele suportate de Microsoft Windows.
C# este un limbaj de programare orientat pe obiecte, simplu, modern, ce deriva din C++
si Java.
Simplitatea limbajului este data de absenta pointerilor, mostenirea facilitatilor de
„garbage collection” si managementul automat al memoriei datorita integrarii pe
platforma .NET, iar operatiile nesigure precum manipularea directa a memoriei nu sunt
premise.
Modernitatea limbajului: C# este conceput pentru construirea de operatii scalabile,
robuste si interoperabile. Include un suport ”built in” pentru transformarea
componentelor in serviciu web pentru un acces mai usor.
Orientat pe obiecte: suporta incapsularea datelor. Interfetele, mostenirea si
polimorfismul. A introdus structurile (structs) pentru a permite tipurilor primitive sa
devina obiecte.
Type safe: nu se executa cast-uri nesigure, tablourile sunt neindexate si verificate,
depasirea tipurilor este verificabila, tipurile primitivelor sunt initializate cu zero si
tipurile de referinta cu null in mod automat de catre compilator.
Interoperabilitate: C# include suport pentru COM, permite utilizarea cu restrictii a
pointerilor, componente din VB.net si din alte limbaje pot fi folosite direct in C#.
Portabilitate: Codul C# poate rula pe mai mult de 2,2 miliarde de dispozitive cu
Windows, iOS, Android, Linux. C# este portabil intr-o gama larga de medii cum ar fi
telefonia mobila, Embedded, desktop si servere de calcul.
1.1.2. Avantajele față de celelalte limbaje de programare
Avantajele față de C++:
- Sistemul garbage-collection e nativ
- Biblioteca standard foarte bogată cu lucruri bine implementate și ușor de folosit
- Clasele și metodele pot fi setate să fie interne în ansamblul în care sunt declarate
- Permite tratarea semnăturilor de clasă-metode ca funcții libere( ignoră argumentul
pointer this) și creează astfel relații mai dinamice și flexibile între clase
- Permite folosirea blocurilor de cod atât native, cât și gestionate.
Avantajele față de Java:
- În loc de implementările de clase și EJB, C# are constructori proprii ușor de folosit
precum Properties sau Events
- Are variabile dinamice
- Are Lambda și LINQ suportând o parte de programare funcțională
- Permite definirea de tipuri noi
- Suportă expresia 'using' pe când Java o va implementa în Java 7
- Este integrat în Windows.
1.1.3. Istoric
Limbajul C# a fost dezvoltat de o echipă de ingineri de la Microsoft în frunte cu
Anders Hejlsberg. C# permite programarea structurată, modulară și orientată obiectual,
conform perceptelor moderne ale programării profesioniste.
Principiile de bază ale programării orientate pe obiecte (încapsulare, moștenire,
polimorfism) sunt elemente fundamentale ale programării C#. La baza acestuia stă
limbajul C dar sunt preluate și principiile de programare din C++. Au fost adăugate o
serie de tipuri noi de date sau funcțiuni diferite ale datelor din C++, iar în spiritul
realizării unor secvențe de cod sigure (safe), unele funcțiuni au fost adăugate ,
diversificate (tipul struct), modificate (tipul string) sau chiar eliminate (moștenirea
multiplă și pointerii către funcții). Unele funcțiuni cum ar fi accesul direct la memorie
folosind pointeri au fost păstrate, dar secvențele de cod corespunzătoare se consideră
„nesigure".
În momentul în care Microsoft a decis să susțină și să dezvole C# s-a hotărât ca acesta să
aibă o legatura deosebita cu mediul sau de rulare, arhitectura .NET. Pe de o parte, C# a
fost dezvoltat pentru crearea codului pentru arhitectura .NET, iar pe de alta parte
bibliotecile utilizate de C# sunt cele ale arhitecturii .NET. Atunci cand este compilat un
program C#, rezultatul compilarii nu este un cod executabil ci se se produce un fisier
într-un limbaj. Acest fisier IL poate fi copiat in orice calculator care dispune de .NET
CLR, prin intermediul compilatorului Just In Time, motorul comun de pogramare
transforma codul intermediar in cod executabil.
Creatorii C# au intenționat să înzestreze limbajul cu mai multe facilități. Succesul de
care se bucură în prezent, confirmă calitățile sale:

 Este un limbaj de programare simplu, modern, de utilitate generală, cu


productivitate mare în programare.
 Este un limbaj orientat pe obiecte.
 Permite dezvoltarea de aplicații industriale robuste, durabile.
 Oferă suport complet pentru dezvoltarea de componente software, foarte necesare
de pildă în medii distribuite. De altfel, se poate caracteriza C# ca fiind nu numai
orientat obiect, ci și orientat spre componente.

1.1.4. Comentarii
Limbajul C# admite trei tipuri de comentarii:

• comentariu pe un rând prin folosirea //. Tot ce urmează după caracterele // sunt
considerate, din acel loc până la sfârșitul rândului, drept comentarii.
• comentariu pe mai multe rânduri prin folosirea /* și */. Orice text cuprins
între simbolurile menționate mai sus se consideră a fi comentariu. Simbolurile /*
reprezintă începutul comentariului, iar */ sfârșitul respectivului comentariu.
• creare document în format XML folosind ///. Nepropunându-ne să intrăm în
amănunte, amintim că XML (eXtensible Markup Language) a fost proiectat în scopul
transferului de date între aplicații pe Internet, fiind un model de stocare a datelor
nestructurate și semi-structurate.

1.1.5. Nume
Definiție: Prin nume dat unei variabile, clase, metode etc. înțelegem o succesiune de
caractere care îndeplinește următoarele reguli:

• numele trebuie să înceapă cu o literă sau cu unul dintre caracterele și ”@”,


• primul caracter poate fi urmat numai de litere, cifre sau un caracter de subliniere;
• numele care reprezintă cuvinte cheie nu pot fi folosite în alt scop decât acela
pentru care
• au fost definite;
• cuvintele cheie pot fi folosite în alt scop dacă sunt marcate de @; două nume
sunt distincte dacă diferă prin cel puțin un caracter (fie el și literă mică ce diferă de
aceeași literă majusculă).
Convenții pentru nume:

 în cazul numelor claselor, metodelor, a proprietăților, enumerărilor, interfețelor,


spațiilor de nume, fiecare cuvânt care compune numele începe cu majusculă;
 în cazul numelor variabilelor, dacă numele este compus din mai multe cuvinte,
primul începe cu minusculă, celelalte cu majusculă.
1.1.6. Constante

În C# există două modalități de declarare a constantelor: folosind const sau folosind


modificatorul readonly. Constantele declarate eu const trebuie să fie inițializate la declararea
lor.
Constantele declarato cu ajutorul lui readonly sunt doar variabilele membre alg claselor, ele
putând fi inițializate doar de cătłe constructorii claselor respective.

1.1.7. Variabile

O variabilă în C# poate să conțină fie o valoare a unui tip elementar, fie o referință la un
obiect. C# este „case sensitive”, deci face distincție între litere mari și mici.

1.1.8. Expresii și operatori

!Definiție: Prin expresie se ințelegc o secvență formală din operatori și operanzi. Un


operator este un simbol ce indică acțiunea care se efectuează, iar operandul este valoarea
asupra căreia se execută operația.
Operatorii se împart în trei categorii:

• Unari: acționează asupra unui singur operand;


• Binari: acționează Între doi operanzi;
• Ternari: acționează asupra a trei operanzi;
În C# sunt definiți mai mulți operatori. În cazul în care într-o expresie nu intervin
paranteze, operațiile se execută conform priorității operatorilor. În cazul în care sunt niai
mulți operatori cu aceeași prioritate, evaluarea expresiei se realizează de la stânga la
dreapta.

Tabelul de priorități:

Operatori Asociativitate Prioritate


! ~ + - ++ -- (tip) sizeof & Dreapta →stanga Prioritate maxima
*  /  % Stanga →dreapta
+  -
<<  >>
<    >  <=   >=
= =    !=
&
^
|
&&
||
?: Dreapta →stanga
=  *=   /=   %=    +=   - =   &=  ^=  |=  <<= Dreapta →stanga Prioritate minima
>>=

1.1.9. Tipuri de date

În C# există două categorii de tipuri de date:


• tipuri valoare :
- tipul simplu predefinit: byte, int, float, char, etc.
- tipul enumerare: enum
- tipul structură – struct
• tipuri referință:
• tipul clasă — class
• tipul interfață — interface
• tipul delegat — delegate
• tipul tablou — array

1.1.10. Clase
Clasele reprezintă tipuri referință definite de utilizator.

O aplicație este formată din una sau mai multe clase, grupate în spatii de nume
namespaces.
O clasă este o structură de date care poate contine date: variabile și constante; și cod:
metode, proprietăți, evenimente, operatori, constructori și destructori.
O clasă poate să moștenească o singură clasă și poate implementa mai multe interfețe.
Clasele pot conține constante, cîmpuri, metode, proprietăți, evenimente, indexatori,
operatołi, constructori de instanță, destructori, constructori de clasă, tipuri inłbricate. Fiecare
membru poate conține un nivel de protecție, care controlează gradul de acces la cl.
O descriere este dată în table:

Modificator
Explicatii
access

public access nelimitat


internal acces permis doar in clasa sau spatiul de nume in care e cuprinsa

protected acces in clasa curenta sau in cele derivate

private implicit.Doar pentru clasele interioare

protected folosit pentru clasele interioare semnificand accesul in clasa care-l contine
internal sau in tipurile derivate din clasa care-l contine

Metoda este un membru care implementează un calcul sau o acțiune care poate fi
efectuată asupra unui obiect sau asupra unei clase. Metodele statice sunt accesate prin
intermediul numelui de clasă, pe cînd cele nestatice sunt apelate prin intermediul unui obiect.
Operatorul este un membru care definește semnificația unui operator care se aplică
instanțelor unei clase. Sc pot supraîncărca operatorii binari, unari și de conversie.
Proprietatea este un membru care de acces la o caracteristică a unui obiect sau unei
clase. Exemplele folosite pină acum includeau lungimea unui vector, numărul de caractere ale
unui șir de caractere, etc.
Indexatorul este un membru care permite unui obiect să fie indexat în același mod ca
un tablou.
Cîmpul este un membru asociat fiecărui obiect; câmpul stochează o valoare
care contribuie la starea obiectului.
Evenimentul este un membru care permite unei clase sau unui obiect să pună la
dispoziția altora notificări asupra evenimentelor. Tipul acestei declarații trebuie să fie un tip
delegat. O instanță a unui tip delegate încapsulează una sau mai multe entități apelabile.
Constructorii instanță sunt membri care implementează acțiuni cerute pentru
inițializarea fiecărui obiect.

1.2.1. Modificatorii de acces in C# sunt:


 public: accesibil din interiorul și din exteriorul clasei
 protected: accesibil numai din interiorul clasei și a claselor derivate
 internal: accesibil din interiorul din exteriorul clasei dar numai în cadrul assembly-ului
(proiectului in VS)
 protected internal: accesibil numai din interiorul clasei și a claselor derivate în cadrul
assembly-ului (proiectului in VS)
 private: accesibil numai din interiorul clasei
În cazul în care nu se specifică nici un modificator de acces, atunci membrul este considerat
private. Modificatorii de acces pot fi aplicați atât membrilor clasei cât și claselor în ansamblu.

1.2.2. Constructori și destructori


Constructori
Constructorii sunt metode speciale care folosesc la crearea si initializarea
instantelor unei clase.
 Programatorul poate defini un constructor
 In absenta altor definitii, clasei i se ataseaza in mod implicit un constructor. Un astfel de
constructor se numeste constructor implicit
 Constructorii impliciti nu au parametri
 Constructorii impliciti nu se genereaza in cazul in carc clasa are atasat un alt constructor
(asadar constructorii impliciti sunt constructori fara parametri generati automat de limbaj
daca programatorul nu si-a definit unul)
 Constructorii au acelasi nume ca si clasa careia ii aparțin
 Constructorii sunt apelati de fiecare data când sc creazanoi instante ale clasei.

Proprietățile constructorilor:

 Constructorii au acelati nume ca si numele clasei careia îi aparțin;


 Nu întorc nici o valoare (din corpul lor lipseste intructiunea return, în antetul
constructorilor tipul valorii returnate este cuvântul cheie void);
 Constructorii unei clase nu pot primi ca parametri instante ale unei clase, ci doar pointeri
sau referinte la instantele clasei respective;
 Apelul constructorului se realizeaza la declararea unui obiect;
 Adresa constructorilor nu este accesibila utilizatorului;
 Constructorii nu pot fi metode virtuale (vor fi studiate ulterior);
 Parametrii unui constructor nu pot fi de tipul definit de clasa al carei membru este
constructorul.
 În cazul în care o clasa nu are nici constructor declarat de catre programator, compilatorul
generează un constructor implicit, făra nici un parametru, cu lista instructiunilor vida.

Destructori
Destructorii sunt metode ale claselor actioneaza în sens invers, complementar, fata de
constructori. Destructorul elibereaza memoria alocata de constructori. Destructorul este apelat
automat, la ieșirea din blocul în care este recunoscut acel obiect.

Proprietatile destructorilor

 Destructorul are acelasi nume ca și clasa a caror este metoda


 Numele destructorului este precedat de semnul ⁓
 O clasă are un singur destructor
 Destructorul nu are parametri si nu returneaza nici o valoare (antetul nu contine cuvântul
cheie void, iar în corpul destructonłlui nu apare instructiunea return)
 Daca programalorul nu a definit un destructor, compilatorul generează automat un
destructor pentru clasa respectivă
 Destructorii se apeleaza la încheierea timpului de viata a obiectelor, în ordine inversă
apelurilor constructorilor
 Obiectele dinamice nu se distrug automat, deoarece doar programatorul știe când nu mai
este necesar un astfel de obiect.
1.2.3. Proprietati ale claselor : Incapsularca, Mostenirea, Polimorfismul
Încapsularea este un mecanism care combină codul si datele pe care le manipulează,
mentinand integritatea acestora fala de interferența cu lumea exterioară.
Polimorfismul este abilitatea de procesa obiectele în mod diferit, în funcție de tipul sau
de clasa lor. Mai exact, este abilitatea de a redefini metode pentru derivate.
Moștenirea este procesul prin care un obiect poate dobîndi caracteristicile altui obiect,
analogia cu conceptul de animal este elocventă.
Reutilizarea este atunci cînd e creata o clasă, aceasta poate fi utilizata pentru a crea o
mulțime de obiecte. Prin utilizarea mostenirii si incapsularii clasa amintita ponte fi
reutilizata. Nu mai este nevoie sa testam codul respectiv ci doar a il utlizam corect.
1.2.4. Supraîncărcarea operatorilor
Supraîncărcarea operatorilor în C# se face numai prin metode statice membre în clase.
Există trei forme de supraîncărcare:
 Operatori de conversie expliciți (conversia trebuie făcută implicit printr-un cast) sau
impliciți (conversia poate fi făcută automat de către compilator):

public static implicit operator tip_returnat (numeClasa param);


public static explicit operator tip_returnat (numeClasa param);
 Operatori unari pentru supraîncărcarea operatorilor +, -, !, ⁓, ++ și --:
public static tip_returnat operator operatorul (numeClasa param);
 Operatori binari pentru supraîncărcarea operatorilor +, -, *, /, %, &, |, ^, <<, >>, ==, !=, <,
>, <=, >=;
public static tip returnat operator operatorul (numeClasa param, tip operand_2);
.3.4. Tratarea excepțiilor în C#
!Definiție: O exccptie este un obiect care încapsulează infrrmații despre o situație
anormală. Excepția se folosește pentru a semnala contextul în care apare acea situație
deosebită

Excepțiile nu sunt concepute pentru prevenirea bug-urilor. Chiar dacă programatorul elimină
toate bug-urile din programul său pot apărea erori pe care el nu le poate preveni:

 încercare de deschidełe a unui fișier inexistent


 împărțiri la zero
 etc.

În C# se pot arunca ca excepții obiecte de tip Systcm.Exeeption sau derivate ale lui. Pe lîngă
ierarhia de excepții pe care limbajul C# o are inclusă, programatorul își poate crea propriile sale
tipuri excepții.
Aruncarea și prinderea excepțiilor:

• Blocurile try și catch


• Blocul finaliy

Blocurile try și catch

POO oferă o soluție pentru gestionarea erorilor: folosirea blocurilor try și catch. În scrierea
codului, programatorul va separa acele instrucțiuni care sunt sigure (adică nu pot fi
generatoare de excepții), de cele care sunt susceptibile să conducă la erori. Partea de program
care poate genera excepții o vom plasa într-un bloc try, iar partea corespunzătoare tratării
excepției, într-un bloc catch.
În cazul în care blocul try generează o excepție, Runtime întrerupe execuția și caută un bloc
catch apropiat care, în funcție de tipul său să poată trata respectiva eroare. In cazul în care
este găsit respectivul bloc catch programul continuă cu instrucțiunile din corpul catch. În
cazul în care nu se găsește nici un catch corespunzător, execuția programului este întreruptă.
Având in vedere că într-un corp try pot să apară excepții diferite, în program pot exista mai
multe blocuri corespunzătoare catch.

Blocul finaliy

Limbajul C# permite cala ieșirea dintr-un bloc try să fie executate obligatoriu, în cazul în care
programatorul dorește acest lucru, anumite instnłcțiuni. Pentru acest lucru, respectivele
instrucțiuni vor fi plasate într-un bloc finally.
Blocul finally este util fie pentru a evita scrierea unor instrucțiuni de mai multe ori, fie
pentru a elibera resursele după părăsirea excepției.
Succesiunea execuției este următoarea:

• se execută instrucțiunile din blocul try până la apariția unei exepții; în cazul în care nu se
declanșază nłci o exepțłc se execută întregul bloc;
• dacă a apărut o exepție sc compară lipul exepției eu tipurile din lista de catch și se
execută blocul de instrucțiuni corespunzător pentru tratarea exepției; o comparația se
face în ordinea in care apar blocurile catch; o după execuția unui bloc catch nu se
continuă cautarea în celelalte blocuri catch, deci excepțiile mai generale trebuie puse
după excepțiile particulare;
• se execută instrucțiunile din blocul linally (indiferent dacă a apărut sau nu o exepție și
indiferent dacă aceasta a fost tratată sau nu);
• daca nu a apărut nici o exeptie sau dacă excepțiaa rost tratată printr-un bloc catch
execuția continuă cu instrucțiunile de după blocul finally, altfel excepția este propagată
în apelator.
Blocurile catch și finally nu sunt obligatorii (unul dintre ele poale lipsi).
.3.1. Mediul de dezvoltare Microsoft Visual C#

Mediul de dezvoltare Microsoft Visual C# dispune de instrumente specializate, ceea ce permite


crearea aplicațiilor în mod interactiv, rapid și ușor.
Windows Forms Application Programming Interface (API), responsabil pentru interfața grafică
și este parte a Microsoft .NET Framework. Această interfață simplifică accesul la elementele de
interfață Microsoft Windows prin crearea unui strat pentru o API Win32 existente in codul
gestionat.
WF nu oferă paradigmä comparabilă cu MVC. Pentru a remedia această situație să pună în
aplicare această funcționalitate in WF, există biblioteci terțe părți. O aplicație Windows conține
cel puțin o fereastră în care se poate crea o interfață cu utilizatorul aplicației.
În fereastra Solution Explorer sunt afișate toate fișierele pe care Microsoft Visual C# 2017 le-a
inclus în proiect.

.3.4. Arhitectura Windows Forms


O aplicație Windows Forms este o aplicație determinată de un eveniment susținut de
Microsoft NET Framework. Spre deosebire de un program de lot, el petrece majoritatea
timpului său, pur și simplu de așteptare pentru utilizator de a face ceva, cum ar fi de
completare intr-o casetă de text sau click pe un buton.

Architectura .NET Windows Forms Applications

.3.3. Controale
Unitatea de bază a unei interfețe Windows reprezintă un control. Acesta poate fi „primit” de
un container ce poate fi un formular sau un control. Un control este o instanță a unei clase
derivate din System.Windows.Forms și este reponsabil cu desenarea unei părți din container.
Visual C# vine cu o serie de controale standard, disponibile în Toolbox. Aceste controale pot fi
grupate astfel:
 Controale de actiune (de exemplu button ) care, atunci când sunt acționate, se poate
executa o prelucrare. De exemplu, cel mai important eveniment pentru Button este Click
(desemnând acțiunea click stânga pe buton)

 Controale valoare ( label, textbox, picturebox ) care arată utilizatorului o


informație(text, imagine). Label este folosit pentru plasarea de text pe un formular.
Textul afișat este conținut înpropietatea Text și este aliniat conform propietății
TextAlign. TextBox permite utilizatorului să introducă un text. Prevede, prin
intełmediulContextMenu-ului asociat, un set de funcționalități de bază, ca de exemplu
(Cut,Copy, Paste, Delete, SelectAll). PictureBox permite afișarea unei imagini
 Controale de selecție (CheckBox,RadioButton) au propietatea Checked care indicădacă
am selectat controlul. După schimbarea stării unui astfel de control, se
declanșeazăevenimentul Checked . Dacă propietatea ThreeState este setată, atunci se
schimbă funcționalitatea acestor controale, în sensul că acestea vor permite setarea unei
altestări. In acest caz, trebuie verificată propietatea CheckState(Checked , Unchecked
Indeterminate ) pentru a vedea starea controlului.
 Controale pentru listare ( ListBox , CheckedListBox , ComboBox, ImageList ) ce pot
filegate de un DataSet, de un ArrayList sau de orice tablou (orice sursă de date
ceimplementează interfața IEnumerable).
 Controale ”de control” al executării ( Timer ) sau de dialog ( OpenFileDialog
SaveFileDialog , ColorDialog , FontDialog, ContextMenu ).
 Grupuri de controale Toolbar ( ToolStrip ) afișează o bară de butoane în partea de sus
aunui formular. Se pot introduce vizual butoane (printr-un designer, direct
dinVisualStudio), la care se pot seta atât textul afișat sau imaginea. Evenimentul cel
maiutil al acestui control este ButtonClick (care are ca parametru un obiect de tip
ToolBarButtonClickEventArgs , prin care programatorul are acces la butonul care a fost
apasat).

 Grupuri de controale tip Meniu ( MenuStrip, ContextMenuStrip etc. ) Un formular


poate afișa un singur meniu principal la un moment dat, meniul asociatinițial fiind
specificat prin propietatea Form.MainMenuStrip . Meniul care este afișat de cătreun
formular poate fi schimbat dinamic la rulare.

.3.4. Conexiunile ADO.Net

Databinding - caracteristica a controalelor de interfata VisualBasic.NET de extragere si afisare a


datelor dintr-o sursa de date intr-un mod invizibil pentru utilizator. Fiecare control de interfață
legat de o sursa de date poseda proprietati proprii. Legarea controalelor de interfata cu surse de
date se realizeaza prin clase suport definite in mediul de programare bazat pe .NET Framework.
Exemplu în acest sens este ADO.NET (System.Data) ce creeaza o conexiune la o baza de date.
Crearea conexiunii presupune:

 identificarea sursei de date;


 administrarea comunicatiei intre aplicatie si baza de date prin cereri si raspunsuri;
 administrarea datelor obtinute ca urmare a interogarii bazei de date.

Administrarea conexiunii dintre controalele de interfata VisualBasic.NET și setul de date obtinut


din baza de date este realizata prin BindingSource.
Avantaje ale utilizarii datelor prin aplicatii cu interfete de acces la date:

 usurinta in utilizarea aplicatiei fata de utilizarea unui sistem de gestiune a bazelor de date
de catre utilizatorii finali;
 asigurarea securitatii bazei de date prin restrictionarea accesului pentru utilizatorii finali;
asigurarea unui anumit mod de prezentare si vizualizare a datelor;
 mentinerea integritatii datelor in vederea mentinerii caracteristicii de relevanta a acestora.

Se considera aplicatia Windows Forms destinata construirii unei baze de date cu structura creata
la.
Crearea conexiunii dintre aplicatie si baza de date presupune:

 meniu Data, comanda Add New Data Source;


 din fereastra aplicatiei Data Source Configuration Wizard, se selecteaza sursa de date
Database;
 se selecteaza conexiunea de date pentru baza de date Angajati.sdf,
 se introduce denumirea conexiunii care urmeaza a fi salvata;
 selectarea obiectelor din baza de date care sunt incluse in Dataset si introducerea
denumiriiDataSet; in cazul bazei de date, Angajati.sdfî sunt selectate cele doua tabele,
Ang si AccesAng.

Succesiunea prezentata mai sus reprezinta pasii aplicatiei Data Source Configuration Wizard, iar
optiunile si selectiile precizate sunt salvate la fiecare pas traversat al aplicatiei.
Incheirea executiei aplicatiei wizard conduce la crearea DataSet, vizibil in structura proiectului
VB.NET
DataSet asigura copierea in memorie a datelor extrase din sursa de date. Este o locatie temporara
de stocare a datelor din baza de date, retinand toate modificarile care se opereaza asupra datelor
incarcate din baza de date originala. Vizializarea multimii de obiecte DataSet din aplicatie se
efectueaza din meniul Data, comanda Show Data Sources, fiind o alta forma de reprezentare a
DataSet. In cadrul aplicatiei, se deschide formularul in modul de vizualizare Design prin
aplicarea unui dublu-cliek de mouse pe fisierul cu denumirea formularului,
implicit Forml. vb.
Aducerea unui DataSet pe fołmular se realizeaza astfel:

 activare fereastra DataSources;


 selectare tabel AccesAng;
 selectare vizualizare DataGridView asociata tabelului;
 aducerea DataSet pe formular prin drag&drop de mouse.

DataGridView permite vizualizarea mai multor inregistrari la un moment dat, sub forma de tabel.
Prin selectarea optiunii Details din meniul asociat tabelului AccesAng, se obtine o alta
modalitate de vizualizare a datelor in formular, respectiv vizualizarea unei singure inregistrari la
un moment dat. Salvarea datelor in baza de date originala prin DataSet se realizeaza la apasarea
butonului Save din bara de instrumente asociata obiectului DataSet.
Obiecte asociate DataSet si rolurile acestora:

 AngajatiDataSet: permite stocarea in memorie a datelor aduse din baza de date;


modificarile efectuate asupra datelor sunt realizate in acest obiect, urmand
salvarea lor in sursa de date originala, respectiv baza de date Angajati.sdf;
 AccesAngTableAdapter: stabileste modalitatea de conectare la baza de date,
respectiv string-ul de conectare; administreaza popularea DataSet prin aducerea
datelor din sursa de date si salvarea datelor din DataSet inapoi in baza de date
originala;
 AccesAngBindingSource: asigura conformitatea intre datele din inregistrari si
continutul controalelor de interfata care prezinta aceste date rezultatul fiind
corectitudinea prezentarii datelor prin controale de interfata;
 AccesAngBindingNavigator: referinta la bara de instrumente asociata DataSet;
comunica cu obiectul AccesAngTableAdapter la efectuarea de operatii pe sursa de
date originala si cu4ccesAngBindingSource pentru asigurarea corectitudinii
continutului controalelor atunci cand se navigheaza printre inregistrarile din
DataSet;
 TableAdapterManager: permite actualizarea DataSet atunci cand exista tabele
legate prin definirea de relatii.