Previzualizare curs:

Cuprins curs:

1 Programarea Orientata Obiect (POO) cu C# 7
1.1. Evolutia tehnicilor de programare 7
1.2. Tipuri de date obiectuale. Incapsulare 8
1.3. Supraincarcare 9
1.4. Mostenire 10
1.5. Polimorfism. Metode virtuale 10
1.6. Programare orientata obiect in C# 11
1.7. Declararea unei clase 11
1.8. Constructori 12
1.9. Destructor 14
1.10. Metode 14
1.11. Proprietati 16
1.12. Evenimente si delegari 17
1.13. Interfete 19
2. Platforma NET 21
2.1. Prezentare 21
2.2. Compilarea programelor 22
2.3. De ce am alege NET? 23
3. Limbajul C# 25
3.1. Caracterizare 25
3.2. Compilarea la linia de comanda 25
3.3. Crearea aplicatiilor consola 26
3.4. Structura unui program C# 27
3.5. Sintaxa limbajului 28
3.6. Tipuri de date 30
3.7. Conversii 34
3.7.1. Conversii numerice 34
3.7.2. Conversii intre numere si siruri de caractere 36
3.7.3. Conversii boxing si unboxing 38
3.8. Constante 39
3.9. Variabile 39
3.10. Expresii si operatori 39
3.11. Instructiuni conditionale, de iteratie si de control 40
3.11.1. Instructiunea if 40
3
4
3.11.2. Instructiunea while 40
3.11.3. Instructiunea do - while 41
3.11.4. Instructiunea for 42
3.11.5. Instructiunea switch 42
3.11.6. Instructiunea foreach 43
3.11.7. Instructiunea break 43
3.11.8. Instructiunea continue 43
3.11.9. Instructiunea goto 44
3.12. Instructiunile try-catch-finally si throw 45
4. Programarea web cu ASP.NET 47
4.1. Introducere 47
4.2. Structura unei pagini ASP.NET 48
4.3. Controale Server 50
4.4. Pastrarea informatiilor in aplicatiile web 51
4.4.1. Pastrarea starii controalelor 51
4.4.2. Pastrarea altor informatii 52
4.4.2.1. Profile 52
4.4.2.2. Session 53
4.4.2.3. Application 53
4.4.2.3. Membrii statici 54
4.4.3. Concluzii 54
4.5. Validarea datelor 54
4.5.1. Proprietati comune 54
4.5.2. Validatoare 55
4.6. Securitatea in ASP.NET 55
4.6.1. Windows Authentication 56
4.6.2. Forms-Based Authentication 56
4.6.3. Securizarea unei aplicatii web 56
4.7. Accesul la o baza de date intr-o pagina web 57
4.8. Resurse 57
5. Programare vizuala 59
5.1. Concepte de baza ale programarii vizuale 59
5.2. Mediul de dezvoltare Visual C# 61
5.3. Ferestre 62
5.4. Controale 64
5.4.1. Controale form 65
5.4.2. Proprietati comune ale controalelor si formularelor 65
5.4.3. Cateva dintre metodele si evenimentele Form 66
5.5. System.Drawing 86
5.6. Validarea informatiilor de la utilizator 87
6. ADO.NET 89
6.1. Arhitectura ADO.NET 90
6.2. Furnizori de date (Data Providers) 90
6.3. Connection. 90
6.3.1. Exemple de conectare 91
6.3.2. Proprietati 91
6.3.3. Metode 92
6.3.4. Evenimente 92
6.4. Command 92
6.4.1. Proprietati 93
6.4.2. Metode 93
6.4.3. Interogarea datelor. 95
6.4.4. Inserarea datelor. 95
6.4.5. Actualizarea datelor. 95
6.4.6. - tergerea datelor. 96
6.5. DataReader 99
6.5.1. Proprietati 99
6.5.2. Metode 99
6.6. DataAdapter 101
6.6.1. Proprietati 102
6.6.2. Metode 102
6.7. DataSet 102
6.8. SqlParameter 104
6.9. Proceduri Stocate (Stored Procedures) 105
6.10. Proiectarea vizuala a seturilor de date 106

Extras din curs:

1.1 Evolutia tehnicilor de programare

- Programarea nestructurata (un program simplu, ce utilizeaza numai variabile

globale); complicatiile apar cand prelucrarea devine mai ampla, iar datele se multiplica

si se diversifica.

- Programarea procedurala (program principal deservit de subprograme cu parametri

formali, variabile locale si apeluri cu parametri efectivi); se obtin avantaje

privind depanarea si reutilizarea codului si se aplica noi tehnici privind transferul

parametrilor si vizibilitatea variabilelor; complicatiile apar atunci cand la program

sunt asignati doi sau mai multi programatori care nu pot lucra simultan pe un acelasi

fisier ce contine codul sursa.

- Programarea modulara (gruparea subprogramelor cu functionalitati similare in

module, implementate si depanate separat); se obtin avantaje privind independenta si

incapsularea (prin separarea zonei de implementare, pastrand vizibilitatea numai asupra

zonei de interfata a modulului) si se aplica tehnici de asociere a procedurilor cu datele

pe care le manevreaza, stabilind si diferite reguli de acces la date si la subprograme.

Se observa ca modulele sunt "centrate" pe proceduri, acestea gestionand si setul

de date pe care le prelucreaza (date+date1 din figura). Daca, de exemplu, dorim sa

avem mai multe seturi diferite de date, toate inzestrate comportamental cu procedurile

din modulul module1, aceasta arhitectura de aplicatie nu este avantajoasa.

- Programarea orientata obiect (programe cu noi tipuri ce integreaza atat datele,

cat si metodele asociate crearii, prelucrarii si distrugerii acestor date); se obtin avantaje

prin abstractizarea programarii (programul nu mai este o succesiune de

prelucrari, ci un ansamblu de obiecte care prind viata, au diverse proprietati, sunt

7

capabile de actiuni specifice si care interactioneaza in cadrul programului); intervin

tehnici noi privind instantierea, derivarea si polimorfismul tipurilor obiectuale.

1. 2 Tipuri de date obiectuale. Incapsulare

Un tip de date abstract (ADT) este o entitate caracterizata printr-o structura de date

si un ansamblu de operatii aplicabile acestor date. Considerand, in rezolvarea unei

probleme de gestiune a accesului utilizatorilor la un anumit site, tipul abstract USER,

vom obseva ca sunt multe date ce caracterizeaza un utilizator Internet. Totusi se va

tine cont doar de datele semnificative pentru problema data. Astfel, "culoarea

ochilor" este irelevanta in acest caz, in timp ce "data nasterii" poate fi importanta. In

aceeasi idee, operatii specifice ca "se inregistreaza", "comanda on-line" pot fi relevante,

in timp ce operatia "mananca" nu este, in cazul nostru. Evident, nici nu se pun

in discutie date sau operatii nespecifice ("numarul de laturi" sau actiunea "zboara").

Operatiile care sunt accesibile din afara entitatii formeaza interfata acesteia. Astfel,

operatii interne cum ar fi conversia datei de nastere la un numar standard calculat de

la 01.01.1900 nu fac parte din interfata tipului de date abstract, in timp ce operatia

"plaseaza o comanda on-line" face parte, deoarece permite interactiunea cu alte

obiecte (SITE, STOC etc.)

O instanta a unui tip de date abstract este o "concretizare" a tipului respectiv, formata

din valori efective ale datelor.

Un tip de date obiectual este un tip de date care implementeaza un tip de date

abstract. Vom numi operatiile implementate in cadrul tipului de date abstract metode.

Spunem ca datele si metodele sunt membrii unui tip de date obiectual. Folosirea unui

astfel de tip presupune: existenta definitiei acestuia, apelul metodelor si accesul la date.

Un exemplu de-acum clasic de tip de date abstract este STIVA. Ea poate avea ca date:

numerele naturale din stiva, capacitatea stivei, varful etc. Iar operatiile specifice pot fi:

introducerea in stiva (push) si extragerea din stiva (pop). La implementarea tipului STIVA,

vom defini o structura de date care sa retina valorile memorate in stiva si campuri de date

simple pentru: capacitate, numar de elemente etc. Vom mai defini metode (subprograme)

capabile sa creeze o stiva vida, care sa introduca o valoare in stiva, sa extraga valoarea

din varful stivei, sa testeze daca stiva este vida sau daca stiva este plina etc.

Crearea unei instante noi a unui tip obiectual, presupune operatii specifice de

"construire" a noului obiect, metoda corespunzatoare purtand numele de

constructor. Analog, la desfiintarea unei instante si eliberarea spatiului de memorie

8

aferent datelor sale, se aplica o metoda specifica numita destructor1.

O aplicatie ce utilizeaza tipul obiectual STIVA, va putea construi doua sau mai

multe stive (de carti de joc, de exemplu), le va umple cu valori distincte, va muta valori

dintr-o stiva in alta dupa o anumita regula desfiintand orice stiva golita, pana ce

ramane o singura stiva. De observat ca toate aceste prelucrari recurg la datele, constructorul,

destructorul si la metodele din interfata tipului STIVA descris mai sus.

Principalul tip obiectual intalnit in majoritatea mediilor de dezvoltare (Viisual

Basic, Delphi, C++, Java, C#) poarta numele de clasa (class). Exista si alte tipuri obiectuale

(struct, object). O instanta a unui tip obiectual poarta numele de obiect.

La implementare, datele si metodele asociate trebuie sa fie complet si corect definite,

astfel incat utilizatorul sa nu fie nevoit sa tina cont de detalii ale acestei implementari.

El va accesa datele, prin intermediul proprietatilor si va efectua operatiile,

prin intermediul metodelor puse la dispozitie de tipul obiectual definit. Spunem ca

tipurile de date obiectuale respecta principiul incapsularii. Astfel, programatorul ce

utilizeaza un tip obiectual CONT (in banca) nu trebuie sa poarte grija modului cum

sunt reprezentate in memorie datele referitoare la un cont sau a algoritmului prin

care se realizeaza actualizarea soldului conform operatiilor de depunere, extragere si

aplicare a dobanzilor. EL va utiliza unul sau mai multe conturi (instante ale tipului

CONT), accesand proprietatile si metodele din interfata, realizatorul tipului obiectual

asumandu-si acele griji in momentul definirii tipului CONT.

Permitand extensia tipurilor de date abstracte, clasele pot avea la implementare:

- date si metode caracterisitice fiecarui obiect din clasa (membri de tip instanta),

- date si metode specifice clasei (membri de tip clasa).

Astfel, clasa STIVA poate beneficia, in plus, si de date ale clasei cum ar fi: numarul

de stive generate, numarul maxim sau numarul minim de componente ale stivelor

existente etc. Modificatorul static plasat la definirea unui membru al clasei face ca

acela sa fie un membru de clasa, nu unul de tip instanta. Daca in cazul membrilor

nestatici, exista cate un exemplar al membrului respectiv pentru fiecare instanta a clasei,

membrii statici sunt unici, fiind accesati in comun de toate instantele clasei. Mai

mult, membrii statici pot fi referiti chiar si fara a crea vreo instanta a clasei respective.

1.3. Supraincarcare

Desi nu este o tehnica specifica programarii orientata obiect, ea creeaza un anumit

context pentru metodele ce formeaza o clasa si modul in care acestea pot fi (ca

orice subprogram) apelate.

Prin supraincarcare se intelege posibilitatea de a defini in acelasi domeniu de

vizibilitate2 mai multe functii cu acelasi nume, dar cu parametri diferiti ca tip si/sau ca

numar. Astfel ansamblul format din numele functiei si lista sa de parametri reprezinta

o modalitate unica de identificare numita semnatura sau amprenta. Supra-

CAPITOLUL 1. Programarea orientata obiect (POO) cu C# 9

1 Datorita tehnicii de supraincarcare C++, Java si C# permit existenta mai multor constructori

2 Notiunile generale legate de vizibilitate se considera cunoscute din programarea procedurala. Aspectele specifice

si modificatorii de acces/vizibilitate pot fi studiati din documentatiile de referinta C#.

incarcarea permite obtinerea unor efecte diferite ale apelului in contexte diferite3.

Apelul unei functii care beneficiaza, prin supraincarcare, de doua sau mai multe

semnaturi se realizeaza prin selectia functiei a carei semnatura se potriveste cel mai

bine cu lista de parametri efectivi (de la apel).

Astfel, poate fi definita metoda "comanda on-line" cu trei semnaturi diferite:

comanda_online(cod_prod) cu un parametru intreg (desemnand comanda unui singur

produs identificat prin cod_prod.

comanda_online(cod_prod,cantitate) cu primul parametru intreg si celalalt real

comanda_online(cod_prod,calitate) cu primul parametru intreg si al-II-lea caracter.

1.4. Mostenire

Pentru tipurile de date obiectuale class este posibila o operatie de extindere sau

specializare a comportamentului unei clase existente prin definirea unei clase noi ce

mosteneste datele si metodele clasei de baza, cu aceasta ocazie putand fi redefiniti

unii membri existenti sau adaugati unii membri noi. Operatia mai poarta numele de

derivare.

Clasa din care se mostenestea se mai numeste clasa de baza sau superclasa. Clasa

care mosteneste se numeste subclasa, clasa derivata sau clasa descendenta.

Ca si in Java, in C# o subclasa poate mosteni de la o singura superclasa, adica avem

de-a face cu mostenire simpla; aceeasi superclasa insa poate fi derivata in mai multe

subclase distincte. O subclasa, la randul ei, poate fi superclasa pentru o alta clasa

derivata. O clasa de baza impreuna cu toate clasele descendente (direct sau indirect)

formeaza o ierarhie de clase. In C#, toate clasele mostenesc de la clasa de baza Object.

In contextul mecanismelor de mostenire trebuie amintiti modificatorii abstract si

sealed aplicati unei clase, modificatori ce obliga la si respectiv se opun procesului de

derivare. Astfel, o clasa abstracta trebuie obligatoriu derivata, deoarece direct din ea

nu se pot obtine obiecte prin operatia de instantiere, in timp ce o clasa sigilata

(sealed) nu mai poate fi derivata (e un fel de terminal in ierarhia claselor). O metoda

abstracta este o metoda pentru care nu este definita o implementare, aceasta urmand

a fi realizata in clasele derivate din clasa curenta4. O metoda sigilata nu mai poate fi

redefinita in clasele derivate din clasa curenta.

Bibliografie:

Marshall Donis, Programming Microsoft Visual C# 2005: The Language, Microsoft Press 2006,

ISBN:0735621810

- Pelland Patrice, Build a Program NOW, Microsoft Visual C# 2005 Express Edition, Microsoft Press

2006,

- LearnVisualStudio.NET http://www.learnvisualstudio.net resurse educationale gratuite sub forma de

filme

- Harris Andy, Microsoft C# Programming for the Absolute Beginner, Premier Press 2002,

ISBN: 1?931841?16?0

- Wright Peter, Beginning Visual C# 2005 Express Edition: From Novice to Professional, Apress 2006,

ISBN-13 (pbk): 978-1-59059-549-7, ISBN-10 (pbk): 1-59059-549-1

- Liberty Jesse, Programming C#, Second Edition, O'REILLY 2002, ISBN 10: 0-596-00309-9,

ISBN 13:9780596003098

- Solis Daniel, Illustrated C# 2005, Apress 2006, ISBN-13 (pbk): 978-1-59059-723-1,

ISBN-10 (pbk): 1-59059-723-0

- Rasheed Faraz, C# School, Synchron Data 2005-2006,

http://www.programmersheaven.com/2/CSharpBook

- Schneider Robert, Microsoft- SQL Server- 2005 Express Edition For Dummies- , Wiley Publishing

2006, ISBN-13: 978-0-7645-9927-9, ISBN-10: 0-7645-9927-5

- Bradley L. Jones, Sams Teach Yourself the C# Language in 21 Days, SAMS, 2004,

International Standard Book Number: 0-672-32546-2

- Michel de Camplain, Brian G. Patrik, C# 2.0: Practical Guide for Programmers, Elsevier, 2005,

ISBN: 0-12-167451-7

- Christian Nagel, Bill Evjen, Jay Glynn, Karli Watson, Morgan Skinner, Allen Jones,

Professional C# 2005, Wiley Publishing, Inc., 2006, ISBN-13: 978-0-7645-7534-1

ISBN-10: 0-7645-7534-1

- Sharp John, Visual C# 2005, DUNOD 2006

- Iulian Serban, Dragos Brezoi, Tiberiu Radu, Adam Ward, GDI+ Custom Controls with Visual C#

2005, PACKT Publishing 2006, ISBN 1-904811-60-4

- Simpson Alan, Visual Web Developer Server- 2005 Express Edition For Dummies- , Wiley

Publishing 2006, ISBN-13: 978-0-7645-8360-5, ISBN-10: 0-7645-8360-3

- Hoffman Kevin, Microsoft- Visual C# 2005 Unleashed, Sams 2006,

ISBN-10: 0-672-32776-7, ISBN-13: 978-0-672-32776-6

- Popovici, Dorin Mircea si colaboratorii - Proiectare si implementare software,

Editura TEORA, Bucuresti, 1998

- C# Language Specification, Microsoft Corporation, 1999-2003

- C# Version 2.0 Specification May 2004, Microsoft Corporation, 1999-2005

- David Conger, Programarea in C#, editura B.I.C. ALL 2003

- Chris H. Pappas, William H. Murray C# pentru programare

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • NET Framework.pdf
Alte informații:
Tipuri fișiere:
pdf
Diacritice:
Da
Nota:
10/10 (1 voturi)
Nr fișiere:
1 fisier
Pagini (total):
107 pagini
Imagini extrase:
107 imagini
Nr cuvinte:
28 140 cuvinte
Nr caractere:
168 508 caractere
Marime:
5.72MB (arhivat)
Publicat de:
Anonymous A.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Limbaje de Programare
Tag-uri:
programare, net framework
Predat:
la facultate
Materie:
Limbaje de Programare
Sus!