Programarea Orientatã pe Obiecte ºi Programarea Vizualã cu C# .Net

.

.................................................. 3...... ........................ .......... 5 PROGRAMARE ORIENTATĂ OBIECT ÎN C#........... 1............... 4.............................5............ 1............................ ......................................................................................... ..................... 12 PREZENTARE .................................................................... 2........ 1............... 4................. 23 INSTRUCŢIUNILE TRY-CATCH-FINALLY ŞI TH ROW ......... 5 POLIMORFISM.......7................................................ 22 VARIABILE .. 3........ 14 CARACTERIZARE .................................. 17 CONVERSII............11.... ............................................................................ ........3.................. .................................. 14 CREAR EA APLICAŢIILOR CONSOLĂ ..............10......................................4.....................3.............................. 3 SUPRAÎNCĂRCARE ..........................5.............2..... .3... 22 EXPRESII ŞI OPERATORI .... 16 TIPURI DE DATE .... 23 CONCE PTE DE BAZĂ ALE PROGRAMĂRII VIZUALE ........9................................. 3................ ............ 5. 5.............................. .................. .......... ................................................................... .........NET FRAMEWORK ...............................................................................................4........ 7 METODE . 1................13.... ...................................... 3..12............................................................................. 5.............. ..... .........2............. 1....... 2.......................... 3 1..... 14 COMPILAREA LA LINIA DE COMANDĂ ...................................................................................................................... 5.................7......................................................... 3.............................................. 6 CONSTRUCTORI ... ...................... ................ ..1 1....................... ......CUPRINS CUPRINS..... 23 IN STRUCŢUNEA FOREACH .......... 21 CONSTANTE............................. 5... 13 ................ 1.... METODE VIRTUALE ............................................................................... 13 COMPILAREA PROGRAMELOR ...............2................ ................ ............................ 3............................................................................................................................................................................... 16 SI NTAXA LIMBAJULUI ................. ........ 3...... 10 INTERFEŢE .6..... PROGRAMAREA ORIENTATĂ OBIECT (POO) . 1 1.. 3.. 1.. ÎNCAPSULARE .1. 15 STRUCTURA UNUI PROGRAM C# ........1........... ...6............... 9 EVENIMENTE ŞI DELEGĂRI ...................... EVOLUŢIA TEHNICILOR DE PROGRAMARE ........ ..........3....................... ............... 1....................................... ...... ................................................ 6 DECLARAREA UNEI CLASE ................ 5....................... ..4....... ............................................................7...................................... 3...........................................................5. ................. ........6........... 25 MEDIUL DE DEZVOLTARE VISUAL C#................................. 3......................................................................... 4.............9......... 14 LIMBAJUL C#....................................................................... ....... 1.................. 4 MOŞTENIRE ....... .. ........... ..12................................................ ..................2.......... 8 PROPRIETĂŢI ............................. 3 TIPURI DE DATE OBIECT UALE........................8.... 7 DESTRUCTOR .................... 5..................................................5............... 3............................... 4.......................3 ................ 4...................................... 3.......8 ............................ ................................... 2......................... 5...... 3............................1............................ ..1..................1......................... ......................10............ .................................................................... 4................................................... ....................... .................. 22 COLECŢII ..............14.......................... 1......13.............. 3.. 2.................................................... .. 1.....2........ ..... 1................. ............ 4.......4.............. .............6........... 11 FIRE DE EXECUŢIE ....................................................... 1..................

.................................NET.......................... ........................................................................... .................................................................................................................................................................................... .......................................................... ....................... ....... ........................................ 38 COLECŢII DE DATE ............... ......................... ...................................... 26 FERESTRE ........... ...................NET ......................................................................... 36 VALI DAREA INFORMAŢIILOR DE LA UTILIZATOR . 37 APLICAŢII ORIENTATE PE DATE........................ 39 CONECTAR EA LA O SURSĂ DE DATE ..................... 41 SETUR I DE DATE ................................... ............... 29 SYSTEM.................................................................................... .............................................................................................DRAWING ................................. ........... 38 ADO............................ ........................................................... ...................... 42 PROIECTAREA VIZUALĂ A SETURILO R DE DATE ..................................................... 43 PLATFORMA .... 25 ...................................................................................................................................................................................... 39 EXECUTAREA UNEI COMENZI SQL ........ 27 CONTROALE ......................... 13 PROGRAMARE VIZUALĂ ......................................................................................................................................... ..... ................ ......................... 38 STRUCTURI DE D ATE ...........................

.

derivarea şi polimorfismul tipurilor obiectuale. variabile locale şi apeluri cu parametri efectivi). Programarea Orientată Obiect (POO) 1. complicaţiile apar atunci când la program sunt asignaţi doi sau mai mulţi programatori care nu pot lucra simultan pe un acelaşi fişier ce conţine codul sursă. stabilind şi diferite reguli de • subprog_1 • subprog_1 acces la d ate şi la subprograme. iar datele se multiplică şi se div ersifică. cât şi metodele asociate creării. deoarec permite interacţiunea cu alte obiecte (SITE.) O instanţă a unui tip de date abstract este o ”concretizare” a tipului respectiv. • Programarea procedurală (program principal deservit de subprograme cu para metri formali. în rezolvarea unei p robleme de gestiune a accesului utilizatorilor la un anumit site. de exemplu. Tipuri de date obiectuale. • date1 • date relucrării şi distrugerii acestor date).2. Vom numi operaţiile implementate în cadrul tipului de date abstract m etode. se obţin avantaje prin • met1 • met4 abstractizar ea programării (programul nu mai este o succesiune de prelucrări. . ci un ansamblu de obiecte care prind viaţă. ’comandă on-line” pot fi relevante. în timp ce ”data naşterii” poate fi importantă. vom obseva că sunt multe date ce caracterizează un utilizator Internet.1. ce utilizează numai variabile globale) .1900 nu fac parte din interfaţa tip ului de date abstract. Evident. formată din valori efective ale d atelor. apelul metodelor şi ac cesul la date. • Programarea orientată obiect (programe cu noi tipuri ce obiect1 obiect4 integrează atât datele. Evoluţia tehnicilor de programare • Programarea nestructurată (un program simplu. tipul abstract USER. • subprog_2 • subprog_2 Se observă că modulele sunt ”centrate” pe pr duri. STOC etc. păstrând vizibilitatea numai asupra zonei de interfaţă a modul_2 modul_1 modulului) şi se aplică tehnici de asociere a procedurilor cu (date+date2) (date+date1) datele p e care le manevrează. Daca. ”culoarea o chilor” este irelevantă în acest caz. Astfel. intervin tehnici noi privind ob iect2 • met3 • date2 instanţierea. în timp ce ”manâncă” nu este. operaţii specifice ca ”se înregistrează”. • Programarea modulară (gruparea subprogramelor cu program principal funcţionalităţi similare în module. se obţin avantaje privind depanarea şi reutilizarea codului şi se aplică noi tehnici privind transferul parametrilor şi vizibilitatea variabilelor. în cazul nostru.01. În ac e. sunt capabile de acţiuni specifi ce şi care • date3 interacţionează în cadrul programului). nici nu se pun în discuţie date sau operaţii cifice (”numărul de laturi” sau acţiunea ”zboară”). 1. în timp ce operaţia ”plasează o comandă on-line” face parte. această arhitectură d e aplicaţie nu este avantajoasă. dorim să avem mai multe seturi diferite de date. Totuşi se va ţine cont doar de datele semnificative pentru problema dată. se obţin avantaje privind independenţa şi încapsularea (prin separarea zonei de implementar e. implementate şi depanate date separat). Folosir ea unui astfel de tip presupune: existenţa definiţiei acestuia. Astfel. toa te înzestrate comportamental cu procedurile din modulul module1. complicaţiile apar când prelucrarea devine mai amplă. • subprog_3 acestea gestionând şi setul de date pe care le prelucrează (date+date1 din figură). Spunem că datele şi metodele sunt membrii unui tip de date obiectual. au obiect3 diverse proprietăţi. Încapsulare • met2 Un tip de date abstract (ADT) este o entitate caracterizată printr-o structură de da te şi un ansamblu de operaţii aplicabile acestor date. Considerând. Operaţiile care sunt accesibile din afa tităţii formează interfaţa acesteia.Programarea Orientată Obiect (POO) 3 1. Un tip de date obiectual este un tip de date care implementează un tip de date abstract. operaţii interne cum ar fi conversia datei de naştere la un număr standard calculat de la 01.

presupune operaţii specifice de ”con struire” a noului obiect. La implementare. la desfiinţarea unei instanţe şi eliberarea spaţiului de memorie aferent datelor sale. O instanţă a unui tip obiectual poartă numele d e obiect. 3 Capacitatea unor limbaje (este şi cazul limbajul ui C#) de a folosi ca ”nume” al unui subprogram un operator. C#) poartă numele de clasă (class). vârful etc. datele şi metodele asociate trebuie să fie complet şi corec t definite. Supraîncărcarea p e obţinerea unor efecte diferite ale apelului în contexte diferite3.4 POO şi Programare vizuală (suport de curs) Un exemplu de-acum clasic de tip de date abstract este STIVA. Delphi. va muta valori dintr-o stivă în alta după o anumită regulă des fiinţând orice stivă golită. Mai mult. Astfel. membrii statici pot fi referiţi fără a crea vreo instanţă a clasei respective . realizatorul tipului obiectual a umându-şi acele griji în momentul definirii tipului CONT. de exemplu). vom defini o structura de date care să reţină valorile memorate în stivă ş câmpuri de date simple pentru: capacitate. Crearea unei instanţe noi a unui tip obiectual. Spunem că tipurile de date obiectuale respectă principiul încapsulării. Există şi al te tipuri obiectuale (struct. care să introducă o valoare în stivă. membrii statici sunt unici. prin intermediul metodelor puse la dispoziţie de tipul obiectual definit. El va accesa datele. Datorită tehnicii de supraîncărcare C++. Java şi C# permit existenţa mai multor constructo ri Noţiunile generale legate de vizibilitate se consideră cunoscute din programarea procedurală. le va umple cu valori distincte. Vom mai defini me tode (subprograme) capabile să creeze o stivă vidă. Supraîncărcare Deşi nu este o tehnică specifică programării orientată obiect. 1. număr de elemente etc. capacitatea stivei. clasele pot avea la implementare: • date şi metode caracterisitice f iecărui obiect din clasă (membri de tip instanţă). se aplică o metodă specifică numită destructor1. Analog . numărul maxim sau numărul minim de componente ale stivelor existente etc. constructorul. reprezintă supraîncărcarea op eratorilor. ea creează un anumit context pentru metodele ce formează o clasă şi modul în care acestea pot fi (ca orice subprogram ) apelate. dar cu parametri diferiti ca tip şi/ sau ca număr. Aceasta este o facilitate care 2 1 . metoda corespunzătoare purtând numele de constructor. C++. şi de date ale clasei cu m ar fi: numărul de stive generate. Aspectele specifice şi modificatorii de acces/vizibilitate pot fi studi aţi din documentaţiile de referinţă C#. prin intermediul proprietăţilor şi va efectua operaţiile . Permiţând extensia tipurilor de date abstracte. până ce rămâne o singură stivă. în plus. Modificatorul static plasat la definirea unui membru al clasei face ca acela să fie un membru de clasă. nu unul de tip instanţă. La implementare a tipului STIVA. astfel încât utilizatorul să nu fie nevoit să ţină cont de detalii ale acestei mplementări. Iar operaţiile speci fice pot fi: introducerea în stivă (push) şi extragerea din stivă (pop). De observat că toate aceste pr rg la datele. Dacă în cazul memb ilor nestatici. clasa STIVA poate beneficia. Ea poate avea ca d ate: numerele naturale din stivă. extragere şi aplicare a dobânzilor. Astfel ansamblul format din numele funcţiei şi lista sa de parametri rep rezintă o modalitate unică de identificare numită semnătură sau amprentă.3. va putea construi două sau mai multe stive (de cărţi de joc. Principalul tip obiectual întâlnit în majoritatea mediilor de dezvol tare (Viisual Basic. să testeze dacă stiva este vidă sau dacă stiva este plină . există câte un exemplar al membrului respectiv pentru fiecare instanţă a clasei. destructorul şi la metodele din interfaţa tipului STIVA descris mai sus. Prin supraîncarcare se înţelege posibilitatea de a defini în acelaşi domeniu de vizibilitate2 mai multe funcţii cu acelaşi nume. s ragă valoarea din vârful stivei. EL va utiliza unul sau mai multe conturi (instanţe ale tipulu i CONT). accesând proprietăţile şi metodele din interfaţă. • date şi metode specifice clasei (membr de tip clasă). O aplicaţie ce utilizează tipul obiectual STIVA. fiind accesaţi în comun de toate instanţele clase i. programatorul ce utilizează un tip obiectual CONT (în bancă) nu trebuie să poarte grija modului cum su nt reprezentate în memorie datele referitoare la un cont sau a algoritmului prin c are se realizează actualizarea soldului conform operaţiilor de depunere. Java. Astfel. object).

.

7 Într-o altă concepţie. conform terminologiei din C++) 5 deoarec e tot aspecte polimorfice îmbracă şi unele tehnici din programarea clasică sau tehnica s upraîncărcărcării funcţiilor şi operatorilor. O metodă sigilată nu ai poate fi redefinită în clasele derivate din clasa curentă. pentru a particu lariza acest tip de deplasare care capturează piesa peste care trece pionul în diago nală. În contextul mecanismelor de moştenire trebuie amintiţi modifi catorii abstract şi sealed aplicaţi unei clase. o clasă abstractă trebuie obligatoriu derivată.calitate) c u primul parametru întreg şi al-II-ilea caracter. Polimorfism. aceasta urmând a fi realizată în clasele derivate din clasa curentă4. O metodă abstractă este o metodă pentru care nu este definită o implementare. atunci subclasele TURN şi PION trebuie să aibă metoda muta definită în mod diferit (pentru a implementa maniera specifică a pionului de a captur a o piesă ”en passant”7). 1. cu metoda nestatică muta(poziti e_initiala. a membrului referit. se pune problema stabilirii datei sau metodei referite. În C#. Comportamentul polimorfic este un element de flexib ilitate care permite stabilirea contextuală.5. 1.Programarea Orientată Obiect (POO) 5 Apelul unei funcţii care beneficiază. în C# o subclasă p i de la o singură superclasă. Clasa care moştene e numeşte subclasă. de două sau mai multe semnături e realizează prin selecţia funcţiei a cărei semnătură se potriveşte cel mai bine cu lista d arametri efectivi (de la apel). Astfel. poate fi definită metoda ”comandă on-line” cu tr ei semnături diferite: comanda_online(cod_prod) cu un parametru întreg (desemnând coma nda unui singur produs identificat prin cod_prod. . Astfel. prin supraîncărcare. Atunci. prin redefinirea unor date sau metode. La limbajele cu "legare timpurie". modificatori ce obligă la şi respectiv s e opun procesului de derivare. prin supraîncărcarea operatorilor şi metodelor se pot crea şi confuzii. Deşi ajută la sporirea expresi ităţii codului. O subclasă.pozitie_finala). Polimo fismul obiectual5 se manifestă în lucrul cu obiecte din clase aparţinând unei ierarhii d e clase.4. Moştenire Pentru tipurile de date obiectuale class este posibilă o operaţie de extindere sau s pecializare a comportamentului unei clase existente prin definirea unei clase no i ce moşteneşte datele şi metodele clasei de bază. la randul ei. La limbajele cu legare întârziată. O clasă de bază impreună cu toate clasele descendent direct sau indirect) formeaza o ierarhie de clase. cu această ocazie putând fi redefiniţi u membri existenţi sau adăugaţi unii membri noi. adică avem de-a face cu moştenire simplă. această adresa se stabileste doar in momentul rulării. se obţin membri diferiţi având însă acelaşi nume. deoarece direct din ea nu se pot obţine obiecte prin operaţia de instanţiere. adresa la care se face un apel al unui subprogram se stabileşte la compilare. 4 c re trebuie să fie şi ea abstractă (virtuală pură. aparţinând claselor ”reduce” diferenţele dintre operarea la nivel abstract (cu DTA) şi apelul metodei ce rea lizează acestă operaţie la nivel de implementare obiectuală. Ca şi în Java. Metode virtuale Folosind o extensie a sensului etimologic. în funcţie d e contextul în care apare apelul. în timp c e o clasă sigilată (sealed) nu mai poate fi derivată (e un fel de terminal în ierarhia c laselor). poate fi su perclasă pentru o altă clasă derivată. pentru un obiect T. Astfel. metoda muta poate fi implemen tată la nivelul clasei PIESA şi redefinită la nivelul subclasei PION. toate clasele moştenesc de la clasa de bază Object. D e exemplu. comanda_online(cod_prod. Cl asa din care se moşteneştea se mai numeşte clasă de bază sau superclasă. dacă este definită clasa numită PIESA (de şah). clasă derivată sau clasă descendentă. în mod dinamic6. să se afle în diferite stări. unde. să aibă comportamente diferite.cantit ate) cu primul parametru întreg şi celalalt real comanda_online(cod_prod. putându-se calcula distinct. 6 Este posibil doar în cazul limbajelor ce pe t “legarea întârziată”. un obiect polimorfic este cel capabil să ia diferite forme. Operaţia mai poartă numele de derivare. aceeaşi superclasă ate fi derivată în mai multe subclase distincte. în cazul unei referiri obiectuale.

asociate noţiunii de clasă. Programul în suşi este o clasă având metoda statică Main() ca punct de intrare. Pentru a per mite acest mecanism. Pentru a evita unele tehnici de programare pe riculoase. se decalră ca metode virtuale (cu modificatorul virtual). referirea la metoda muta pare nedefinită. metodele care necesită o decizie contextuală (în momentul apelulu i). O metodă ne-v rtuală nu este polimorfică şi. un destructor. ele formează un fel de ”context” al clasei • se pot defini date şi metode nes tatice (de instanţă) care se multiplică pentru fiecare instanţă în parte în cadrul operaţie instanţiere.6. constructori. conform mecanismului de supraîncărcare) • metodele sau constructorii care au acelaşi nume trebuie să difere prin semnătură11 • se pot defini date şi metode statice (ca acteristice clasei) şi un constructor static care se execută la iniţializarea clasei p ropriu-zise. ci numai din derivatele acesteia (Fetita. 1. Declararea unei clase Sintaxa9: [atrib]o [modificatori]o class [nume_clasă] [:clasa_de_bază]o [corp_clasă]o Atributele reprezintă informaţii declarative cu privire la entitatea definită. Programare orientată obiect în C# C# permite utilizarea OOP respectând toate principiile enunţate anterior. iar o semnifică o componentă opţională 10 având în vedere că ele pot să facă parte d clasă interioară altei clase 11 din semnătură nefăcând parte specificatorii ref şi out asoc parametrilor .7. Versiunii 2. int sau bool sunt clase sigilate derivate din clasa ValueType din spaţiul System. indiferent de clasa căreia îi aparţine obiectul. câmpuri (variabile). clasă ce nu se instanţia Chiar şi tipurile predefinite byte. evenimente (instrumente de semnalizare). Corpul clasei este un bloc de declarări ale membrilor clasei: constante (v alori asociate clasei). îi corespunde un specificator over ride al funcţiei din clasa derivată ce redefineşte funcţia din clasa de bază. 0 a limbajului i s-a adăugat un nou tip: clasele generice8. iar modificatorul sealed a fost folosit pentru a desemna faptul că nu se mai p ot obtine clase derivate din clasa Baiat (de exemplu. în momentul apelului. Toate comp onentele limbajului sunt într-un fel sau altul. subclasele Baiat_cuminte şi Baiat_rau) 8 9 echivalentrul claselor template din C++ [] din definiţia schematică semnifică un neter minal. 1. În mod curent. Modific atorii reprezintă o secvenţă de cuvinte cheie dintre: new public protected internal pr ivate (modificatori de acces) abstract sealed (modificatori de moştenire) Clasa de bază este clasa de la care moşteneşte clasa curentă şi poate exista o singură astfel de cl să de bază. • cons tructorii şi destructorul au ca nume numele clasei proxime din care fac parte10 • me todele au nume care nu coincid cu numele clasei sau al altor membri (cu excepţia m etodelor. a clasei proxime căreia îi aparţine obiectul T şi apelarea metodei corespunzătore (mutare de pion sau tură sau altă piesă). proprietăţi (caracteristici ce pot fi consultate sau setate). în C# mod ificatorului virtual al funcţiei din clasa de bază. Baia t). Totuşi mecanismele POO permit stabilirea. metode (subprograme). ele formează contextele tuturor instanţelor clasei respective Exemplul ur mător defineşte o ierarhie de clase (conform figurii alăturate) Copil public abstract class Copil public class Fetita: Copil { } Fetita Baiat public sealed class Baia t: Copil { } Modificatorul abstract este folosit pentru a desemna faptul că nu se pot obţine obiecte din clasa Copil.6 POO şi Programare vizuală (suport de curs) derivate din PIESA. limbajul oferă tipuri speciale cum ar fi: interfeţe şi delegări. va fi invoc tă metoda din clasa de bază. tipuri de date definite de utilizator . indexato ri (ce permit indexarea instanţelor din cadrul clasei respective) şi operatori.

} } class Fetita:Copil { public Fetita(string s):base(s) {nume =”Fetita ”+nume}13 public Fetita(){} //preia constructorul fără parametri din clasa de b ază14 //public Fetita(string s):base() {nume=s} } .8.} //la iniţializarea obiectului se citeşte //de la tastatură un şir de caractere ce va reprezenta numele copilului } class Fetita:Copil {} . this([listă_param]o) ce permite invocarea unui construc tor anume12 înainte de executarea instrucţiunilor ce formează corpul constructorului c urent. Există două motive pentru care definiţia constructorului al treilea din clasa Fetita e ste greşită şi de aceea este comentată. Dacă nu este precizat niciun iniţializator. public Copil() {nume = Cons ole. Fetita f2=new Fetita("Ioana”)..ReadLine(). Pentru orice clasă poate fi definit un singur constructor.9. Copil c= new Copil(). în cazul construct orilor cu modificatorul static). //dată acceesibilă numai în interiorul cla sei şi claselor derivate public Copil() {nume = Console.} public Copil( string s) {nume=s. s-ar fi obţinut eroare aici Supraîncărcarea constructorilor şi definirea explicită a constructorilor în clase derivate public class Copil { protected string nume... Constructori Sintaxa: [atrib]o [modificatori]o [nume_clasă] ([listă_param_formali]o) [:iniţializato r]o [corp_constr]o Modificatori: public protected internel private extern Iniţiali zator: base([listă_param]o). se asociază implicit iniţializatorul base(). dacă sunt definiţi mai mulţi) precedat de operatorul new. Destructo rii 12 13 Din clasa de bază (base) sau din clasa insăşi (this) Preia şi specializează constructorul al doilea din clasa de bază 14 Este echivalent cu public Fetita():base(){} .Programarea Orientată Obiect (POO) 7 1. Fetita f=new Fetita(). Acestea se pot realiza şi simultan într-o instrucţiune de felul: [Num e_clasă] [nume_obiect]=new [Nume_clasă] ([listă_param]o) Utilizarea unui constructor fără parametri şi a constructorului implicit în clasă derivată public abstract class Copil { protected string nume. Fetita f1=new Fetita(). Destructor Sintaxa: [atrib]o [extern]o ~[nume_clasă] () [corp_destructor]o Corpul destructoru lui este format din instrucţiuni care se execută la distrugerea unui obiect al clase i respective. Copil c1= new Copil().ReadLine(). • pot exista mai mulţi constructori care se pot dif erenţia prin lista lor de parametri • constructorii nu pot fi moşteniţi • dacă o clasă nu a definit niciun constructor. //se citeste numele de la tastatură Copil c2= new Copil(“Codrina”). se va asigna automat constructorul fără parametri al cla sei de bază (clasa object. Corpul constructorului este format din instrucţiuni care se execută la crear ea unui nou obiect al clasei respective (sau la crearea clasei.. Care sunt aceste motive? 1. dacă nu este precizată clasa de bază) Instanţierea presupune de clararea unei variabile de tipul clasei respective şi iniţializarea acesteia prin ap elul constructorului clasei (unul dintre ei. //Pentru clasa Copil abstractă.

Un parametru formal special este parametrul tablou cu sintaxa: [atrib]o params [tip][] [nume]. destructorul nu este apelat în mod explicit. extern. abstract nu poate să apară cu niciunul dintre stati . • La apelul metodei. Definirea datelor şi metod elor statice corespunzătoare unei clase public class Copil { public const int nr_max = 5. nu pot apărea împreună new şi override.WriteLine("Sunt {0} copii:". Copil. for (int i = 0. numele parametrilor formali şi nici specificatorii ref şi out. referinţa noului obiect se memorează în tabloul static copii (caracteristic clasei) şi s e incrementează data statică nr_copii Baiat c = new Baiat(). {1}". deoarec e procesul de distrugere a unui obiect este invocat şi gestionat automat de Garbag ge Collector. nr_copi i)..//se afişează o listă cu numele celor 3 copii Poate fi folosit cel mult unul dintre modificatorii static.ReadLi ne(). ove rride şi abstract. copii [i]. seald obligă şi la override 16 Din semnătură (amprentă) nu fac parte tip l returnat. numărul şi tipul parametrilor16 • Numele metodei trebuie să difer e de numele oricărui alt membru care nu este metodă.{0}.adaug_copil(c). Numele poate fi un simplu identificator sau. orice parame tru trebuie să aibă acelaşi modificator ca la definire Invocarea unei metode se realiz ează prin sintagma [nume_obiect].8: public Copil() {nume = Console.Copil. Copil. sealed.nume). corpul metod ei se reduce la un semn .8 POO şi Programare vizuală (suport de curs) nu pot fi moşteniţi.} 15 .[nume_metoda] (pentru metodele statice).adaug_copil(c). //constantă public static int nr _copii=0.[nume_metoda] (pentru metodele nestatice) şi respec tiv [nume_clasă]. Copil c = new Copil(). Semnătura fiecărei metode este formată din numele metodei. if (nr_copii==nr_max) throw new Exception("Prea multi copii"). Parametrii care nu au niciun modificator sunt param etri de intrare. } .[nume_metoda] Lista de parametri formali este o succesiune de declarări despărţite prin virgule.. În mod normal. i<nr_copii. dec lararea unui parametru având sintaxa: [atrib]o [modificator]o [tip] [nume] Modific atorul unui parametru poate fi ref (parametru de intrare şi ieşire) sau out (paramet ru care este numai de ieşire). 17 Se are în vedere şi constructorul fără parametri definit şi preluat implicit în subclasele din ca rul primului exemplu din subcapitolul 1. i++) Console. • • Pentru metodele abstracte şi externe. private nu poate să apară cu niciunul dintre virtual.WriteLine("Nr. //câmp simplu (variabilă) static Copil[] copii=new Copil[nr_max]. Metode Sintaxa:[atrib]o[modificatori]o[tip_returnat] [nume] ([listă_param_formali]o) [cor p_metoda]o Modificatori: new public protected internal private static virtual ab stract sealed override extern15 Tipul rezultat poate fi un tip definit sau void.10. } // metodă public static void afisare() { Console.17 } . Copil. //câmp de tip tablou (variabilă) public static void adaug_copil(Copil c) //metodă { copii[nr_c opii++] = c.afisare().adaug_ copil(c). 1.. i+1.. în cazul în care defineşte în mod explicit un membru al unei interfeţe. virtual şI override . m odificatorii acesteia. Fetita c = new Fetita(). virtual. numele este de forma [nume_interfata].

} } .. corespunzătoare câ pului protejat ce reţine. Fetita c = new Fetita(). definind instrumente de acces la acestea: pentru a obţine valoarea câmpului respectiv (get) sau de a memora o anumită valoare în câmpul respectiv (set). i<nr_copii. Cum parametrul corespunzător valorii transmise nu apare în structura sintactică a metodei. this.WriteLine("{0} se joaca.} public void se_joaca(string jucaria) //nu permite redefinire18 {Console. poate să apară una singură dintre cele două metode de acces sau amândouă. Sintaxa: [atrib]o [modificatori]o [tip] [nume_proprietate] {[metode_de_acc es]o} Observaţiile privind modificatorii şi numele metodelor sunt valabile şi în cazul p roprietăţilor. string nume. Da că metoda de acces get este perfect asimilabilă cu o metodă ce retunează o valoare (valo area datei pe care vrem s-o obţinem sau valoarea ei modificată conform unei prelucrări suplimentare specifice problemei în cauză). Este o manieră de lucru recomandabilă aceea de a proteja datele membru (câmpur i) ale clasei.nume. Se va observă că proprietatea este moştenită şi de clasele derivate Fetita şi Băiat19.c.se_joac a(). Fetita sau Baiat?): for (int i=0.se_joaca().c. 19 18 . //polimorfism Pentru a evidenţia mai bine comportamentul polimorfic. Dacă proprietatea nu este abstractă sau externă.} set { nume = value. i++) copii[i]. sub forma unui şir de caractere. metoda set este asimilabilă cu o metodă car e un parametru de tip valoare (de intrare) şi care atribuie (sau nu. Metodele de acces sunt două: set şi get. Proprietăţi Proprietatea este un membru ce permite accesul controlat la datele-membru ale cl asei. public string nume.se_joaca("pisica"). public virtual void se_joaca() //vi rtual se poate suprascrie la derivare {Console. //polimorfism Baiat c = new Baiat(). //polimorfism Copil c = new Copil().} } class Baiat:Copil { public override void se_joaca() {Console. // este implicit protected public string Nu me //proprietatea Nume { get { if(char. Dacă se supune unor condiţii specifice problemei. în funcţie de con text) valoarea respectivă câmpului. în o ordine. else return nume.WriteLine("{0} leagana papusa. se face o atri buire de felul câmp=value.ToUpper().". jucaria)..this. propunem secvenţa următoare în ca re nu se ştie exact ce este obiectul copii[i] (de tip Copil.se_joaca() .n ume).11.se_joaca("calculatorul"). numele copilului respctiv ..WriteLine("{0} chinuie pi sica.} //supraîncărcarea metodei se_ joaca } class Fetita:Copil { public override void se_joaca() //redefinire compor tament polimorfic {Console.nume). public class Copil {.". this.W riteLine("{0} se joaca cu {1}. } } Decât cu ajutorul modificatorului new pe ntru metoda respectivă în clasa derivată Desigur că proprietatea care controlează accesul la câmpul identificat prin nume se poate numi cu totul altfel (proprietatea Nume f iind uşor de confundat cu câmpul de date nume).".c. 1.".Programarea Orientată Obiect (POO) 9 Definirea datelor şi metodelor nestatice corespunzătoare clasei Copil şi claselor deri vate public class Copil { .nume).c.this.... este de stiut că el este implicit identificat prin cuvântul value.c. Definirea în clasa Copil a proprietăţii Nume.se_joaca.IsUpper(nume[0]))return nume.

10). public int[] v=new int[nmax].Write("{0}. } publ ic void scrie() { for (int i = 0.else return false. C onsole.} atunci o secvenţă de prelucrare aplicativă ar putea fi: De observat că în exemplul anterior (subcapitolul 1. i < nmax. Iar metodele şi cons tructorii foloseau identificatorul nume şi nu proprietatea Nume. } public bool aranj(pereche_ok ok)//ok e o delegare către o fu ncţie necunoscută { for (int i = 0. dacă dori m să definim o metodă asociată unui vector de numere întregi. funcţia urm implementată la nivelul claselor interesate de evenimentul respectiv. i < nmax-1. Este modul p rin care se realizează comunicarea între obiecte. public class Vector { pub lic const int nmax = 4. object t2). adi că o referinţă către o funcţie necunoscută căreia i se precizează doar antetul.". din spaţiul System. adică să anunţe celelalte obiecte asupra unor schimbări petrecute la nivelu stării lor. Sintaxa: [atrib]o [modificatori]o event [tip_delega t] [nume] Modificatorii permişi sunt aceiaşi ca şi la metode. ". Prezentăm în continuare un exemplu.5).} }20 //metoda set //metoda get 1. implementare ”generică” se poate realiza folosind delegări: public delegate bool pereche_ok(object t1.} } class Fetita:Copil { public overri de void se_joaca() {Console. object t2) {if ((int)t1 <= (int)t2) return true.else return false. metodă ce verifică dacă vecto este o succesiune ”bine aranjată” (orice două valori succesive respectă o anumită regulă). v[i]). public Vector() { Random r and = new Random(). derivat din clasa sigilată Delegate. Tehnica prin care clasele implemen tează metode (handler-e) ce răspund la evenimente generate de alte clase poartă numele de tratare a evenimentelor.} public static bool f2(object t1. for (int i = 0. return true. pentru a permite accesul ”general” la câmpul respectiv de date. De exemplu. i++) Console. Definirea unui tip delegat se realizează prin declararea: [atrib]o [modificatori] o delegate [tip_rezultat] [nume_delegat] ([listă_param_formali]o) Un delegat se po ate defini şi în afara clasei generatoare de evenimente şi poate servi şi altor scopuri în afara tratării evenimentelor. i++) if (!ok(v[i].10 POO şi Programare vizuală (suport de curs) public Copil() {Nume = Console. v[i + 1])) return false. Evenimente şi delegări Evenimentele sunt membri ai unei clase ce permit clasei sau obiectelor clasei să f acă notificări.Next(0.12. Tipul delegat este un ti p de date ca oricare altul.this. i++) v[i] = rand. object t2) {if ((int)t1 >= (int)t2) return true . Clasa furnizoare a unui eveniment publică (pune la dispoziţia altor clase ) acest lucru printr-o declarare event care asociază evenimentului un delegat.WriteLine(). 21 Independent de definiţia clasei Vector 20 .ReadLine(). i < nmax. } } Dacă în clasa-program21 se adugă funcţiile (exprimând două “reguli de aranjare” posibile) public static bool f1(object t1. câmpul nume era declarat publ ic.Nume).WriteLine("{0} leagana papusa.

atu nci o clasă VENIT nu este posibilă. asemănătoare unei clase.KeyCar!=’\x001B’). ce declară prin membrii săi (metode. la interschimbarea valorilor a do uă componente se invocă delegatul E. Se defineşte un tip delegat TD (să zicem) cu nişte parametri de intere s22 şi un eveniment care are ca asociat un delegat E (de tip TD)23. în care AVERE este o clasă abstractă. do { x =new Vector().WriteLine("Monoton descrescator"). proprietăţi.Programarea Orientată Obiect (POO) static void Main(string[] args) { Vector x.aranj(f2))Console. Interfeţe Interfeţele sunt foarte importante în programarea orientată pe obiecte. } while (Console. //E scape } 11 Revenind la evenimente. if ( x. dacă vom consid era arborele din figura următoare. descriem pe scurt un exemplu teoretic de declarare şi trat are a unui eveniment.aranj(f1))Console. Orice obiect x din clasa Vector are un membru E (iniţial null). O clasă C interesată să fie înştiinţată c face vreo interschimbare într-un vector pentru a genera o animaţie (de exemplu). va implementa o metodă M ce realizează animaţia şi va adăuga pe M (prin intermediul unui dele gat) la x. iar moştenirea multiplă nu este admisă în C#. dividende) • calc() 22 23 De exmplu indicii componentelor interschimbate A se observa că evenimentul în sine e ste anonim.W riteLine("Monoton crescator").13. comportament care nu se poate defini prin ierarhia de clase a aplicaţiei.scrie(). evenime şi indexatori) un ”comportament” unitar aplicabil mai multor clase.x. În clasa Vector.E+=new [tip_delegat](M) . AVERE Proprietate Imobiliara Teren Productiv Neproductiv Imobil De_folosinţă I_inchiriat Bani Bun Depunere B_inchiriat Mobilier Altul Investiţie Credit_primit Actiune Cotă Credit_acordat VENITURI (din produse. din chirii. când pare mult mai simplu să apelăm direct metoda M la orice intersch imbare? 1.E ajunge un fel de listă de m etode (handlere). Cumulând mai multe astfel de referinţe. x.E24. doar delegatul asociat are nume 24 într-o atribuire de felul x. din dobânzi.O interfaţă este o componentă a apl icaţiei. iar derivarea c laselor a fost concepută urmărind proprietăţile comune ale componentelor unei averi. Care credeţi că sunt motivele pentru care apelăm la evenim ente în acest caz. deoarece ea ar moşteni de la toate clasele evidenţia te. deoarece permi t utilizarea polimorfismului într-un sens mai extins. Invocarea lui E realizaeză de fapt activearea tut uror metodelor adăugate la E.ReadKey(true). if (x. în metoda sort. De exemplu. În clasa Vector se consideră că interschimbarea valorilor a două c omponente ale unui vector e un eveniment de interes pentru alte obiecte sau clas e ale aplicaţiei.

calc(). evident. Nu există instanţiere în cazul interfeţelor.12 POO şi Programare vizuală (suport de curs) Pentru metodele din cadrul unei interfeţe nu se dă nici o implementare.} Spaţiul Threading mai oferă facilităţi de schimbare a priorităţilor prelucrărilor din fire alele. Acele clase care ”aderă” la o interfaţă spunem că ”implementează” interfaţa respectivă Dacă rfic spunem că Investiţie este şi de tip Bani şi de tip Avere. tot aşa putem spune că o cla care implementează interfaţa VENIT şi clasele derivate din ea sunt şi de tip VENIT 26 25         . i++)Console. Write( 1 ).Depunere dep=new Depunere(). atunci pentru o avere cu acţiuni la două firme. În exemplul nostru. . de delimitare a secvenţelor critice. de aşteptare şi semnalizare folosind semaf oare etc.calc()+casa.Threading. care utilizează s paţiul System. metodele respective. 1. venituri[3] = dep. dar le pot şi redefini (de exemplu.Write( 2 ). dar se admit derivări. for (int i = 1. Thread fir = new Thread(delegat). Toate clasele care moşt nesc dintr-o clasă care implementează o interfaţă moştenesc. int t=0. În exemplul următor. la intervale de ti mp ce se pot seta. i <=300. for(i=0. i <= 500.calc(). venituri[1] = act2.i<4.Actiune act2 = new Actiune(). Fire de execuţie Programarea prelucrărilor unei aplicaţii pe mai multe fire de execuţie (multithreading ) presupune ”descompunerea” ansamblului de prelucrări în secvenţe. afişarea succesivă a unor secvenţe de 1 şi de 2 demonstrază ”comut a” executării de pe un fir pe altul la intervale relativ constante de timp: static void scrie2() { for (int i = 1.14. venituri[0] = act1.i++) t+=v[i]. În orice pu l prelucrării de pe un fir de execuţie se poate genera un nou fir (thread) căruia i se asociază un subprogram cu ajutorul unui delegat. generează un eveniment (Tick) ”sesizat” şi exploatat de prelucrarea d in firul principal. venituri[2] = casa.ReadKey().calc()+act2. i++) Console.Start(). fir. clasa Credit_acordat redefineşte metoda calc di n clasa Investiţie. I_inchiriat casa = ne w I_inchiriat(). ci sunt pur şi simplu specificate. putem determina venitul total: Actiune act1 = new Actiune(). unde a. fiecare dintre clasel e care implementează interfaţa VENIT fiind obligată să furnizeze o implementare (după o fo rmulă de calcul specifică) pentru metoda calc din interfaţă. O clasă sigilată folosită curent în aplicaţii (Timer) permite implementarea unui ceas care funcţionează pe un fir paralel cu aplicaţia curentă şi care. . dacă presupunem că toate clasele subliniate implementează interfaţa VEN IT. un imobil închiriat şi o depunere la bancă. Găsiţi două motive pentru care interfaţa VENIT şi rezovarea de mai sus oferă o soluţie mai decât: t=act1. Orice clasă care doreşte să ad la interfaţă trebuie să implementeze toate metodele din interfaţă. se poate defini o interfaţă VENIT care să conţină antetul unei metode calc (să zicem) pentru calculul venitului obţinut. unele dintre ele ”planif cându-se” a fi prelucrate paralel (cvasi-simultan) de către procesor în vederea utilizării eficiente a acestuia. Console. citire a citire b Schema alăturată este o posibilă Z a Y U Z-X plani icare a procesului de calcul al expresiei a (b+c)-b b. implementarea lor fiind furnizată de unele dintre clasele apl icaţiei25.} static void Main(string[] args) { ThreadStart delegat = new ThreadStart(scrie2). Venit[] venituri = new Venit()[4]. deoarece formula de calcul implementată acolo nu i se ”potriveşte” şi e 26).calc()+dep. inclusiv moş iri multiple.. b şi c sunt citire c X b b Y b+c nişte matrice pătrate ale căror componente se găsesc în fişiere separate. De exemplu.

Smalltalk. indiferent de limbajul de programare utilizat.NET Passport . XML. interf eţe.NET Framework este formată din compilatoare. email.NET toate aceste limbaje respectă nişte specifi caţii OOP numite Common Type System (CTS). validări de t ipuri. utilizată de toate cele 4 limbaje. Pentru a fi integrate în platforma . NET\Framework\V2.NET. Ele au ca elemente de bază: clase. până la Wind ows 98 inclusiv. • un set de medii de dezvoltare (Visual Studio .0 vine cu Windows Server 2003 şi Windows XP SP2 şi se poate instala pe versiunile anterioare. Când dezvoltăm aplicaţii . delegări. Smart Display.NET. UDDI) şi limba je de programare (VB.NET pune laolaltă mai multe tehnologii (ASP. aplicaţii B2B (Bussiness to Bussiness – comerţ electronic între partenerii unei afaceri).) 2. Exchange 2000 e tc). Tablet PC. J#. (corespunzător versiunii instalate) Data and XML classes (ADO. De fapt. distribuirea şi rularea aplicaţiilor-desktop Windows şi aplicaţiilor WEB. biblioteci şi alte executab ile utile în rularea aplicaţiilor . Tehnologi a . • Platforma comună de executare a programelor numită Common Language Run time (CLR). Pentru a dezvol ta aplicatii pe platforma . cât şi reutilizarea codului în progr ame.NET. putem utiliza: • Servere specializate un set de servere Enterprise . Smartphone.1. fire de execuţie. care pun la dispoziţie funcţii de stocare a bazelor de date. Pascal etc).NET Framework este o compon entă livrată înpreună cu sistemul de operare Windows.Platforma . tipuri valoare şi referinţă. Cobo l. Arhite ctura . polimorfism şi tra ea excepţiilor. Managed C++. SQL. colecţii etc. securi tate.NET este bine sa avem 3 componente esenţiale: • un set de limbaje (C#.2.NET 3. Fişierele corespunzătoare se află. WDSL. Prezentare . . VB. XBox.NET este un cadru (framework) de dezvoltare software unitară care permite realiza rea. .) Common Language Runtime (execepţii. în general. . Visual Basic .NET. SOAP. J#) asigurând totodată atât portabilitatea codului comp ilat între diferite calculatoare cu sistem Windows. C#. . • şi o bibliotecă de clase pentru crearea serviciilor Web.NET (din familia SQL Server 2000.0 vine instalat pe Windows Vista şi poate fi instalat pe v ersiunile Windows XP cu SP2 şi Windows Server 2003 cu minimum SP1. • Servicii Web (în special comerciale). în d ctorul WINDOWS\Microsoft.) Framework Base Classes (IO.NET.NET.un mod de autentificare folosind un singur nume şi o parolă pentru toate ste-urile vizitate) • Servicii incluse pentru dispozitive non -PC (Pocket PC Phone Edition. Perl.NET 13 2.NET 2. XML etc. este ultima interfaţă între apli caţiile . aplicaţiilor Web şi aplicaţiilo desktop Windows. utile în aplicaţii care necesită identificarea utilizatoril or (de exemplu. etc.NET Framework Componenta .NET.compilatoare JIT) CLR FCL .NET 2.NET Framework Servicii WEB Formulare Componenta . Visio).NET Framework stă la baza tehnologiei .NET şi sistemul de operare şi actualmente conţine: • Limbajele C#. Platforma . set-to p boxes.0…. . iar ca mecanisme: moştenire. C++. Fortran. C++ şi #. Lisp. OOP. • Ansamblul de biblioteci necesare în r ealizarea aplicaţiilor desktop sau Web numit Framework Class Library (FCL).

şi 12 tipuri de date predefinite.0).com/Main_Page ). Ca un element de portabilitate. Compilatorul JIT analizează codul IL corespunzător apelului unei metode şi produce codul maşină adecvat şi eficient. MOSTENIRE.NET să fie din ce în ce mai rapide.1. 3. } } . ce execută instrucţi L rezultate în urma compilării.NET conform Common Language Specificat ion (CLS) este compilat în Microsoft Intermediate Language (MSIL sau IL). Compilarea programelor Un program scris îıntr-unul dintre limbajele . modulară şi orientată obiectual. ceea ce face ca.3. El permite programarea structu rată.2. Codul as tfel obţinut are extensia exe. se scrie în Notepad programul: using System. limbajul moşteneşte sin taxa şi principiile de programare din C++.NET fiind acela de eliberare automată a zonelor de memorie asociate unor date devenite inutile – Garbage Collection). aplicaţiile . Principiile de bază ale programării pe obiecte (INCAPSULARE.14 POO şi Programare vizuală (suport de curs) 2. ci respectă formatul u nic MSIL. Faptul că programul IL produs de diferitele limbaje este foarte asemănător are ca rezultat interoperabil itatea între aceste limbaje. Console.ReadKey(true). CLR include o maşină virtuală asemănătoare cu o maşină Java.NET SDK (pentru 2. dar secvenţele de cod corespunzătoare se consid eră ”nesigure”. Limbajul C# 3.NET şi fără a dispune de mediul de dezvoltare Visual Studio.NET. conform perceptelor moderne ale programării profesi oniste. Unele funcţiuni (cum ar fi accesul direct la memori e folosind pointeri) au fost păstrate. Compilarea la linia de comandă Se pot dezvolta aplicaţii . interfeţe şi delegări). în afară de Windows. Solaris. unele funcţiuni au fost adăugate (de exemplu. modificate (tipul string) sau chiar eliminate (moştenirea multiplă şi pointerii către funcţii). class primul { static void Main() { Console. apoi se compilează la linie de comandă. iar în spiritul realizării unor secvenţe de cod sigure (safe).0 şi pentru 3. şi pe unele t ipuri de Unix. fişierele se salvează cu extensia cs. În plus. Astfel. codul se scrie în orice editor de text. În mare. dar nu este direct executabil. trebuie spus că CTS are o arhitectură ce permite rularea aplicaţiilor .NET pot fi utilizate cu succes într-un program scris în alt limbaj. Maşina foloseşte un compilator special JIT (Just In Time ). Sunt o serie de tipuri noi de date sau funcţiuni diferite ale datelor din C++. Astfel. diver sificate (tipul struct). Mac OS X şi alte sisteme de operare (http://www. echipă din care s-a evidenţiat Anders Hejlsberg (autorul limbajului Turbo Pascal şi membru al echipei care a proiectat Borland Delphi).mon o-project. clasele şi obiectele create într-un limbaj specif ic .WriteLine("Primul prog ram"). cu circa 80 de cuvinte cheie. CLR s e ocupă de gestionarea automată a memoriei (un mecanism implementat în platforma . În acest caz. El recunoaşte secvenţele de cod pentru care s-a obţinut d ja codul maşină adecvat permiţând reutilizarea acestuia fără recompilare. POLI MORFISM) sunt elemente fundamentale ale programării C#. ci numai de . Caracterizare Limbajul C# fost dezvoltat de o echipă restrânsă de ingineri de la Microsoft. 3. C# este un limbaj simplu. e parcursul rulării. Linux.

com/vstudio/express/downloads/default.cs se va obţine fişierul primul. Încetarea urmăririi pas cu pas (Stop Debugging Shift+F5) permite i eşirea din modul depanare şi revenirea la modul normal de lucru. În scrierea programului suntem asistati de IntelliSense.NET. . după care.3. Crearea aplicaţiilor consolă Pentru a realiza aplicaţii în mediul de dezvoltare Visual Studio. Fereastra în care scriem programul se numeşte im plicit Programs.cs. eventual versiunea free Microsoft Visual C# 2005 Express Ed ition de la adresa http://msdn. 3. la Name. Efectuând dublu click pe fiecare eroare în parte.0.a spx. Extensia c s provine de la C Sharp. selectăm pictograma Console Application.Limbajul C# 15 Dacă se salvează fişierul primul. Pentru început. alegem opţiunea New Project din meniul File. în directorul WINDOWS\Microsoft. Toate opţiunile de ru lare şi depanare se găsesc în meniul Debug al meniului.NET\Framework\V2. Rularea programului se poate realiza în mai multe moduri: rapid fără asistenţă de depanare (Start Without Debugging Shift+F5) . Compilarea programului se realizează cu ajutorul opţiunii Build Solution (F6) din meniul Build. Fereastra de cod şi ferestrele a uxiliare ce ne ajută în etapa de editare pot fi vizualizate alegând opţiunea corespunzătoa re din meniul View.microsoft. rulare pas cu pas (Step Into F11 şi Step Over F12) sau rulare rapidă până la lin ia marcată ca punct de întrerupere (Toggle Breakpoint F9 pe linia respectivă şi apoi Sta rt Debugging F5). Ferestrele auxiliare utile în etapa de depanare se pot vizuali za alegând opţiunea corespunzătoare din meniul Debug/Windows. trebuie să instalăm o versiune a acestuia.cs şi se poate modifica prin salvare explicită (Save As). rapid cu asistenţă de depanare (Start Debugging F5 sau cu butonul din bara de instru mente). ajutorul contextual. putem realiza aplicaţii consolă (ca şi cele din Borland Pascal sau Borland C). După lansare.exe di rect executabil pe o platformă . atunci scriind la linia de comandă: csc primul. cursorul din pr ogram se poziţionează pe linia conţinând eroarea. introducem numele aplicaţiei noastre. În fereastra de dialog (vezi figura). Posibilele erori de compilare sunt listate în fer eastra Error List.

Vocabularul limbajului est e format din acele ”simboluri”27 cu semnificaţii lexicale în scrierea programelor: cuvin te (nume). } } } O aplicatie C# este formată din una sau mai multe clase. HelloW orld.metodă sau spaţiu. pentru afişarea mesajului dorit pe ecran. „punctul de intrare” în program linia 9: clasa C onsole. deducem că definiţia clasei Console trebuie să se găsească în spaţiul System. cla sa aparţine unui spaţiu de nume neinclus în fişierul curent.clasă. Un spaţiu de nume cuprinde mai multe clase cu nume diferite având funcţiona lităţi înrudite.Program este numele cu specificaţie completă al clasei Program. Î rul nostru se află două spaţii de nume: unul definit (HelloWorld) şi unul extern inclus prin directiva using (System). cu separatorul punct). limbajul C# are un alfabet format din litere mari şi mici ale alfabetului englez. linia 3: spaţiul nostru de nume linia 5: orice program C# este alcătuit din una sau mai multe clase linia 7: metoda Main. Apelarea unei metode în cadrul clasei în care a fost def inită aceasta presupune specificarea numelui metodei. ca şi pentru o ap licaţie Windows de altfel. namespace HelloWorld { class Program { static void Main() { Console. 27 Este un termen folosit un pic echivoc şi provenit din traduceriea cuvântului ”token” . grupate în spaţii de nume (na mespaces). şi anume metoda (funcţia) Main.WriteLine("Hello World!"). În cazul nostru se va folosi clasa Console. 3. expresii. Două clase pot avea acelaşi nume cu condiţia ca ele să fie definite în spa nume diferite. Sintaxa limbajului Ca şi limbajul C++ cu care se înrudeşte. Structura unui program C# Să începem cu exemplul clasic “Hello World” adaptat la limbajul C#: 1 2 3 4 5 6 7 8 9 10 11 12 using System. iar parţi ale unui aceeaşi spaţiu de n ume se pot regăsi în mai multe assembly-uri.clasă. Să programul de mai sus: linia 1: este o directivă care specifică faptul că se vor folosi clase incluse în spaţiul de nume System. Apelul unei metode definite în interiorul unei clase poate fi invocată şi din interiorul altei clase.spaţiu.5. Console. cifre şi alte semne. atunci este necesară precizar ea tuturor componentelor numelui: spaţiu. În cadrul aceluiaşi spaţiu de nume poate apărea definiţia unui alt spaţiu de nume. este folosită pentru operaţiile de intrare/ieşire. este obligatoriu ca una (şi numai una) dintre clasele apl icaţiei să conţină un „punct de intrare” (entry point).4. caz în care es te necesară specificarea clasei şi apoi a metodei separate prin punct. În exemplul nostru. Într-un ass embly se pot implementa mai multe spaţii de nume. O clasă poate fi identif icată prin numele complet (nume precedat de numele spaţiului sau spaţiilor de nume din care face parte clasa respectivă. Pentru a faci a cooperarea mai multor programatori la realizarea unei aplicaţii complexe.16 POO şi Programare vizuală (suport de curs) 3.metodă etc. Pentru o aplicaţie consolă. Aici se ape lează metoda WriteLine din acestă clasă. Cum în spaţiul de nume curent este definită doar clasa Program. caz în care avem de-a face cu spaţii de nume imbricate. O clasă este form ată din date şi metode (funcţii). există p osibilitatea de a segmenta aplicaţia în mai multe fişiere numite assemblies. delimitatori şi comentarii. amintită mai sus. Dacă în plus. separatori.Writeln reprezintă apelul metodei Writeln d efinită în clasa Console.

Tipuri de date În C# există două categorii de tipuri de date: • tipuri valoare tipul simple: byte. iar */ sfârşitul respectivului comentariu. din acel loc. • 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 numai dacă sunt precedate 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 p ume: • în cazul numelor claselor. delimitatorii de instrucţiuni. cifre sau n caracter de subliniere. /* Acesta este un comentariu care se intinde pe mai multe randuri */ Nume Prin nume dat unei variabile. de şiruri de caractere etc . până la sfârşitul rândului drept comentariu // Acesta este un comentariu pe un singur rand • comentariu pe mai multe rânduri prin folosirea /* şi */ Orice text cuprins între simbo lurile menţionate mai sus se consideră a fi comentariu. sunt în mare aceiaşi ca şi în cazul limbajului C++. paţiilor de nume. fiecare cuvânt care compune numele începe cu majusculă • în cazul numelor variabilelor dacă numele este compus din mai multe cuvinte. celelalte cu majusculă Cuvinte cheie în C# abstract as base bool break byte case c atch char checked class const continue decimal default delegate do double else e num event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out o verride params private protected public readonly ref return sbyte sealed short s izeof stackalloc static string struct switch this throw true try typeof uint ulo ng unchecked unsafe ushort using virtual void volatile while Simbolurile lexical e reprezentând constante. metode etc. tipul enumerare . de blocuri de instrucţiuni. a proprietăţilor. clase.6. metodelor. Simbolurile /* reprezintă începu tul comentariului. primul începe cu minuscu lă. float etc. regulile de formare a expresiilor.struct . 3. înţelegem o succesiune de cara ctere care îndeplineşte următoarele reguli: • numele trebuie să înceapă cu o literă sau cu dintre caracterele ”_” şi ”@”. separatorii de liste. • primul caracter poate fi urmat numai de litere. char . interfeţelor. enumerărilor.enum tipul structură . int.Limbajul C# 17 • Comentarii comentariu pe un rând prin folosirea // Tot ce urmează după caracterele // sunt considerate.

234D. 79 228162514264337593543950335 tip caracter din setul Unicode. Tipuri simple predefinite Tip object string sbyte short i nt long Descriere rădăcina oricărui tip secvenţă de caractere Unicode tip întreg cu semn.234M. pe 16 biţi char decima l tip zecimal. Limbajul C# conţine un set de tipuri predefinite (int. U long. long b = 13L.interface tipul delegat . pe -1. 922337203 6854775807 tip întreg fără semn.ValueType. ulong d = 15U. ulong f = 17UL. double i = 1. ulong nu are uint. ulong c = 12. bool cond1 = t rue.234. ushort tip întreg fără semn. bool etc.delegate tipul tablou . long. pe 16 biţi 0. 3 . double h = 1. dublă precizie. pe 128 biţi (96 pentru mantisă).402823E+38 float 32 biţi (8 pentru exponent. lU. pe 32 biţi 0.79769313486232E+308 tip boolean bool 79228162514264337593543950335.Object). 21447483647 -9223372036854775808. LU.array Toate tipurile de date sunt derivate din tipul System. pe 64 biţ 18446744073709551615 ulong tip cu virgulă mobilă.234F.).18 • POO şi Programare vizuală (suport de curs) tipuri referinţă tipul clasă . 127 -32768.79769313486232E+308. derivată la rându l ei din clasa Object (alias pentru System. 64 biţi (11 pentru exponent. 32767 -2147483648. Ul. p 8 biţi tip întreg cu semn. 255 byte tip întreg fără semn. 28 de cifre semnificative O valoare se asignează după următoarele reguli: Sufix Tip int. pe 8 biţi 0.Objec t Toate tipurile valoare sunt derivate din clasa System. 4294967295 uint tip întreg fără semn. ul ong u. pe 16 biţi tip întreg cu semn pe.class tipul interfaţă . ulong L. L ul. 24 pentru mantisă) double tip cu virgu lă mobilă.402823E+38.) şi permite definirea unor tipuri proprii (enum . struct. lu. 53 -m antisa) 1. UL. . ulong e = 16L. simplă precizie. bool cond2 = false. pe -3. Lu ulong Exemple: string s = “Sa lut!” long a = 10. 32 biţi tip întreg cu semn. uint. float g = 1. class etc. decimal j = 1. p 64 de biţi Domeniul de valori -128.

sunt asociate unor valori numerice. Decla rarea unui tip enumerare este de forma: enum [Nume_tip] [: Tip]o { [identificator1][=valoare]o. nu se sp ecifică tipul de bază al enumerării. iar fiecare variabilă care urmează are valoarea (implicită) mai mare cu o unitate decât precedenta.2.").3}. Septembrie. este necesară o operaţie de instanţiere: nume = new Tip[NumarElemente]. Decembrie } static void Main(string[] args) { Console. //new este implicit .. nu se alocă spaţiu pentru memorare. instanţierea şi chiar iniţializarea tabloului se pot face în aceeaşi instrucţiu e: Exemplu: int[] v = new int[] {1. la declarare. Prin aceasta.. atunci acesta este considerat implicit int. Iulie. Console.ReadLine(). Tablo uri Declararea unui tablou unidimensional: Tip[] nume. Declararea. . (int)lunaAnului. sau int[] v = {1. Februarie. August. Toate compone ntele enumerate au un acelaşi tip de bază întreg. Iunie. Martie. Pentru a putea reţine date în structur a de tip tablou. Aprilie. Octombrie .Mai + "a luna din an.2.WriteLine("Lu na Mai este a ".Limbajul C# 19 Tipul enumerare Tipul enumerare este un tip de finit de utilizator. În cazul în care. } } } În urma rulării programului se afişează mesajul : Luna Mai este a 5 a luna din an. Valorile folosite pentru iniţializări trebuie să facă parte din domeniul de valori decl arat al tipului Nu se admit referinţe circulare: enum ValoriCirculare { a = b.3}. Acest tip pe rmite utilizarea numelor care. [identificatorn][=va loare]o } • • • Observaţii: În mod implicit valoarea primului membru al enumerării este 0. namespace tipulEnum { class Program { enum lunaAnului { Ianuarie = 1. Mai. b } Exemplu: using System. Noiembrie.

8.3}.{7.. Declarare în cazul tablourilor neregulate bidimensionale: Tip[][] nume.8.2..1} }. Acces: nume[indice1. nume[0]=new Tip[Coloane1] . Secvenţă escape \’ \” \\ \0 \a \b \f \n \r \t \u \v \x Efect apostrof ghilimele back slash null alarmă backspace form feed – pagină nouă new line – linie nouă carriage return – put de rând horizontal tab – tab orizontal caracter unicode vertical tab – tab vertica l caracter hexazecimal . 5.6}.[].3}. caracterul apostrof.2.20 POO şi Programare vizuală (suport de curs) În cazul tablourilor cu mai multe dimensiuni facem distincţie între tablouri regulate şi tablouri neregulate (tablouri de tablouri) Declarare în cazul tablourilor regulat e bidimensionale: Tip[.9}}.{4.] mat = {{1.3}. 8. nume[Linii-1]=new Tip[Co loaneLinii-1] Acces: nume[indice1][indice2] Exemple: int[][] mat = new int[][] { new int[3] {1.new int[4] {7.6}. inclusiv secvenţe escape. Intanţiere: nume = new Tip[Linii. Şiruri de caractere Se definesc două tipuri de şiruri: • regulate • de tip „verbatim” Tipul gulat conţine între ghilimele zero sau mai multe caractere.indice2] Exemple: int[.] nume.9}}.1}}. new int[2] {4.] {{1.] mat = new int[.{4.5}.5.2.9 .3}. Secvenţele escape permit reprezentarea caracterelor care nu au reprezentare grafică precum şi reprezentarea unor caractere speciale: backslash.{7. e tc. sau int[][] mat={new int[3] {1. sau int[.new int[2] {4. Intanţiere: nume = new Tip[Linii].9.2.Coloane]. new int[4] {7.5}.8.

double. decimal short. long. Console.WriteLine(b).ReadLine(). Ele se folosesc în special în cazul în care dorim să facem referiri la fişiere şi la regiştri. Conversia implicită se efectuează (automat) doar dacă nu este afectată valoarea conver tită. decimal double float. Console. float. decimal int. double.cs 3. fl oat. decimal Conversia explicită se realizează prin intermediul unei expresii cast.cs c: \exemple\unu. long. float. float. string b = "linia unu \nlinia do i". int.WriteLine(e). ulong. decimal float. string c = @"linia unu linia doi". c=char(i). int. Exemplu: int i=Console. Console. long.cs". deci mal long. double.Read(). double.Writ eLine(c). long. Un astfel de ş cepe întotdeauna cu simbolul’@’ înaintea ghilimelelor de început. float. Console. uint. Exemplu: using System. long. string d="c:\\exemple\\unu. Regulile de conversie implicită sunt descrise de tabelul următor: din sbyte byte short ushort int uint long char float ulong în short. char c. string e = @"c:\exemple\unu. uint. ushort.7. float. decimal long. putem utiliza şirurile verbatim. double. . decimal ushort. ulong. Console. atunci când nu există posibilitatea unei conversii implicite.cs". ulong.Limbajul C# 21 În cazul în care folosim multe secvenţe escape. Console. uint. double. inclusiv caracterul EOLN.WriteLine(a). double. int. decim al int. double. namespace SiruriDeCaractere { class Program { static void Main(str ing[] args) { string a = "un sir de caractere".WriteLine(d). Conversii Conversii numerice În C# există două tipuri de conversii numerice: • implicite • explicite . } } } Programul va avea ieşirea un sir de caractere linia unu linia doi linia unu linia doi c:\exemple\unu. doub le. Aceste şi ruri pot să conţină orice fel de caractere. float. ulong.

În C# sunt definiţi mai mulţi operatori. constanta nu a fost initializata //core ct 3. Constantele declarate cu const trebuie să fie iniţializate la de clararea lor. i = (int)ob. fie o referinţă la u biect. const int x = 13. Exemple: int Salut. 3. Un operator este un simbol ce indică acţiunea care se efectuează. În cazul în care într-o expre u intervin paranteze.new typeo f sizeof checked unchecked -> + . object ob = i. object ob = i. evaluarea expresiei se realizează d e la stânga la dreapta. Expresii şi operatori Prin expresie se înţelege o secvenţă formată din operatori şi operanzi. x++ x-.10. Exemple: const int x. care se păstrază în memoria heap. char caracter. În cazul în c re sunt mai mulţi operatori cu aceeaşi prioritate. care se păstrează pe stivă. object ob = (object)i.Object).9. se produce ambalarea în interiorul unei instanţe de tip referinţă. int Azi_si _maine. operaţiile se execută conform priorităţii operatorilor. Constante În C# există două modalităţi de declarare a constantelor: folosind const sau folosind modi ficatorul readonly. Prin conversia boxing a unui tip valoare. //boxing explicit sau int i = 13. la clasa Obje t. Unboxing permite convertirea unui obiect într-un tipul valoare corespunzător. Prioritate 0 1 2 3 4 5 6 Tip Primar Unar Multiplicativ Adi tiv De deplasare Relaţional De egalitate Operatori ( ) [ ] f() . Exe mplu: Prin boxing variabila i este asignata unui obiect ob: int i = 13. int i=13. iar operandul este valoarea asupra căreia se execută operaţia. //boxing implic it Prin conversia de tip unboxing. obiectul ob poate fi asignat variabilei întregi i: //boxing implicit //unboxing explicit 3. prin conversiile boxing (împachetare) şi unboxing (de spachetare) este permisă tratarea tipurilor valoare drept obiecte şi reciproc.8. Variabile O variabilă în C# poate să conţină fie o valoare a unui tip elementar.! ~ ++x --x (tip) true false & sizeof * / % + << >> < > <= >= is as == != Asociativi-tate → → → → → → → .22 POO şi Programare vizuală (suport de curs) Conversii boxing şi unboxing Datorită faptului că în C# toate tipurile sunt derivate din clasa Object (System. //gresit.

La fiecare iteraţie. Metodele uzuale ale claselor din spaţiul Collection sunt: Add. neputând fi modificat. Ea se foloseşte pentru a semnala contextul în care de exemplu. Instrucţunea foreach Cum instrucţiunile de apel. Fie vectorul nume format din şiruri de caractere: string[] nume={“Ana”. Colecţii O colecţie în C# este o clasă specializată pentru memorarea şi regăsirea rapidă a informaţi Ea implementează metode specifice de actualizare dinamică colecţiei.Collection.Write(“{0} ”. Cel mai des folosite sunt colecţiile de obiecte şi colecţiile generi ce (vezi capitolul 5. elementul curent a l colecţiei este de tip readonly. pentru prelucrarea sistematică a tuturor componentlelor unei ferestre (butoane. Amintim că în instrucţiunea repet itivă foreach se pot utiliza cu exact aceeaşi funcţionalitate instrucţiunile de salt bre ak şi continue.11.1) cum ar fi liste. Ionel”. Să afişam acest şir folosind instrucţiunea for: for(int i=0. } 3. 3.Limbajul C# 7 8 9 10 11 12 13 AND (SI) logic XOR (SAU exclusiv) logic OR (SAU) l ogic AND (SI) condiţional OR (SAU) condiţional Condiţional De atribuire & ^ && = *= /= %= += -= ^= &= <<= >>= = → → → → → ← ← 23 ?: 3.) 28 . IndexOf. “Maria”}. liste. stive. Pentru a vedea cum acţionează o vom compara cu instrucţiunea cunoscută for.Write(“{0} ”.12. Instrucţiunea foreach enumeră ele mentele dintr-o colecţie sau dintr-un tablou. Sort. ne oprim sumar numai unora dintre n oile structuri de control specifice limbajului C#. de căutare şi de enu merare a datelor. selecţie şi trei structuri repetitive coincid ca formă şi funcţionalitate cu cele din C. executând un bloc de instrucţiuni pentru fiecare element al colecţiei sau tabloului. Aceste clase pot fi de rivate pentru a obţine colecţii specializate care se potrivesc cel mai bine necesităţilo r de memorare a datelor specifice unei aplicaţii.Length. Instrucţiunile try-catch-finally şi throw Prin excepţie se înţelege un obiect care încapsulează informaţii despre situaţii anormale î cţionarea unui program. instrucţiunea se utilizează curent în aplicaţii pentru tablouri şi colecţii obiecte28. decizie. } Acelaşi rezultat îl obţinem folosind instrucţiunea foreach: foreach (string copil in nume) { Console.13. casete de text etc. i++) { Console. atribuire. nume[i]). Colecţiile sunt definite în spaţiul Sy stem. hash-uri. CopyToArray. Foreach etc. i<nume. Reverse. Re move. Find. copil).

ReadLine().WriteLine(b. Fetita.Exception şi derivate ale acesteia servesc la tratarea adecvată şi diversificată a e xcepţiilor. o ”aruncăm” în momentul neîndeplinirii unor condiţii puse asupra datelor. Aceste erori se pot manipula astfel încât programul să nu se termine abrupt. Console. using System. împărţire la 0 et . Clasa Sy tem. class tryCatch { static void Main(string[] args) { string s. else throw new Exception("Prea multi copii"). de a semenea. Exemplu: Considerăm clasele Copil. Console. Exemplu: using System.O penRead(s).IO. } catch (FileNotFoundException a) { Console. Sunt si tuaţii în care prefigurăm apariţia unei erori într-o secvenţă de prelucrare şi atunci integ venţa respectivă în blocul unei instrucţiuni try. De exemplu: erori la deschiderea unor fişiere.ToString()). } } Alteori putem simula prin program o stare de eroare ”aruncând” o excepţie (instrucţiunea t hrow) sau putem profita de mecanismul de tratare a erorilor pentru a implementa un sistem de validare a datelor prin generarea unei excepţii proprii pe care. } . } catch (PathTooLongException b) { Console. O posibilitate de validare la adăugara unui copil este aceea care gener ează o excepţie proprie la depăşirea dimensiunii vectorului static copii: public static void adaug_copil(Copil c) { if (nr_copii < nr_max) copii[nr_copii+ +] = c. Baiat definite fragmentat în ca pitolul 1. Console. try { File.WriteLine(a.Readln(s).ToString()). } finally { Console.24 POO şi Programare vizuală (suport de curs) apare o situaţie specială.WriteLine("Programul s-a sfarsit").Write("Numele fisierului:"). precizând una sau mai multe secvenţe de p ogram pentru tratarea excepţiilor apărute (blocuri catch) şi eventual o secvenţă comună car se execută după terminarea normală sau după ”recuperarea” programului din starea de excepţ (blocul finally).

Net. Concepte de bază ale programării vizuale Programarea vizuală trebuie privită ca un mod de proiectare a unui program prin oper are directă asupra unui set de elemente grafice (de aici vine denumirea de program are vizuală). încapsulează accesul la date). şi cu atât mai mult d espre baza de date sau fişierele pe care aceasta le utilizează. la alte ser vicii. Programare vizuală 4.1. ci presupune în principal stabilirea unor decizii arhitecturale30. b) Modelul arhitectural Mo del-view-controller Este caracterizat de cele trei concepte de bază : Model (repre zentarea datelor se realizează într-o manieră specifică aplicaţiei: conţine obiectele de „b ness”. Această ultimă structură este foarte bună pentru a organiza aplicaţiile. dacă în interfaţa cu utilizatorul prezentăm date sub formă istView şi la un moment dat clientul ne cere reprezentarea datelor într-un GridView. Se utilizează ades antonimia dintre vizual (operaţii asupra unor componente grafice) şi textual (scriere de linii de cod). hint etc. Nu cuprinde detalii despre logica aplicaţiei. Nivelul de acces la da te Aici rezidă codul care se ocupă cu accesul la baza de date. este for mat din Form-uri). click.Net rutează evenimentul către un „handler”. eveniment tratat în codul di spatele Form-urilor). o parte a codului este generată automat de Visual Stdio. Aici se efectuează calculele şi procesările şi se lucrează cu obiecte de tipuri definite de programator. la fişiere. 29 . vor forma programul. secvenţe care. Nivelul de logică a aplicaţiei Se ocupă de tot ceea ce este specific aplicaţiei care se dezvoltă.Programare vizuală 25 4. modificările la nivel de cod nu se pot localiza doar în interfaţă deoarece cele două cont roale au nevoie de modele de acces la date total diferite. View (sunt utilizate elemente de interfaţă. nu se vor folosi obiecte de tipuri definite de pr ogramator. De exemplu. dar nu est e uşor de realizat. c) Modelul arhitectural Multi-nivel Nivelul de prezentare ( interfaţa) Se ocupă numai de afişarea informaţiilor către utilizator şi captarea celor i troduse de acesta. împreună cu secvenţele scrise textual29. Această operare are ca efect scrierea automată a unor secvenţe de program. ci numai baza din . decizii ce au la bază unul din tre modelele arhitecturale de bază: a) Modelul arhitectural orientat pe date. codul nu este foarte uşor de întreţinut şi este recomandat pentru aplicaţii relativ mici s au cu multe operaţii de acces (in/out) la o bază de date.) Realizarea u nei aplicaţii vizuale nu constă doar în desenare şi aranjare de controale. timpul de dezvoltare al unei astfel de apli caţii este foarte mic. Cu alte cuvinte.NET. proiectarea oricărei aplicaţii ”vizuale” îmbină ambe tehnici. Aces t model nu este orientat pe obiecte. în ca drul interfeţei cu utilizatorul. Controller( procesează şi răspunde la evenimente iar SO. Spunem că o aplicaţie este vizuală dacă dispune de o interfaţă grafică sugestivă şi pune la dispoziţia torului instrumente specifice de utilizare (drag. 30 Deciziile arhitecturale stabilesc în principal cum se leagă interfaţa de r estul aplicaţiei şi cât de uşor de întreţinut este codul rezultat. clasele Fo rm şi Control din .

metode de lucru cu apl caţia şi altele. O aplicaţie Windows conţine cel puţin o fereastră (Form) în care se poate c rea o interfaţă cu utilizatorul aplicaţiei.Run(new Form1()). trebuie decidem cum va arăta aceasta. Componentele vizuale ale aplicaţiei pot fi p relucrate în modul Designer (Shift+F7) pentru a plasa noi obiecte.2. cu metoda st atică ce constituie punctul de intrare (de lansare) a aplicaţiei: static void Main() { .NET generează un spaţiu de nume ce conţine clasa statică Program. Toolbox conţine controale standard d ragand-drop şi componente utilizate în crearea aplicaţiei Windows. ceea ce permite crearea aplicaţiilor în mod interactiv. Solution Explorer şi celelalte se află grupate în meniul View. este vitală culegerea de informaţii despre utilizator ii finali ai aplicaţiei şi a modului în care aceştia sunt obişnuiţi să lucreze.cs este formularul creat implicit de Visual St udio.NET le-a inclus în proiect. Application. • Poziţia c elor Locaţia controalelor dintr-o fereastră trebuie să reflecte importanţa relativă şi frec enţa de utilizare. Codul ”din spatele” unei componente vizuale este accesibil în modul Code (F7). rapid şi uşor. Astfel. Code. în realizarea aplicaţiei mai trebuie respec tate şi principiile proiectării interfeţelor: • Simplitatea Interfaţa trebuie să fie cât ma r de înţeles31 şi de învăţat de către utilizator şi să permită acestuia să efectueze operaţ timp cât mai scurt. Designer. o fereas tră supra-încărcată de controale o face greu de utilizat. punând la dispoziţie proprietăţi pentru a obţine informaţii despre aplicaţie. Pentr u a construi o aplicaţie Windows (File New Project) se selectează ca template Window s Application. Mediul de dezvoltare Visual C# Mediul de dezvoltare Microsoft Visual C# dispune de instrumente specializate de proiectare. La crearea unei noi aplicaţii vizuale.. Form1. Metoda R un invocată Întrucât mintea umană poate să perceapă la un moment dat aproximativ 5-9 obiecte. când un utilizator trebuie să introducă nişte informaţii – unele ligatorii şi altele opţionale – este indicat să organizăm controalele astfel încât primele e cele care preiau informaţii obligatorii. să definim „template”-ul . În acest sens. 31 . • Consistenţa Ferestrele şi controalele trebu ie să fie afişate după un design asemănător („template”) pe parcursul utilizării aplicaţiei de a implementa interfaţa. Visu al Studio. Controalele sunt gr upate în categoriile logice din imaginea alăturată.. 4. • Estetica Intefaţa trebuie să fie pe cât posibil plăcută şi atrăgătoare. } Clasa Application este responsabilă cu administrarea unei aplicaţii Windows. a le stabili pr oprietăţile etc. Fereastra Properties este utilizată pentru a vizu aliza şi eventual schimba proprietăţile obiectelor. Toate metodele şi proprietăţile clasei Application sunt statice. În fereastra Solution Explorer sunt afişate toate fişierele pe care Visual Studi o.NET ca parte a proiectului.26 POO şi Programare vizuală (suport de curs) Indiferent de modelul arhitectural ales.

form.Windows.Forms. Pentr u a ascunde un formular putem folosi : this. } F_nou form=new F_nou(). generat automat pe măsură ce noi desemnăm componentele şi comportamentul acesteia.ShowDialog(). casete de text (System. F_nou form = new F_nou().Visible = false. cu asistenţă de depana e sau nu (opţiunile Start din meniul Debug). trebuie să scriem noi codul ce realizează instanţierea.Button). clasă care este înzestrată cu o c olecţie de controale (iniţial vidă). Activarea propietaru lui unui formular deschis modal va determina activarea formularului deschis moda l. Cla sele derivate din Form moştenesc o serie de proprietăţi care determină atributele vizual e ale ferestrei (stilul marginilor.ShowDialog () cu proprietarul ca argument.Forms. Click etc. set. Ferestre auxiliare de urmărire sunt vizualizate automat în tim pul procesului de depanare.Owner = this. Constructorul ferestrei realizază instanţieri ale cla selor Button. Show(). O fereastră poate fi a ctivată cu form.Forms. Dacă nu.Windows.Hide(). formularul având dimensiunile şi locaţia stabilite de programator (WindowsDefaultLocation) sau Wi ndows-ul va stabili dimensiunea iniţială şi locaţia pentru formular (WindowsDefaultBound s) sau. reamintim: StartPosition determ ină poziţia ferestrei atunci când aceasta apare prima dată. 4. metode care implem entează anumite comportamente (Show.3.ShowDialog() sau apelând From.Windows.). Odată implementată. elemente specifice (controale) cum ar fi butoane (Sy stem. aplicaţia poate fi lansată. Vizibilitatea unui formular poate fi setată folosind metodele Hide sau Show.Forms. . Hide.Show() nu va avea nici un deţinător . uzuală fiind Build Solution (F6). Dacă modelul de fereastră reprez intă ferestra principală a aplicaţiei.Show() sau cu form. Alte facilităţi de depanare pot fi folosi te prin umărirea pas cu pas. Focus etc. form. // setarea propietatii Visible indirect sau this.) şi o serie de metode specific e (handlere) de tratare a evenimentelor (Load. stabilită de Windows. Ferestre Spaţiul Forms ne oferă clase specializate pentru: creare de ferestre sau formulare ( System.Form). (celelalte opţiun ale meniului Debug).).Windows. sau pot fi activate din submeniul Windows al meniulu i Debug. Compilarea modulelor aplicaţiei şi asamblarea lor într-un sin gur fişier ”executabil” se realizează cu ajutorul opţiunilor din meniul Build. Când un nou formular este activat folosind form. P roiectarea unei ferestre are la bază un cod complex. Formularul deschis modal va avea un proprietar setat pe null. metoda a doua permiţând ca revenirea în fereastra din care a fost activat noul formular să se facă numai după ce noul formula r a fost inchis (spunem că formularul nou este deschis modal). acesta stabilindu-se direct : public Form Owner { get. / / setarea propietatii Visible direct • Printre cele mai uzuale proprietăţi ale form-urilor.Programare vizuală 27 mai sus creează un formular implicit. Un propietar este o fereastră care contribuie la comportarea formularului deţinut. MenuStrip. aplicaţia răspunzând la mesajele utilizatorului până d formularul va fi închis. urmărirea până la puncte de întrerupere etc. Timer etc.TextBox) etc. Deţinătorul se poate s tabili setând proprietarul înainte să apelăm Form.ShowDialog(this). etc. culoare de fundal.Form. acest cod realizează: derivar ea unei clase proprii din System. În fapt. (orice plasăm noi în fereastră) şi adaugă referinţele a estor obiecte la colecţia de controale ale ferestrei. centrat pe formularul care l-a afişat (CenterParent) atunci când formularul va fi afişat modal. poziţie ce poate fi setată Manu l sau poate fi centrată pe desktop (CenterScreen).form. atunci ea este instanţiată automat în programul prin ipal (metoda Main).

.

.MaxValue.Location = new Point(1. HelpButton-pre cizează dacă butonul va apărea sau nu lângă butonul de închidere al formularului (doar dacă ximizeBox=false. MaxinumSize şi MinimumSize sunt utilizate pentru a restricţiona dimensiun ile unui formular. se numără : • Load ap are când formularul este pentru prima data încărcat în memorie. butonul de închidere al fere strei şi meniul System (Restore. Partea care este desenată de formul ar mai este denumită şi Client Area. this. . 100).ico folosit ca icon pentru formular.MaximumSize = new Size(int.MinimumSize = new Size(200. Hide). Locaţia formularului poate fi stabilită relativ l a desktop astfel: void Form_Load(object sender.Y) reprezintă coordonatele colţului din stânga sus al formularului relativ la colţul stânga sus al containerului..28 POO şi Programare vizuală (suport de curs) • Location (X.Move. acesta se va redimensiona automat. Icon reprezintă un obie ct de tip *. C ontrolBox precizează dacă fereastra conţine sau nu un icon.. Definirea unei funcţii de tratare a unui eveniment asociat controlului se realiz ează prin selectarea grupului Events din ferestra Properties a controlului respect iv şi alegerea evenimentului dorit. Mişcarea formularului ( şi implicit schimbarea locaţiei) poate fi tratată în ev enimentele Move şi LocationChanged . Size grip (în colţul din dreapta jos) indică faptul că această fereastră poa e fi redimensionată.). titlul şi scrollbar-ul sunt desenate d e Windows. EventArgs e) { this. ci efectuăm dublu click în căsuţa respectivă.. Marginile.. Chiar dacă propietatea Siz e a formularului indică dimensiunea ferestrei. th is. } //formularul in desktop • • Size (Width şi Height) reprezintă dimensiunea ferestrei.} • • • IsMdiContainer precizează dacă form-ul reprezintă un container pentru alte form-uri. MaximizeBox şi MinimizeBox preciz ează dacă fereastra are sau nu butonul Maximize şi respectiv Minimize Opacity indică pro centul de opacitate32 ShowInTaskbar precizează dacă fereastra apare in TaskBar atunc i când formularul este minimizat. EventArgs e) { this. 1). formularul nu este în totalitate resp onsabil pentru desenarea întregului conţinut al său. se generează automat un nume pentru acea tă funcţie. pentru un f ormular Load etc. MinimizeBox=false). 1). TransparencyKey identifică o culoare care va deveni transparentă pe for mă.Size. Când se schimbă propietăţile Width Height ale unui formular.Close). această redimensiona re fiind tratată în evenimentele Resize sau in SizeChanged.. 32 • • • • • • • Dacă va fi setată la 10% formularul şi toate controalele sale vor fi aproape invizibil e. Show. Dacă nu scriem nici un nume pentru funcţia de trat are.DesktopLocation = new Point(1. Dacă utilizatorul apasă acest buton şi apoi apasă o riunde pe formular va apărea evenimentul HelpRequested (F1). ţinând cont de numele controlului şi de numele evenimentului (de exemplu butto n1_Click). SizeGripStyle specifică tipul pentru ‘Size Grip’ (Auto . 10 0). TopMost precizează dacă fereastra este afisată în faţa tuturor celorla te ferestre.Minimize. Printre evenimentele cele mai des utilizate. pentru TextBox este TextChanged. void Form_Load(object sender. Dacă în Designer efectuăm dublu click pe un control.Maximize. (Această propietate e ignorată dacă StartPosition = Manual). se va genera automat o funcţie de tratare pentru evenimentul implicit asociat controlului (pentru un but on evenimentul implicit este Click.

.

Aceste controale pot fi grupate astfel: • Controale de acti une (de exemplu button) care. Prevede. Exemplul PV2 afişează un grup alcătuit din 3 butoane. Controale Unitatea de bază a unei interfeţe Windows o reprezintă un control. Apăsarea primului buto va determina afişarea textului din TextBox într-un MessageBox iar apăsarea celui de-a l doilea buton va închide închide aplicaţia.BackColor=Color.IndianRed) button1. textbox. Culoarea butonului mare (verde/p ortocaliu) se schimbă atunci când mouse-ul este poziţionat pe buton.EventArgs e) { MessageBox.} .} • Controale valoare (label. Delete. După adăugarea celor două butoane şi a casetei xt a fost schimbat textul afişat pe cele două butoane au fost scrise funcţiile de trat are a evenimentului Click pentru cele două butoane: private void button1_Click(object sender. SelectAll).4.Show( textBox1. Visual Studio . Acesta poate fi „găzdui t” de un container ce poate fi un formular sau un alt control. Te xtul afişat este conţinut în propietatea Text şi este aliniat conform propietăţii TextAlign TextBox . System. De exemplu. disponibile în Toolbox.permite utilizatorului să introducă un text.ActiveForm. Copy.NET vine cu o serie de controale standard.} private void button2_Click(object sender. ca de exemplu (Cut.Yellow. Acţionarea butonului “Starea butoan lor” determină afişarea într-o casetă text a etichetelor butoanelor galbene. 4. Pas te. atunci când sunt acţionate.EventArgs e) { Form1.Programare vizuală • • • • 29 FormClosed apare când formularul este închis. La o nouă apăsare butonul revine la culoare iniţială. un set de funcţionalităţi de bază. System. Caseta text d evine vizibilă atunci când apăsăm prima oară acest buton. se poate executa o prelucr are.Forms şi este reponsabil cu desenarea unei părţi din container. etichetate A. private void button1_Click(object sender.Cancel =True atunci se va opri închiderea formularului). else button1. prin intermediul Co ntextMenu-ului asociat.B respectiv C având i niţial culoarea roşie. Activate d apare pentru formularul activ. stabilim evenimentele care determină schimbarea culoriilor şi completarea casetei text. Un control este o i nstanţă a unei clase derivate din System. picturebox) care arată utilizatorului o informaţi e (text. Apăsarea unui buton determină schimbarea culorii acestuia în galben . Deactivate apare atunci când utilizatorul va da c lick pe alt formular al aplicatiei.BackC olor== Color.EventArgs e) {if (button1.Windows. În exemplul PV1 se adaugă pe formular două butoane şi o casetă text.IndianRed. imagine). cel mai important eveniment pentru Button este Click (desemnând a cţiunea click stânga pe buton).Text). Label este folosit pentru plasarea de text pe un formular. PictureBox permite afişarea unei imagini. FormClosing apare când formularul se va inchide ca rezultat al acţiunii utilizatorului asupra butonului Close (Dacă se setea ză CancelEventArgs. După adăugarea butoan elor şi a casetei text pe formular.BackColor= Color.Dispose(). System.

Yellow)textBox1.B ackColor==Color.Text+ A .Show("CORECT").Checked && checkBox5.CheckState==CheckState.Visible =false. • LinkLabel afişează un text cu posibilitatea ca anumite părţi ale textului (LinkArea) să fi e desenate ca şi hyperlink-uri.EventArgs e) {label2.EventArgs e) {textBox1. if( button3.} Exerciţiu (Test grilă) Construiţi un test grilă care conţine 5 itemi cu câte 4 variante de puns (alegere simplă sau multiplă).EventArgs e) {textBox1.microsoft.Text ="Starea butoanelor".Text+ B .Che cked && checkBox4. Răspunsul este afişat într-un MessageBox. în dreptul fiecărui item. Textul introdus în casetă nu este vizibil (fiecare caracter est e înlocuit cu*). System.Yellow)textBox1..Unchecked) MessageBox.com/romania şi a treia accesează Notepad.} private void button4_Mo useLeave(object sender.Vis ible=false.YellowGreen. • Controale de selecţie (Chec kBox.CheckState==CheckState. radioButton1. Rezultatul va fi afişat într-un MessageBox. prima etichetă permite afişarea conţinutului discului C:.EventArgs e) {button4.CheckState==CheckState. memoraţi răspunsurile date şi afişaţi.Checked && checkBox2. System.. button4.").Visible=true. trebuie verificată propietatea CheckState(Checked.Text+ C . Unchecked.Text=textBox1. if( button2. într-o casetă text.Show("Indicatie> Daca punem un sac in altul.Visible=true.Visible=true. radioButton1.Back Color=Color. radioButton2. în sensul că acestea vor permite setarea unei alte stări.Orange.Text="Butoane apasate". diferenţierea fiind făcută de parametrul sender.textBox1.Text=textBox1.Visible=false. În exemplul PV4. } Exerciţiu Modificaţi aplicaţia precedentă astfel încât să avem un singur eveniment button_C k. se declanşează evenimentul Checked. atunci se schimbă funcţionalitatea acestor controale.CheckState==CheckState. după efectuarea lui.} private void button1_Click(object sende r. În acest caz. radioButton2.radioButto n2. După adăugarea controal lor pe formular şi setarea proprietăţilor Text şi ThreeState în cazul checkbox-urilor stab ilim evenimentele click pentru butonul Verifica şi pentru butonul radio cu etichet a DA: private void radioButton1_Click(object sender. După schimbarea stării unui astfel de control.button4. a doua legătură ste un link către pagina www. Aplicaţia PV3 este un exemplu de utilizare a acestor controale. System.BackColor==C olor.Visible=false. Pentru a face link-ul funcţional trebuie tratat even imentul LinkClicked. răspunsul corect.Checked=false. label2.BackColor=Color. Dacă propi etatea ThreeState este setată.CheckState==CheckState. if ( button1.radioButton1.Yellow)textBox1.Visible=true.             .button4.Checked=false..Text="".} private void button4_Clic k(object sender.30 POO şi Programare vizuală (suport de curs) private void button4_MouseEnter(object sender. e lse MessageBox. System. System.Checked && checkBox3.BackColor==Color.RadioButton) au propietatea Checked care indică dacă am selectat controlul. Exerciţiu ( Password) Adăugaţi pe un fo mular o casetă text în care să introduceţi un şir de caractere şi apoi verificaţi dacă aces incide cu o parolă dată.Text=textBox1. Soluţia unei problem e cu mai multe variante de răspuns este memorată cu ajutorul unor checkbox-uri cu pr oprietatea ThreeState.EventArgs e) {if (checkBox 1. Apăsarea butonului Verifică determină afişarea unei etichete şi a b utoanelor radio DA şi NU.Indeterminate) pentru a vedea starea c ontrolului.

de un ArrayList sau de orice tablou (orice sursă de date ce implementează interfaţa IEnum erable).Programare vizuală 31 private void etichetaC_LinkClicked (object sender.Items. s = s + c.gif cu ajutorul P ictureBox.} private void etichetaN_LinkClicked( o bject sender.Text = s. butonul Selecţie şi ListBox-ul.Diagnostics.microsoft. foreach ( object c in checkedLi stBox1. Evenimentul Click asociat butonului Set ectie goleşte mai întâi listBox-ul (listBox1.Process. ImageList) ce pot fi legate de un DataSet.Clear(). void button1_Click(object source.LinkVisited = true. System.CheckedItems) {listBox1. listBox1.Diagnostics.Items.} label1.Start( @"C:\" ).LinkVisited = true.Process. ComboBox. "http://www.s = s + " ".Clear().Start( "notepad" ). . System. După adăugar ea pe formular a CheckedListBox-ului. Butonul Animate va determina afişarea fişierelor *.ToString(). stabilim colecţia de itemi (Properties-Items Collection). LinkLabelLinkClickedEventArgs e ) { etichetaC.EventArgs e) { String s = "Am selectat si am adaugat itemii: ".gif din folderul C:\Imagini în listă şi va afişa co nutul acesteia. LinkLabelLinkClickedEventArgs e ) {etichetaN. În exemplul PV5 elementele selectate din CheckedListBox se adaugă în ListBox. } private void etichetaI_LinkClicked( object sender.} Exerciţiu (Memorator) Construiţi o aplicaţie care să conţină patru legături către cele patr re/ pagini care conţin rezumatul capitolelor studiate.LinkVisited = true. • Controale pentru listare (L istBox.com/romania/" ).Process.Add(c). System.) şi după aceea adaugă în ordine ecare element selectat din CheckedListBox. Apăsarea butonului Desene va adăuga fişierele *. LinkLabelLinkClickedEventAr gs e ) {etichetaI. S ystem. CheckedListBox.Items.Diagnostics.} Exerciţiu ( Filtru) Construiţi o aplicaţie care afişează fişierele dintr-un folder ales car au un anumit tip ( tipul fişierelor este ales de utilizator pe baza unui CheckedL istBox) Aplicaţia PV6 este un exemplu de utilizare a controlului ImageList.Start("IExplore ". Suplimentar se afişează o etichetă cu itemi i selectaţi.

pictureBox2.Forms.Forms. .ToShortDateString()) {String x=e. System.Contains(x))) comboBox1.Images. } Exerciţiu (Thumbnails) Afişaţi într-o ferestră conţinutul folder-ului curent în mod ViewThu ails. g.ColorDepth =System. i).) şi precizăm ce se execută atunci când selectăm un interval de timp: private void monthCalendar1_DateSelected(object sender. 60). Intervalul selectat se fişează prin intermediul unei etichete. Formularul din aplicaţia PV7 conţine un calendar pentru care putem selecta un interv al de maximum 30 de zile.Items. if(!(comboBox1.Images.Draw() for (int i = 0.ToShortDateString().CreateGraphic s().Count.Windows.Start. desene_animate.End. În rutinele de tratare a acestor evenimente. Există 2 evenimente pe care controlul le expune: DateSelected şi DateChanged. etc.gif").ShowTodayCircle.ToShortDateString(). i++) desene_animate.Start.Items.} Graphics g = this. foreach ( string fisier_gif in gif_uri) {Bitmap desen= new Bitmap (fisier_gif).Windows. • MonthCalendar afişează un calendar prin care se poate selecta o dată (zi.EventArgs e) { // Configureaza lista desene_animate. desene_ani mate.Windows.label1. // Deseneaza fiecare imagine utilizand metoda ImageList. sunt afişate săptămânile şi ziua curentă.Dat eRangeEventArgs e) { this. 60 + i * 60. proprietăţile prin car e se poate modifica comportamentul controlului sunt identice cu cele ale control ului MonthControl.Forms.Add(e. desene_an imate. Fiind foarte asemănător cu MonthCalendar.End.ToShortDateString( )). string[] gif_uri = Directory.ToShor tDateString()==e. "*. Proprietăţile mai importante sunt: MinDate. La click se afişează un control de tip MonthCalendar. MaxDate. MaxSelectionCount-30. System.32 POO şi Programare vizuală (suport de curs) ImageList desene_animate = new System. După adăug lor 3 controale pe formular.Depth8Bit. private void co ntruieste_lista_Click(object sender. stabilim proprietăţile pentru monthCalendar1 (ShowWeekN umber-True.ImageSize = new System. if (e.Draw(g.Size(60.Drawing.} } • DateTimePicker este un control care (ca şi MonthCalendar) se poate utiliza pentru a selecta o dată.Images. programatorul are acces la un obiect de tipul DateRangeEventArgs car e conţine proprietăţile Start şi End (reprezentând intervalul de timp selectat). an) în mod grafic.GetFiles("C:\\Imagini". prin care se p oate selecta data dorită. 60 .Clear() . luna. i < desene_animate.Dispose().ColorDepth.Start.Text = "Interval selectat: Start = " +e.ImageList(). Dacă se selectează o dată atunci aceasta va fi adău ată ca item într-un ComboBox (orice dată poate apărea cel mult o dată în listă).Image=desen.T oShortDateString() + " : End = " + e.Add(desen). // se construie ste un obiect Imagine pentru fiecare fisier si se adauga la ImageList. TodayDate ce r eprezintă data minimă/maximă selectabilă şi data curentă (care apare afişată diferenţiat sa uncţie de valorile proprietăţilor ShowToday.End.

Text = r adacina + "(Doublu Click pe folder)". Items(elementele de af işat). his. dimens iune.lista_fisiere. ColorDialog.ListViewSubItem lvsi.Name. Pentru ace a trebuie să determinăm conţinutul acestuia: ListViewItem lvi.GetFiles().SubItems.GetDirectories(). Acesta este similar grafic cu ferestrele în care se afişează fişierele dintr-un anumit director din Windows Explorer.DirectoryInfo fi in dirs) { lvi = new ListViewItem(). lvsi.IO. Smal lImageList (icon-urile de afişat în modurile LargeIcon. FileInfo [] files = dir.ToString().colHead.Columns .Add(lvi). lvi. lvsi. în cazul fişierelor. Aplicaţia PV8 este un exemplu de utilizare ListView. SmallIcon. pentru a defini coloanele de afişat). th is. Funcţia ConstruiesteHeader permite stabilirea celor trei coloa ne de afişat.lvi. La expandare se afişează numele complet .lista_fisiere.Text = "Nume fisier".lista_fisiere. • Controale ”de control” al executării (Timer) sau de dialog (OpenFileDialo g. Text+Imagini mici. col Head = new ColumnHeader(). lvi. . Data naşterii va fi selectată direct utilizând MonthCalendar. ContextMenu).L istViewSubItem(). să ştergem vechiul conţinut al listei: this. } Pentru item-ul selectat se afişează mai întâi folderele şi după aceea fişierele.Columns.Programare vizuală 33 Exerciţiu (Formular) Contruiţi un formular de introducere a datelor necesare realizări i unei adrese de e-mail.Add(l vsi).Add(colHead).Add(colHead).I O. lvsi = new ListViewItem.DirectoryInfo(radacina).Clear(). SmallIcon).Text = "".Items.LastAccessTime. Columns(utilizat doar în modul Details. ListViewItem. colHead = new ColumnHeader(). System.Add(colHead). conţine foarte multe proprietăţi. Controlul lista_fisiere es te de tip ListView.Add(lvsi).colHead. Se porneşte de la rădăcină şi se afişe onţinutul folder-ului selectat cu dublu click.SubItems. • ListView este folosit pentru a afişa o colecţie de elemente în unul din cele 4 moduri (Text. lvi. Fiind un control complex.DirectoryInfo dir = new System. this.FullName. colHead.lista_fisiere.Tag = fi.Items. List)).IO. this. data ultimei accesări şi.Text = "Dimensiune". printre care: View ( sele ctează modul de afişare (LargeIcon.lista_fisiere.lvi. LargeImageList. Detalii). lvsi = new ListViewItem . dimensiunea. Details. DirectoryInfo[] dirs = dir. SaveFileDialog. } Exerciţiu (Ordonare) Modificaţi aplicaţia anterioară astfel încât apăsarea pe numele unei c ane să determine afişarea informaţiilor ordonate după criteriul specificat (nume. this. this. FontDialog.Text = fi.Text = fi.Text = "Ultima accesare". private void ConstruiesteHeader() {ColumnHeader colHead.ImageIndex = 1. data).ListViewSubItem().BeginUpdate(). şi să adăugăm fiecare nou item ( coloana a doua este vidă în cazul foldere-lor): foreach (System.Columns.colHead = new ColumnHead er(). Imagini mari.calea_curenta.lista_fisiere.

Se pot introduce vizual butoane (printr-un designer. S mbarea fontului se realizează cu ajutorul unui control FontDialog().FixedSingle.toolBar1. t oolBar1. toolBar1. c d.Y < (e.Dock = DockStyle.X + toolBar1.cd.X < (e. 45).Location = new Point(10.Font= fd.Top.Width . direct din Vi sual Studio.Capture = true.X-20) forma_deplasata. fd. Mutarea toolbar-ul este dirijată de evenimentele produse atunci când apăsăm butonul de m ouse şi/sau ne deplasăm pe suprafaţa ferestrei.fd. Eveniment ul cel mai util al acestui control este ButtonClick (care are ca parametru un ob iect de tip ToolBarButtonClickEventArgs.Size.Size.Color.Top = e.BorderStyle = BorderStyle.Top>thi s. if(fd.AllowFullOpen = true.Height-20) { am_apasat = false. MouseEventArgs e) { if (am_apasat) { if(toolBar1.Left) { // daca depaseste atunc i duc in stanga sus if (forma_deplasata.BorderStyle = BorderStyle. e . toolBar1. this.Fixed3D.forma_deplasata.Dock = DockStyle.// Disconect toolbar toolBar1. if(cd.X.toolBar1.Y -20)) { am_apasat = false.Doc k == DockStyle.Color.Top .Fon t.Left .forma_deplasata.iar schimbarea culorii utilizează ColorDialog() FontDialog fd = new FontDialog().ForeColor = cd. toolBa r1.Left < 5 toolBar1.Dock == DockStyle .richTextBox1.DarkBlue.Cancel) { this.ForeColor=fd.X.Windows.Bo rderStyle = BorderStyle.DialogResult. toolBar 1. fd. prin care programatorul are acces la bu tonul care a fost apasat).Dock == DockStyle.} private void toolBa r1_MouseMove(object sender.} private void toolBar1_MouseUp(object sender.Color = Color.34 POO şi Programare vizuală (suport de curs) • Grupuri de controale Toolbar (ToolStrip) afişează o bară de butoane în partea de sus a u nui formular. Mous eEventArgs e) { am_apasat = false.Y.Left > this.richTextBox1.toolBar1. }}} } Exerciţiu (Editor) Realizaţi un editor de texte care conţină un control toolBar cu butoa nele uzuale.Size = new Size(200.20) { am_apasat = false.ShowColor = true.None) {toolBar1.} else if (toolBar1.ShowDialog() == System.Color = Color.ShowApply = true. la care se pot seta atât textul afişat sau imaginea. forma_deplasata = new Point(e.Forms. toolBar1.Apply += new EventHandler(ApplyFont).Forms. } } else if (toolBar1. În aplicaţia următoare PV9 cele 3 butoane ale toolbar-ului permit modificarea proprietăţil or textului introdus în casetă.Fixed3D.Left.ShowDialog () != System. . private void toolBar1_MouseDown(object sender.OK) this. } ColorDialog cd = new ColorDialog(). MouseEventArgs e) { // am apasat butonul de mouse pe toolbar am_apasat = true.Capture = false.DialogResult. if (toolBar1. toolBar1.NET IDE).Y + toolBar1.Top toolBar1.W indows.Y).None. fd.Left = e.richTextBox1.Dock = DockStyle. Toolbar-ul se poate muta fără a depăşi spaţiul ferestrei.Top < 5 toolBar1.IndianRed . 10).

File Open selectează şi afişează în caseta text conţinutul unui fişier text.} File Close şterge conţinutul casetei text.Open. TabControl) sunt controale ce pot conţine al te controale. Fiecare dintre aceste obiecte de tip MenuItem are 0 sau mai multe obiecte de tip MenuItem.break. of. Grupuri de controale tip Meniu (MenuStrip.txt" . Exemplul PV11 permite. FileMode. afişarea unor inform aţii teoretice precum şi Help dinamic. Se utilizează 4 pagini de Tab pentru a simula selectarea unor opţiuni ce se pot grupa pe categor ii. Meniul care este afişat de către un formular poate fi schimbat dinamic la rulare : switch(cond) { case cond1:this. care vor co nstitui noul nivel de itemi (Ex: File New. File Exit închide aplicaţia .Read).Text=richTextBox1. FileAccess. Enabled and Visible determină dacă un item poate fi sau nu selectat sau vizibil. StreamReader rdr = new StreamReader (strm). MessageBoxButtons. richTextBox1. Clasa MenuStrip are o colecţie de Men uItem care conţine 0 sau mai multe obiecte de tip MenuItem.FileName. of. } • unde mainMenu1 şi mainMenu2 sunt obiecte de tip MenuStrip. case cond2: this. Exerciţiu (Magazin) Dezvoltaţi aplicaţia precedentă astfel încât pe o pagină să se afiş elele disponibile (imagine+detalii) şi să se permită selectarea mai multor obiecte.mainMenu1.OK. Evenimentul Click are loc când un utiliz ator apasă un item al meniului.} } catch (Exception){MessageBox.Text+" "+str. Editarea unui astfel de obiect se poate face utilizând Menu Designer. while (rdr.MainMenuStrip = this.richTextBox1. Open. Aplicaţia PV10 simulează lansarea unei comenzi către un magazin de jucării. FileStream strm.txt) *. Propietăţile Che cked si RadioCheck indică itemul selectat.Exclamat ion). afişarea continutului acestuia întro casetă text.ReadLine (). Ul tima pagină reprezintă coşul de cumpărături.Show (" Error opening file". Exit). Co ntextMenuStrip etc. schim barea fontului şi culorii de afişare. "File Error".Peek() >= 0){string str = rdr.) Un formular poate afişa un singur meniu principal la un momen t dat.Process. ştergerea conţinutului casetei.Text="". Shortcut permite asignarea unei combinaţii d e taste pentru selectarea unui item al meniului şi Text memorează textul care va fi afişat pentru respectivul item al meniului. Panel. rich TextBox1. OpenFileDialog of = new OpenFileDialog(). meniul asociat iniţial fiind specificat prin propietatea Form.mainMenu2.Programare vizuală • 35 Controale container (GroupBox. File New permite scrierea unui fişier notepad nou System.ShowDialog() == DialogResult. scrierea unui fisier Notpad.MainMenuStrip = this.Start( "notepad" ).Filter = "Text Files (*. Au fost definite chei de acces rapid pentru a ccesarea componentelor meniului. try{strm = new FileStream (of.Cancel)return. prin intermediul unui meniu .Visible=true.Save.Title = "Fisiere Text".MainMenuStrip .Diagnostics. Close. if (of. MessageBoxIcon.

Process. Y: " + myPoint. inaltime=1 00.microsoft. points[2] = new Point(20. IntPtr.points[1] = new Point (0. Point myPoint = new Point(mySize ).Next(30). x. Help DinamicHelp accesează System. Color myColor = Color.Graphics. tipuri şi metode utile în lucrul cu culori. green. int latime=100. Pen pen = new Pen(Color.com/en-us/default.FromFile("C:\\Imagini\\catel. Random x = new Random(). blue).G raphics.Color. private void Thumbnails_Load(object sender. i = 1 + x. Aplicaţia PV12 este un exerciţiu care desenează cercuri de raze şi culori aleatoare şi emi te sunete cu frecvenţă aleatoare. 150).Next(100). points[0] = new Point(0.Sleep(200).Beep(300 + x.Drawing.) Point este utilizat frecvent nu numai pentru desene.Console. Graphics g = e. System. i). Fiind un tip valoare (struct) şi nu o clasă.x. button1. De exemplu. Exerciţiu (Fisiere) Contruiţi un menu care să permită efectuarea operaţiilor uzuale cu fişi re.5. 0). i. Substructura FromArgb a structurii Color returnează o culoare pe baza celor trei c omponente ale oricărei culori (red.Diagnostics. aceasta conţine date şi metode.null. De exemplu. Console.Next(100).Zero).DrawImage(thumbnail. Clasa Graphics este o clasă sigila tă reprezentând o arie rectangulară care permite reprezentări grafice. o lin ie frântă se poate realiza astfel: Point[] points = new Point[4]. thumbnail=img. PaintEventArgs e) {e. În exemplul PV13 se construieşte o pictogramă pe baza unei imagini. Size mySize = new Size(15. Con sole.} } private void Thumbnails_Paint(object s ender. 10. EventArgs e) { try{ Image img = Image.WriteLine("X: " + myPoint.Drawing Spaţiul System.x.Start("IExplore".BackColor = myColor.Y).Next(256) .Brown. "http://msdn2. 4.aspx"). g. 120).DrawEllipse(p.Next(256))) g.} . x. Help About PV afişează în caseta text informaţii despre implementarea unui menu. Image thumbnail. 30)).jpg"). points). 0).Drawing conţine tipuri care permit realizarea unor desene 2D şi au rol deosebit în proiectarea interfeţelor grafice.2). ci şi pen tru a identifica în program un punct dintr-un anumit spaţiu.Yellow.36 POO şi Programare vizuală (suport de curs) Window Font şi Window Color permit stabilirea fontului/culorii textului afişat. Putem construi un obiect de tip Point pentru a redimensiona un alt obiect.FromArgb(x. Un obiect de tip Point este reprezenta t prin coordonatele unui punct într-un spaţiul bidimensional (exemplu: Point myPoint = new Point(1.Next(1000). moştenire. Structura Color conţine date.GetThumbnailImage(latime. Graphics g = this.points[3] = new Point(20. pentru a mo difica poziţia unui buton în fereastră putem asigna un obiect de tip Point proprietăţii Lo cation indicând astfel poziţia colţului din stânga-sus al butonului (button. 120). destructor.X + ".Next(256). p=new Pen(System.Location = n ew Point(100. 2). System.Show("Nu exista fisierul"). inaltime.DrawLines(pen.CreateGraphics(). 10).} catch{ MessageBox. 100). însă nu permite instanţier constructori.

asociind o prelucrare unuia dintre handlerele asociate evenimentelor la nivel de control (Leave. // sau if(Char. pentru fiecare item se precizează punctajul.Forms. răspunsul corect.Show("Ati apasat o cifra"). Jocul de Nim (PV18 ) Exerciţiu (Test grila) Realizaţi un generator de teste grilă (întrebările sunt preluate dintr-un fisier text.Windows. Ordonare vector(PV16)." Numele nu are spatii in stanga").Windows. MouseUp etc.Text=="") { a. pentru a preveni posibile le erori. Validarea la nivel de câmp Datele pot fi validate pe măsură ce sunt introduse. fiind foarte greu de identificat cauza p rimară a problemei. validarea se face la sfârşitu ntroducerii tuturor datelor la nivelul unui buton final sau la închiderea ferestre i de date. distractorii şi o imagine asociată enunţului (dacă există). Subsir crescător de lungime maximă(PV17). enunţul. Validarea informaţiilor de la utilizator Înainte ca informaţiile de la utilizator să fie preluate şi transmise către alte clase.Tex tBox & a.Alt==true) MessageBox. Textchanged.Forms.Focus().SetError(txtName. este posibil ca aceasta să se comporte neprevăzut abia câteva secunde mai târziu.EventArgs e) { foreach(Syst em.Control a in this. şi după multe apeluri de metode.Show ("Tasta Alt e apasata"). es te necesar să fie validate.Windows.Controls) { if( a is System.} } } ErrorProvider O manieră simplă de a semnala erori de validare este aceea de a seta u n mesaj de eroare pentru fiecare control . . Triunghi (PV15). Astfel. System. evenimentele tratate: Forma poloneza (PV14). Aplicatii recapitulative.6.KeeyEventArgs e) {if(e.return.Programare vizuală 37 4. } Validarea la nivel de utilizator În unele situaţii (de exemplu atunci când valorile in troduse trebuie să se afle într-o anumită relaţie între ele). După efectuarea testulu se afişează rezultatul obţinut şi statistica răspunsurilor.KeyChar)==true) MessageBox. private void btnValidate_Click(object sender. Acest aspect este important. Urmăriţi aplicaţiile şi precizaţi pentru fiecare dintre ele cont roalele utilizate.IsDigi t(e. System.Forms. myErrorProvider.) private void textBox1_KeyUp(object sender. dacă utilizatorul introduce o valoare reală (float) când aplicaţia aştea ptă un întreg (int).

public Stiva() { vf = -1. de legaţii şi metodele pot fi generice. A spune că numele nu este definit ar presupune un fel de declarare cu numele .1) pentru a pune în evidenţă diferenţele induse de modul de lucru . adică pot fi concepute astfel încât să depindă de unul u mai multe tipuri de date pe care acestea le memorează sau manipulează. etc. } public void Push(T x) { st[++vf] = x. De exemplu. Console. ansamblu ce permite identificarea rapidă a oricărei componente din colecţie. i++) Console. În C#. } public T Pop()35 { return st[vf--]. Console. şi abia la apel să se stabilească ce nume este scris în l oc de . Aplicaţii orientate pe date 5. Faptul că o stivă din clasa Stack este implementată ca ve tor sau nu. public Stiva() { vf = -1. } public int Pop() { return st[vf--].Collection. reprezintă un ansamblu bine structurat de componente de acelaşi ti p. Sursele de date trebuie şi ele integrate co respunzător într-o aplicaţie OOP. i <= vf. structurile. în care tipul datelor manevrate n u este cunoscut decât la apel. i++) Console... deşi funcţiile care au defini . este de mică importanţă pentru programatorul pe platformă . atunci se pune problema formatului în care vor fi salvate. Dar pentru o peraţiile executate de o aplicaţie ce monitorizează traficul dintr-o gară de triaj. metodele. Acest tip de date constituie un parametru al clasei . la declararea unei clase obişnuite.2.0. Pentru colecţiile consist ente de date care suferă prelucrări ample şi frecvente se pune problema suportului de memorare astfel încât să suporte tehnici de acces rapide etc. C# introduce. metodei etc. Pentru o funcţie (metodă) obişnuită sunt definite atât numele. } public void Push(int x) { st[++vf] = x. int vf. Clasele.WriteLine()..38 POO şi Programare vizuală (suport de curs) 5. Despre colecţii am mai vorbit în cadrul capitolului 3. neric: class Stiva { class Stiva<T> { int[] st = new int[10]. Definiţi a este aplicabilă şi colecţiilor de date. cloecţiile de date sunt percepute ca d ate externe (aflate pe harddisc sau alte suporturi de memorare).1. colecţiil e sunt clase specializate aparţinând spaţiului System. interfeţele.. i <= vf.11. ad ică posibilitatea declarării unor clase. Dacă datele trebuie exportate către alte aplicaţii. }35 public void scrie( ) {for (int i = 0.WriteLine(). ☺ 34 Numărul parametrilor este şi el bine definit. cât şi tipul parame r funcţiei34. începând de la versiunea 2. noi stabilim elementele fixe ale acesteia: nu mele şi tipurile datelor. Colecţii de date Colecţia. } } A nu se confunda capacitatea de a defini mai multe metode cu acelaşi nume cu faptu l că numele este bine determinat. Aducem unele completări în cele ce urmează vorbind d espre structuri generice de date. dacă sun t folosite informaţiile de acest tip în prelucrări ulterioare sau sunt doar listate su b formă de rapoarte periodice. Uneori. numele metodelor33 şi altor componente ce formează clasa res pectivă.NET.. în general. în mod generic clasa Stiva (amint ită şi în capitolul 1. metode etc. } public void scrie() {for ( int i = 0. Atributul ”generic” se referă la proprietatea de a r eferi o întreagă categorie de obiecte. 5.Write(st[i]). Structuri de date Construirea unei aplicaţii ce gestionează un volum mare de date necesită o atenţie parti culară privind organizarea acestor date. int vf.Write(st[i]). Vom defini în mod obişnuit şi. parametrizarea tipurilor. paralel.. este important de ştiut dacă trebuie memorat sau nu un istoric al acestor operaţii. } } 33 T[] st = new T[10]. dar asta nu exc lude posibilitatea organizării datelor interne sub forma unor colecţii.

t un parametru de tip tablou. permit apelul cu un număr variabil de parametri efec tivi. 35 Versiuni mai vechi de C nu execută conform aşteptărilor returul valorii cu po stincrementare. .

Stabiliţi ce tip d e structură generică se poate utiliza pentru gestiunea ferestrelor deschise la un mo ment dat36. OleDbConnection e tc. liste dublu înlănţuite (LinkedList). în structuri specifice cum ar f i: liste (List). instanţiate dintr-o aceeaşi clasă MyForm (să zicem) derivată din System. SQL etc. 36 punem accentul pe faptul că ferestrele sunt modale .Windows. Putem memora în program sau ca element static al clasei MyForm o structură de tip listă: List<MyForm> fer=new List<MyForm>() La crearea oricărei ferestre f de tipul MyForm (MyForm f=new MyForm(). la închiderea ferestr ei revenind la fereastra principală. C onsole.Add(f)). indiferent de tipul acestora. } 39 . oferă instrumentele de utilizare şi reprezentare XML.) conţin date referitoare la sursa de date (locaţia. o bază de date Dbase.scrie().s. s.Show().s.. ADO. 5.Push(7) . s. dicţi onare (Dictionary) etc. pornirea unei tranza cţii etc.WriteLine("Ex{0}". s. OleDb etc. Amintim că o sursă de date poate fi: un fişier text. fie deconectat de la sursa de date . se deschide o fereastră ce permite completarea câmpurilor ce formează adresa..). dorim să gestionăm un ansamblu de ferestre asemănăto are. numele şi parola contului de a cces. Exerciţiu: Presupunem că i mplementăm o aplicaţie în care se completează datele unui pacient într-o fereastră. Desigur. etc. De exemplu. apăsând pe butonul Adresa. Aceste clase se găsesc în subspaţii (SqlClient.scrie().s. iar apoi. de combinare a date lor din diferite surse şi de diferite tipuri (pe bază mecanismenlor de reprezentare comună implementate de . Analog. clasele şi interfeţele din spaţiul System. Conectarea la o sursă de date Înainte de orice operaţie cu o sursă de date externă.s.Push(7).Remove(f)).) se adaugă referinţa ferestrei în lista fer (fer. adresa detaliată etc.WriteLine("Ex{0}". ADO.Push(7).Aplicaţii orientate pe date . cele mai des utilizate sunt colecţiile generice .NET.WriteLine("Ex{0}". s. } Dintre clasele generice ”predefinite”. trebuie realizată o conexiune (legătu cu acea sursă. la închiderea ferestrei .Pop()).Forms .NET ADO. ele implementează interfaţa IDbConnection. s. Clasele din categoria Connection (SQLConnection.NET (ActiveX Data Objects) reprezintă o parte componentă a nucleului . s. cozi (Queue).) ale spaţiului System . f.s. Lucrul cu o sursă de date se poate face fie conectat. s.). s. static void Main(string[] args) { Stiva s = new Stiva()..scrie(). în ferea stră se completează numele pacientului. Access.NET Framew ork ce permite accesarea şi manipularea datelor..scrie().Data.Push(5). Console. static void Main(string[] args) { Stiva<int> s = new Stiva<int>(). un fişier Excel sau XML.Pop()).4. analize efectuate.scrie().3.scrie(). Console. Astfel.Push(5) .WriteLine(„Ex{0}. s.scrie().Collection. Console.Form. 5. În plus.Generic permit organiza rea datelor proprii.Push(7) .NET implementează clase ce oferă servicii atât pentru lucrul în stil deconectat cât ş conectat. s. metode pentru deschiderea/închiderea conexiunii. s. se va elimina referinţa acesteia din listă (fer. Maniera de lucru deconectată recomandă metoda ca fiind ma i eficientă în proiectarea aplicaţiilor pentru Internet decât alte tehnologii cum ar fi ADO sau ODBC.Pop()). s. stive (Stack).Pop()). şi o fereastră secundară poate avea la rându l ei butoane pentru alte ferestre secundare în raport cu aceasta. s. aceasta este proiectată să conţină butoane ce permit deschide unor ferestre secundare pentru completarea unor subcategorii de date (istoricul suferinţelor cronice.scrie(). Deoarece există mai multe tipuri de baze de date e nevoie de câte o bi bliotecă specializată de clase şi interfeţe care să implementeze un ”protocol” specific pen fiecare. Pentru nu încărca ferestra curentă. De exemplu.

.User ID=elev.4. State (enumerare de componente Connect ionState): returnează starea curentă a conexiunii. Evenimentele unei conexiuni Sta teChange: apare atunci când se schimbă starea conexiunii. la sfârşit se apelează Commit() sau Rollback().Password=madonna").. Metodele unei conexiuni Open(): deschid e o conexiune la baza de date Close() şi Dispose(): închid conexiunea şi eliberează toat e resursele alocate pentru ea BeginTransaction(): pentru executarea unei tranzacţi i pe baza de date. InfoMes sage: apare când furnizorul trimite un avertisment sau un mesaj către client. CreateCommand(): creează o comandă (un obiect de tip Command) validă asociată conexiunii curente. Open. . Connecting. Closed .Open(). Valorile posibile: Broken.Data. Este necesară pentru a arăta unui utilizator care este baza de date pe care se face opera rea Provider (string): returnează furnizorul ServerVersion (string): returnează vers iunea de server la care s–a făcut conectarea. . SqlConnection cn = new SqlConnection("Data Source=serverBD.NET Data Provider. (implicit 15). us ing System... OleDbConnection con = new OleDbConnection(@"Provider= Microsoft. Database=scoala. SqlConnection co = new SqlConnection(@"Data Sou rce=serverBD.User ID=elev. ..OLEDB. . Connect Timeout=30"). ConnectionTimeout (int): specif ică numărul de secunde pentru care un obiect de conexiune poate să aştepre pentru realiz area conectării la server înainte de a se genera o excepţie. Executing.Open().. Baza de date trebuie să se găsească pe serverul dat în Data Source. Proprietăţile unei conexiuni ConnectionString (String): conţine un string cu o succesi une de parametri de forma parametru=valoare.OleDb.Password=madonna.40 POO şi Programare vizuală (suport de curs) Pentru deschiderea unei conexiuni prin program se poate instanţia un obiect de tip conexiune..mdb").0. precizându-i ca parametru un şir de caractere conţinând date despre conexiun e.Jet. Se poate s pecifica o valoare diferită de 15 în ConnectionString folosind parametrul Connect Ti meout. Data Source=C:\Date\scoala. Acest furn izor trebuie precizat doar dacă se foloseşte OLE DB .. şi nu se speci fică pentru conectare la SQL Server • Data Source: se specifică numele serverului de b aze de date sau numele fişierului de date • Initial Catalog (Database): specifică nume le bazei de date. Handlerul corespunzător (de tipul delegat StateChangeEventHandler) spune între ce stări s-a făcut tranziţia. cn.Data. • Password: specifică parola contului de mai sus. Noua bază de date trebuie să existe pe acelaşi server ca şi precedenta. Dăm două exemple de conectare la o sursă de date SQL respectiv Access: using System. Fetching. • Us er ID: specifica un nume de cont de utilizator care are acces de logare la serve r. co. Database=scoala.. . despărţiţi prin .SqlClient. Parametrii pot fi: • pro vider: specifică furnizorul de date pentru conectarea la sursa de date. Database (string): returnează numele bazei de date la care s–a făcut conectarea. Valoarea Timeout=0 specifică aşteptare nelimitată. ChangeDatabase(): s e modifică baza de date la care se vor face conexiunile.

GetString(0). Parameters (System.SqlConnection con.SqlTransaction trans) Cancel() opreşte o coman dă aflată în executare. ExecuteNonQuery()execută o co mandă care nu returnează un set de date din baza de date. Valorile pot fi: StoredProc edure (apel de procedură stocată).PrefixParameterCollection): returnează o colecţie de parametri care s-au transmis comenzii. UPDATE. co. atunci se generează o excepţie. Metoda ExecuteReader() mai are un argument opţional. KeyInfo (returneză informaţie despre coloa ne şi cheia primară). Proprietăţile unei come nzi CommandText (String): conţine comanda SQL sau numele procedurii stocate care s e execută pe sursa de date.Connection = con. Database=scoala.PrefixConnection): conţine obiectul d e tip conexiune folosit pentru legarea la sursa de date. Data. SingleR esult (se returnează un singur set de rezultate). } reader.Data. Console. OleDbCommand etc. [Provider].ToStrin g()). SqlDataReader reader = cmd.{1}".Use r ID=elev. Dispose() distruge obiectul comandă. Executarea unei comenzi SQL Clasele din categoria Command (SQLCommand.s-au şters ExecuteReader() execută comanda şi returnează un obiect de tip DataReader SqlCommand cmd = new SqlCommand("SELECT * FROM elevi".5. re ader. Transaction (System. SqlConnection con ) sau SqlCommand(s tring CommandText. O comandă se poate executa numai după ce s-a stabilit o conxiun e cu baza de date corespunzătoare. UPDATE) şi metode pentru executarea un ei comenzi sau a unor proceduri stocate.[Provider].ExecuteNonQuery(). INSERT.WriteLine(cmd.WriteLine("{0} . cmd. DELETE.GetString(1)). dacă comanda a fost de tip I NSERT. con). Metodele unei comenzi Constructori: SqlCommand() sau SqlCommand(string Comm andText) sau SqlCommand(string CommandText. Aceste clase implementează interfaţa IDbCom mand. Text (comandă SQL obişnuită).) conţin date referito are la o comandă SQL (SELECT. Ca urmare a interogării unei baze de date se obţin obiecte din categoriile Dat aReader sau DataSet.Aplicaţii orientate pe date 41 5. cmd.[Provider]. TableDirect (numai pentru OleDb) Connection (System. //câte înreg.con). SchemaOnly (returneză doar informaţie despre coloane). SingleRow (se returnează o singură l inie).reader. SqlCommand cmd = new SqlCommand().Data . Dacă se depăşeste acest timp. CommandTimeout (int): reprezintă numărul de secunde care t rebuie să fie aşteptat pentru executarea comenzii. CommandBehavior care descrie rezultatele şi efectul asupra bazei de date: CloseConnection (conexiunea este închisă atunci când obiectul DataReader este închis).Open().Read()) { Console.ExecuteReader().Password=madonna").PrefixTransaction): perm ite accesul la obiectul de tip tranzacţie care se cere a fi executat pe sursa de d ate.Close(). SqlConnection co = new SqlConnection(@"Data Source=serverBD. CommandType (enumerare de componente de tip CommandType): rep rezintă tipul de comandă care se execută pe sursa de date. . SqlCommand cmd = new SqlCommand("SELECT * FROM ELEVI". while(reader. SequentialA ccess (pentru manevrarea valorilor binare cu GetChars() sau GetBytes()). DELETE.CommandText = "DELETE FROM elevi WHERE nu me = ’BARBU’". se returnează numărul de înregistrări afectate.

pe toată durata lucrului cu un obiect de tip DataReader. con). din înergistrarea curentă GetBytes().//transferă datele în datasetul ds sub forma unei tabele locale numit e elevi SqlDataAdapter dp=new SqlDataAdapter("SELECT nume. SqlDataReader reader = cmd.42 POO şi Programare vizuală (suport de curs) ExecuteScalar() execută comanda şi returnează valoarea primei coloane de pe primul rând a setului de date rezultat."Elevi").XmlReader myXR = CMD. modificare şi adăugare la baza de date. Clas ele DataReader permit parcurgerea într-un singur sens a sursei de date. Un obiect DeatReader nu are construct or. se v a utiliza ansamblul DataAdapter + DataSet. acelaşi folosit şi pentru transferul da telor.Xml.select * from profi". sau pot fi preluate de la sursă (dintr-un obiect din categoria DataAdap ter) şi înglobate în aplicaţia curentă (sub forma unui obiect din categoria DataSet). GetByte(). folosit pentru obţinerea unor rezultate statistice SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM elevi". dp. Read () ) {Console.ExecuteReader ().co nn). GetChars() citirea unor octeţi/caractere dintr–un câmp de date binar GetDataTypeName().//transferă datele în datasetul ds sub forma unei tabele lo cale numite profi . P roprietăţi: IsClosed. conexiunea trebuie să fie activă. clasdir FROM profi. ştergere. Dacă se doreşte modificarea datelor la sursă. Da tele sunt stocate de un DataSet în format XML. Ele gestionează automat conexiunea cu baza de dat e astfel încât conexiunea să se facă numai atunci când este imperios necesar. GetName() returne ază tipul/numele câmpului specificat IsDBNull() returnează true dacă în câmpul specificat p in index este o valoare NULL NextResult()determină trecerea la următorul rezultat st ocat în obiect (vezi exemplul) Read() determină trecerea la următoarea înregistrare. HasRows. ci se obţine cu ajutorul unui obiect de tip Command şi prin apelul metodei Execu teReader() (vezi exemplul de la pagina 41.ExecuteScalar().EXAMEN". 5. trebuie să preceadă închiderea conxiunii G etBoolean(). Seturi de date Datele pot fi explorate în mod conectat (cu ajutorul unor obiecte din categoria Da taReader).Open (). conn). ExecuteXmlReader() returnează un obiect de tipul XmlReader obţinut prin interogare SqlCommand CMD= new SqlCommand("SELECT * FROM elevi FOR XML MATE. Console.} } while ( reader. OleDbDataReader etc. fără posibilit ate de modificare a datelor la sursă. Clasele DataAdapter generează obiecte care funcţionează ca o interfaţă între sursa de date şi obiectele DataSet interne aplicaţi permiţând prelucrări pe baza de date. Folosirea combinată a obiectelor DataAdapter şi DataSet permite operaţii de selectare.) implementează interfaţa IDataReader. conn. GetChar()."Profi"). Get Float(). În exemplul următor se preiau datele din tablele elevi şi profi: SqlDataAdapter de=new SqlDataAdapter("SELECT nume.WriteLine(reader. do { while ( reader. de.con). GetValue(). GetString() returnează va loarea unui câmp specificat. SqlDataReader reader = cmd. SqlCommand cmd=new SqlCommand("select * from elevi. Foloseşte serviciile unui obiect Da taAdapter pentru a-şi procura datele şi trimite modificările înapoi către baza de date. reader[0]. reader[1] ).6.NextResult () ). Item (indexator de câmpuri) şi FieldCount Metode: Close() închidere obiectului şi eliberarea resurselor. de reţinut că iniţial poziţia curentă este înain mei întrgistrări. Un obiect Da taSet este de fapt un set de tabele relaţionate. GetDouble(). ret urnând false numai dacă aceasta nu există. Toate clasele Dat aReader (SqlDataReader.Fi ll(ds. conn ). GetInt64(). GetInt16().WriteLine ( "{0}\t\t{1}".GetString(0)).Fill(ds. jos). Evident.clasa FROM elevi. System. GetDecimal().ExecuteXmlReader(). GetInt32(). GetDateTime().

Relations (colecţie de obiecte de tip DataRelation pentru memorarea legăturilor părinte–copil) şi ExtendedP roperties ce conţine proprietăţi definite de utilizator. conţin comenzile ce se execută pentru selectarea sau modificarea da telor în sursa de date. DataAdapter şi DataSet prezenta te.Tables[0].Tables["elevi"]. Update() permite transmiterea modi ficărilor efectuate într–un DataSet către baza de date.T ables[1] • actualizarea datelor prin obiecte comandă corespunzătoare operaţiilor INSERT. putem naviga. sau TableGridView. Selectăm tabelele care ne interesează din baza de date şi câmpurile din cadrul tabelei ce vor fi reţinute în TableAdapter (din categoria DataAdapter) Când operaţiunea se încheie. 5. DataAdapter adaugă coloana la schema tablei • Ad dWithKey – se adugă coloana şi informaţii relativ la cheia primară • Ignore . Să urmărim un scenariu de realizare a unei aplicaţii simp le cu o fereastră în care putem vizualiza date dintr-o tabelă. Meniul Data şi fereastra auxiliară Data Sources ne sunt foarte utile în lucr ul cu surse de date externe.se generează o excepţi e de tipul InvalidOperationException. BindingNavig ator etc. Structura unui DataSet Un DataSe t este format din Tables (colecţie formată din obiecte de tip DataTable. Conceptual. Fill() permite umplerea unei tabele dintr–un obiect DataSet cu date. ds. numărul de înregistrare cu care să se înceapă popularea (prima având indicel 0) şi numărul de înregistrări care urmează a fi aduse. Command.7. • • Iniţiem adăugarea unei surse de date (Add New Source) Co gurăm cu atenţie (asistaţi de ”vrăjitor”) conexiunea cu o sursă de tip SQL sau Access. Poate ave a următoarele valori: • Add . SelectCommand. eventual a numelui tablei din acest DataSet. conexiune). sau indexarea acestora. ds. UPDATE şi DELETE. Scenariul uzual de lucru cu d atele dintr-o tabelă conţine următoarele etape: • popularea succesivă a unui DataSet prin intermediul unuia sau mai multor obiecte DataAdapter. date relative la baza de date la care ne-am conectat sunt i ntegrate în proiect şi pictograma.implicit. DataTable e ste compus la rândul lui dintr-o colecţie de DataRow şi DataColumn). numită Authors. Permite speci ficarea obiectului DataSet în care se depun datele. ds. bază stocată p e harddiscul local. apelând metoda Fill (vezi ex emplul de mai sus) • procesarea datelor din DataSet folosind numele tabelelor stab ilite la umplere. putem mod ifica sau şterge înregistrări.se ignoră lip coloanei respective. sau SqlDataAdapter(string_comanda. Proiectarea vizuală a seturilor de date Mediul de dezvoltare Visual Studio dispune de instrumente puternice şi sugestive p entru utilizarea bazelor de date în aplicaţii. ”La vedere” se află controale de tip DataGridView.Aplicaţii orientate pe date 43 Proprietăţile unui DataAdapter DeleteCommand. Metodele unui DataAdapter Constructoril: S qlDataAdapter(). figu surprinde elemente de conectare la o bază de date Access. UpdateCo mmand (Command). MissingSchemaAction (enumerare) determină ce se face atunci când datele aduse nu se potrivesc peste schema tablei în care sunt depuse. ca şi structura bazei de date apar în fereastra Data Source • • . ceea ce duce la pierdere de date • Error . în spatele unei ferestre în c are lucrăm cu date preluate dintr-una sau mai mlte tabele ale unei baze de date se află obiectele din categoriile Connection. Un obiect CommandBuilder poate construi automat o combinaţie de c omenzi ce reflectă modificările efectuate. InsertCommand. sau SqlDataAdapter(obiect_comanda).

BindingNavigator şi. Tab leGridView BindingNavigator este un tip ce permite. În partea de jos a figurii se pot observa obiecte le de tip Dataset. construirea barei de navigare ce permite operaţii de deplasare. În timpul rulării aplicaţiei. bara de navigare şi elementele vizuale ale grilei permit o peraţiile de bază cu înregistrările bazei de date. Să observăm că reprezentarea vizuală a fiecărui obiect este înzestrată cu o săgetă în par s. se creează automat obiecte specifice. prin instanţiere. Operaţiile care modifică baza de date tr buie să fie definitivate prin salvarea noilor date . în dreapta. în fereastră. editare. ştergere şi adăugare în tabel . . BindingSource. TableAdapter.44 POO şi Programare vizuală (suport de curs) • Prin "tragerea" unor obiecte din fereastra Data Sources în fereastra noastră nouă. Meniul contextual asociat grilei în care vor fi vizualizate datele permite configurarea modului de lucru cu grila (sursa de date. operaţiile permise şi altele). Un click pe această săgeată activează un meniu contextual cu lista principa lelor operaţii ce se pot efectua cu obiectul respectiv.

.

.

Programarea Web cu ASP .0 .Net 2.

.

CUPRINS CUPRINS ........................................................................ ......................................................................... 49 1. 1.1. 1.2. 1.3. 2. 2.1. 2.2. 3. ARHITECTURI SOFTWARE ............................ ........................................................................ 51 MODE LUL CLIENT- SERVER.............................................................. ............................................ 51 MODELUL MULTI-STRAT ............ ................................................................................ .................. 52 APLICAŢII ORIENTATE SPRE SERVICII .......................... ................................................................. 54 PROTOCOALE DE REŢEA ......................................................................... .............................. 57 MODELUL DE REFERINŢĂ TCP/IP ...................... .......................................................................... 57 PR OTOCOLUL HTTP .................................................................. .................................................. 58 PROGRAMAREA CLIENT - SIDE. ................................................................................ ........... 62 3.1. ELEMENTE AVANSATE DE HTML .................................. .............................................................. 62 3.1.1. Tabele. ................................................................................ ................................................ 62 3.1.2. Frames (cadre) în HTML ................................................................................ ................... 65 3.1.3. Formulare ........................................ ................................................................................ .. 68 3.2. XML ................................................................. .......................................................................... 72 3. 3. CSS - CASCADING STYLE SHEETS (FOI DE STIL IN CASCADA) ....................... ............................... 73 4. PROGRAMAREA SERVER – SIDE CU ASP.NET........ .......................................................... 76 4.1. SERVERUL IIS. ................................................................................ ............................................. 76 4.2. CARACTERISTICI ALE ASP SI ASP .NET ....................................................................... .............. 76 4.3. CREAREA DE APLICAŢII WEB FOLOSIND ASP.NET.................. ................................................... 78 4.3.1. Configurarea masin ii de lucru pentru proiecte ASP.NET............................................. ..... 78 4.3.2. Proiectele ASP.NET in Visual Studio .NET cu C# ................. ............................................ 78 4.3.3. Formulare în ASP.NET ...... ................................................................................ ................ 79 4.3.4. Controale în ASP.NET .................................. ..................................................................... 80 4.3.5. Pastrarea informatiilor ........................................................ .............................................. 81 4.3.6. Navigarea intre Forms c u pastrarea informatiilor ...................................................... ...... 81 4.3.7. Securitatea în ASP.NET .......................................... ........................................................... 82 4.4. ADO.NET..... ................................................................................ .............................................. 83 4.4.1. Obiectele ADO.Net...... ................................................................................ ....................... 85 4.4.2. Configurare, mentenanta ...................... ............................................................................. 86 5. REFERINTE .................................................................. ............................................................... 88

Arhitecturi Software 51 1. Arhitecturi Software Dezvoltarea de aplicatii / programe software implica mai multe etape, programare a (scrierea de cod propriu-zisa) fiind doar una dintre ele si poate să insemne doa r aproximatv 25% din timpul total de dezvoltare. Etapele sunt: • Analiza cerintelo r • Proiectarea de nivel inalt (arhitectura) • Proiectarea componentelor • Implementar ea • Testarea si validarea • Punerea in functiune • Intretinerea Proiectarea la nivel inalt, sau stabilirea arhitecturii are o importanta deosebita in acest proces, d eoarece alegerile facute aici determina derularea viitoarelor etape, implicit li mitele intre care se va programa efectiv aplicatia. Arhitectura este un model sc ris al unui sistem, care poate fi utilizat la construirea sistemului propriu-zis , şi este formata din: • Definirea scopului sistemului. • Modelul de date. • Diagrame de flux de date. • Fluxul interfetei cu utilizatorul. Exista mai multe modele arhite cturale, dintre care putem aminti: • Modelul client-server • Multi-strat Aplicatii o rientate pe servicii 1.1. Modelul client- server Termenul client-server este folosit prima data in 1980, legat de calculatoarele dîntr-o reţea. Arhitectura software client-server este o infrastructură modulară, bazată p e mesaje. Un client este definit ca un solicitant de servicii, iar serverul ca u n prestator de servicii. O masină (un calculator) poate fi in acelaşi timp atât client cât şi server în funcţie de aplicaţiile rulate. Precursoare ale modelului client-server a u fost arhitecturile de tip mainframe si file sharing. Propozitia precedenta nu e prea corecta, pentru ca se refera strict la modul in care erau utilizate calcu latoarele in trecut. Urmatoarele paragrafe nu prea au legatura cu modelul arhite ctural client-server, ci tot cu modul in care erau utilizate calculatoarele. In plus, sunt si niste erori in exprimare, cum ar fi „Comunicarea între client şi server se realizează prin intermediul interogarilor SQL sau a RPC (Remote Procedure Calls )”. Una este SQL si cu totul altceva este RPC – nu prea au legatura. În arhitectura ma inframe aplicaţiile rulau pe un computer principal, iar utilizatorii interacţionau c u acesta prîntr-un terminal (blind terminal) care trimitea informaţiile tastate. Lim itarile acestui tip de arhitectură constau în faptul că nu asigurau o interfată grafica cu utilizatorul (GUI) si nu puteau accesa baze de date distribuite in diferite l ocaţii. Reţelele de calculatoare iniţiale se bazau pe arhitectura de tip partajare de fisiere (file-sharing) , în care serverul download-a fisiere (dîntr-o locaţie partajat a) pe calculatorul gazda. Aici se rulau aplicaţiile (datele si procesarea lor). Vi teza de lucru era scazută, iar numarul maxim de utilizatori, care accesa simultan resursele partajate, era mic. Ca urmare a limitărilor arhitecturii de tip file-sha ring, a aparut modelul client – server, în care serverul de fisiere a fost inlocuit de un server de baze de date. Prin utilizarea unui sistem de gestiune a bazelor de date (SGBD) se raspundea in mod direct cererilor utilizatorului. De asemenea se reduce traficul in retea prin returnarea unui raspuns la o interogare, faţă de re turnarea unui întreg fisier. Apar si interfatele grafice (GUI) pentru

transmiţând ar entele şi recepţionând rezultatele. in clasele / paginile in care se afiseaza informati i. Cu alte cuvinte. • Isi vede numai de propriile responsabilitati. clientul este programul pe care il avem in stalat pe calculatorul personal cei care dorim să comunicam prin acest serviciu. adica a celor ca re au conturi de Windows Live. In acest caz. respectiv cand iese. o Tine evidenta sesiunilor clientilor. O aplicatie RPC va consta dintr-un client si un server. cum ar fi de exemplu serverul Exchange + Outlook. adic a le trimite mai departe catre clientul / clientii (in cazul unei conferinte) de stinatari. avand la baz a tehnologiile Internet. 1. o Etc. interfata cu utilizatorul. sau mai bine spus clasele / paginile care formeaza aceasta interfata. In astfel de arhitecturi. . serverul fiind localizat pe maşina care execută procedura.52 Programare Web (suport de curs) accesul la baza de date partajata (interfeţe numite şi front-end). In loc de ultimele 4 paragrafe. cum ar fi: • Windows Live Messenger.2. Clientul şi serverul se execută ca două procese separat care pot rula pe calculatoare diferite din reţea. • Stie exact modul de comunic are / interactiune cu straturile adiacente. Modelul multi-strat Arhitecturile multi-strat sunt acelea in care fiecare strat logic: • Are un scop p recis. o Primeste mesaje de la clienti si le „ruteaza”. as insista mai mult pe niste modele client-server foarte cunoscute. D e exemplu. S erver-ul (in acest caz programul server este instalat de fapt mai multe masini) este programul „central” care: o Are baza de date a utilizatorilor. Comunicarea între c lient şi server se realizează prin intermediul interogarilor SQL sau a RPC (Remote P rocedure Calls). adica „stie” tot timpul cand cinev a este logged in. cu Live Messenger pornit. Modelul clientserver Mecanismul RPC a aparut cu mai bine de doua decenii in urma in lumea Unix si est e folosit in construcţia de aplicaţii distribuite pe sisteme eterogene. Solutiil e de email. nu trebuie să „stie” cum anume se realizeaza accesul la ba za de date. Aplicaţia client comunica prin reţea – via TCP/IP – cu procedura de pe calculatorul aflat la distanţă. este usor de separat anumite functionalitati care nu ar trebui să depinda unele de altele.

Stratul de mijloc poate fi format la randul lui din mai multe nivele. iar SGBD-ul rulea za pe un server de baze de date sau mainframe. Astfel. Cele 3 nivele sunt: . De exemplu. Sp re exemplu schimbarea sistemului de operare din Windows în Linux poate afecta doar modulul de interfaţă.Arhitecturi Software 53 nu este nevoie să avem cod care lucreaza cu baza de date. putem avea arhitecturi multi-strat pe 2 nivele (two tier architecture). procesarea. codul de a fisare a informatiilor si de captare a datelor introduse de utilizator) este ins talata pe un server. caz in care arhitectura este numită multi str at cu n nivele (n-tier architecture). Interfaţa cu utilizatorul . În arhitectura multi-strat pe 3 nivele (three tier architecture) se introduce un nou strat intre interfaţă şi SG BD. Acest model asigură o flexi bilitate sporita. iar sistemul de gestiune a bazelor de date pe un calculator mai puternic (server) care deserveste mai multi clienti O alta arhitectura pe 2 nive le poate fi o aplicatie web in care interfata propriu-zisa (paginile. stocarea si accesarea datelor sunt mod ule separate. in care să spunem ca interfaţa cu utilizatorul este situată pe calculatorul utilizatorului sub forma unei aplicatii Windows (deci instalata pe calculator). procesarea logica poate consta din unu l sau mai multe module care ruleaza pe un server de aplicatii. se realizeaza o separare logica benefica pentru intelegerea mai usoara si intretinerea mai efici enta a software-ului. De obicei. iar baza de date pe un alt server. care se pot situa pe platforme diferite. interfaţa cu utilizatorul rulează pe un alt calculator şi foloseşte o interfaţă grafica standard (GUI). fiecare modul putand fi modificat independent de celelalte.

54 Programare Web (suport de curs) Nivelul de prezentare (presentation tier) sau interfaţa cu utilizatorul: prezentar ea rezultatelor sistemului catre utilizator si preluarea de informatii de la uti lizator • Nivelul logic de procesare (logic tier / business logic tier/ transactio n tier) : funcţionalitatea specifică aplicaţiei. Cu alte cuvinte mesajul trebuie să aibă o mare putere de descriere si nu una de „comanda”/instruire.Abstractiz area Serviciului – un serviciu expune ceea ce face si nu cum o face . astfel in cat să poata fi gasite si folosite prin intermediul unor mecanisme de descoperire. arhitecturile d e tip SOA nu impun utilizare unei anumite tehnologii [precum REST. numit un serviciu compus. RPC. realizat pri n constrangeri arhitecturale precum: . Put em astfel incerca să definim SOA ca fiind: o paradigma pentru organizarea si utili zarea capabilitatilor distribuite care pot să fie sub controlul unor entitati dife rite. Aceasta paradigma ofera o modalitate uniforma de descoperire si interactio anre. Aplicaţii orientate spre servicii Pentru a discuta despre Arhitecturi Orientate pe Servicii (SOA). prin intermediul carora se trimite doar continut si nu descriere comportament ala a sistemului. • 1. Conceptul cheie care permite acest lucru este faptul ca s erviciile sunt independente. si care este accesibila de cat re orice producator sau consumator interesat. implementare. in cele ce urmeaza se va incerca def inirea Serviciilor Web pe baza acestor concepte. etc. software sau alte tipuri de si steme de tip consumator-producator. Pe langa conceptul de interconectare slaba. Nivelul de date (data tier): Interact iunea cu suportul datelor (baze de date. algoritmi.Contractul Serviciului – se refera la faptul ca serviciile sunt de acord să comunice pe baza unui agreement stipulat de catre unul sau mai multe servicii prin intermediul unor documente descriptive . Serviciile Web nu sunt altceva decât o . Resursele aflate într-o „retea” sunt expuse ca servicii indepen dente care pot fi accesate fara cunostiinte apriori despre ceea ce rezida in spa tele lor: platforma. dar extensibil a. Aceste concepte generice sunt valabile fie ca se vorbeste despre business-uri. fisiere. Din pacate nu exista o definitie universa l acceptat pentru SOA. etc). Avand bazele puse pentru conceptul de SOA. servicii web.Fiecare serviciu ofera un set de interfet e simple si care ofera doar o semantica generala. . Dupa cum mentionam anterior. DCOM. fara ca se rviciul să fie nevoit să stie in prealabil nimic despre aplicatia care il invoca.Autonomia Serviciului – un serviciu are control tot al asupra logicii pe care o incapsuleaza . ar trebui să plec am mai intai de la definitia acestora.Compunerea Serviciilor – colectii de servicii pot să fie coordonate si asambalte astfel in cat să formeza un nou servici u. Ceea ce se poate spune in schimb despre acest mode este c a prin intermediul lui se incearca descrierea unor arhitecturi bazate pe servici i slab interconectate care suporta modelarea proceselor de business si a necesit atilor utilizatorilor. Serviciile au fos t concepte pentru a putea să fie reutilizate.Refolosirea Serviciului – in sine conceptul se serviciu implica reutilizare.Intre interfetele diferitelor se rvicii se schimba doar mesaje care respecta o schema predefinita.3. .Incapsularea Serviciului . si pot fi apelate într-un mod standardizat pentru a-s i indeplini sarcinile pentru care au fost proiectate si implementate. Conceptul de baza al SOA este aceala de interconectare slaba. mai e xista si urmatorele concepte referitoare la principiile unei arhitecturi de tip SOA: .Descoperirea Serviciilor – serviciile s unt concepute astfel incat să isi descrie functionalitatea catre „exterior”. CO RBA sau Servicii Web]. sa u ca aplicatia care invoca serviciul să aibă nevoie să inteleaga mecanismele interne p rin care serviciul isi duce la bun sfarsit rolul pentru care a fost definit. .

Cea mai importanta trasatura a specificatiilor WS-* est e posibilitatea lor de a fi compuse. incredere. dar ca un compus.Descrierea unui Serviciu Web se va face folosind un limbaj de markup numit WSDL – Web Service Description Language. Telul acestor specificatii este acela de a oferi sabloane pent ru functionalitati avansate ale Serviciilor Web. toate mesajele trebuie să fie transporta te prin intermediul SOAP. Pentru exemplificare . Compunearea protocoalelor asociate acestor specificatii permite o dezvoltare incrementala a Serviciilor Web. Modelul acesta poate fi exprimat schematic astfel: - . In cazul concret al Serviciilor Web. s-a facut simti ta nevoia unor standarde suplimentare pentru a putea exprima concepte precum sec uritatea. SOAP este un acronim pentru Simple Object Access Protocol. SOAP nu face altceva decât să defineasca un format pentru mesaje care pot fi trimise intre servic ii web deasupra unui numar de protocoale internet.Interfetele serviciilor trebuie să fie construite peste protocoale din Internet.Cu exceptia atasamentelor binare. folosind un anumit set de protocoale si restrictii.example . In cele ce urmeaza vom discuta despre Servicii Web de tip SOAP si infrastructuri oferite de platforma . In momentul de fata exista doua mari clase de Servicii Web. Cu alte cuvinte. Clasa de Ser vicii Web de tip SOAP aduce urmatoarele constrangeri fata de cele mentionate mai sus: . gazduira.com/WebService"> <IDCursant>C010030</IDCursant > </obtineDetaliiCursant > </soa p:Body> </soap:Envelope> Se poate observa in exemplul de mai sus structura unui mesaj de tip SOAP: Plicul: <soap:Envelope> Continutul acestui delimitat de: <soa p:Body> Odata cu dezvoltarea standardelor pentru Servicii Web de tip SOAP (de ac um incolo numit simplu Servicii Web) si cu adoptia lor pe piata. ele rezolva probleme de functionalitate ridicata adesea intalnite in aplicatii distribuite.NET pentru implementarea/dezvoltar ea. O serie de firme din industria software au dezvoltat in consecinta o suita de standarde numite colectiv WS-* care trateaza aceste probleme. increderea si tranzactiile. toata comunicarea intre servicii trebuie să fie făcută prin mes aje in format XML.Arhitecturi Software 55 modalitate prin care o arhitectura SOA este realizate. atasamente.). FTP sau SMTP. precum HTTP. pe masura ce f unctionalitatea lor o cere (securitate. .Existenta regist relor UDDI (Universal Description Discovery and Integration) care au ca scop ind exarea Serviciilor Web. desco perire. . Decizia de a descrie mai indetaliu Serviciile Web de tip SOAP este aceea ca ele sunt recunosc ute de piata ca un standard defacto. mai jos este un mesaj SOAP: <soap:Envelope xmlns:soap="http://schemas. tranzactii. fapt vizibil si prin adoptia majoritara a a cestora. rularea si mentenanta unor Servicii Web de tip SOAP. SOAP se comp orta ca un plic care muta continut dintr-un punct in altul. org/soap/envelope/"> <soap:Body> <obtineDetaliiCursant xmlns="http://www. totodata pastrand simplitatea n ativa a Serviciilor Web. UDDI-ul permite interogarea să prin intermediul SOAP si fa ciliteaza accesul la WSDL-ul Serviciilor Web pe care le indexeaza. . Individual fiecare specificatie rezolva o problema izolta. s i anume: SOAP si REST. urmatoarele doua restrictii sunt impuse: . etc.xmlsoap.Exceptand atasamentele bi nare alea unor mesaje.

Suportul pentru descoperire es te deasemenea integrat prin suportarea protocolului UDDI. WS-SecureConversation o pentru incredere: WS-ReliableMessaging pentru tranzact ii: WS-Coordination si WS-AtomicTransactions .NET 2.0 aduce suport in cadrul platformei .f olosind Microsoft Visual Studio 2005 in colaborare cu platforma .folosind Web Service Enhancements 3. WS-Trust. 0 este oferit ca un pachet care se integreaza perfect cu suita de dezvoltare VS 2005.0. WSMetadataE xchange. WSDL.NET 2. WSE 3. Crearea serviciului este facila.56 Programare Web (suport de curs) In cele ce urmeaza se vor prezenta succint produsele din platforma Microsoft car e compun ecosistemul pentru construirea si mentenanta sistemlor distribuite impl ementate folosing Servicii Web. SOAP.0.NET 3. WS-SecureConversation. . WSE 3. WS-Addr essing o pentru descrierea interfetelor (asa numita MetaData): WSDL. SOAP. se pot realiza Servicii Web care sunt in conformitate cu ultimele specificatii ale WS-*. WS-Security. WS-SecurityPolicy o pentru securitate: WS-Trust. numarand astfel urmatoarele: o pentru trimiterea mesajelor: XML. WS-Security .0 [WSE 3. iar partea de proxy fiind deasemenea generata automat pe partea de client.0 pentru XML. Constructia de Servicii Web se poate realiza .folosind p latforma . WCF aduce suport integral pentru toate standardele recunoscute cat si cele mai populare adoptate de piata .NET 2. WS-Policy. prin i ntermediul carora se pot implementa servicii web care sunt in conformitate cu st andardul WS-Interoperability [WS-I].0] in colaborare cu VS2005 si . WSAddressing si MTOM . partea de contract fiind generata automat pe partea serviciului. API care permite un model unificat de programare si rulare a Serviciilor Web folosind limbaje managed.0 care aduce un set nou de API-uri printre care si Windows Commu nication Foundation. precum C#.

către o anumită aplicaţie. unde nnn trebuie să fie un număr între 0 şi 255. În 1962 Paul Baran şi Donald Davies propun – independent – ideea unui si stem de comunicare între reţele bazat pe comutarea de pachete – packet switching.0. crearea sistemului DNS (Domain Name System). iar protocolul IP (Internet Protocol) se refera la modealit atea de adresare. conexiunile să rămână intacte. Pachetele pot chiar să sosească într-o o ne diferită faţă de cea în care au fost trimise. mergând de la transferul de fişiere până la transmiterea vorbirii în timp real. Protocoale de reţea 2. punându-se în corespondenţă adresele IP cu numele gazdelor. atâta timp cât funcţionau maşina sursă şi maşina stinaţie. chiar dacă o parte din maşini sau din liniile de t smisie erau brusc scoase din funcţiune. Prin prezenta porturilor si deoarece aplicatiile ca re deservesc diferite servicii pe un sistem ruleaza pe porturi diferite. DoD dorea ca. prin intermediul căruia calculatoarele erau organizate în domenii. Fiecare computer conectat la internet are o adresa de IP unică. Acea stă arhitectura a fost implementată de ARPANET. Numerele p orturilor sunt cuprinse intre 0 si 65535 si sunt impartite in doua clase: cele p ana la 1024 sunt rezervate pentru sistemul de operare.nnn. 127. deoarece se aveau în vedere aplicaţii cu cerinţe divergente. putem a vea servicii care ruleaza concomitent pe ¡ . este axul pe care se centrează întreaga a rhitectură. caz în care rearanjarea cade în sarcina ni elurilor de mai sus (acele nivele ce urmeaza să proceseze pachetele primite).46. un obiectiv major a fost ca reţeaua să poată supravieţui pierderii echipamentelor din subreţea. după numele celor două protocoale fundamentale utilizat e. Toate aceste cerinţe au condus la alegerea unei reţele cu comutare de pachete bazată pe un nivel inter-reţea fără conexiuni. Mai mult. Nivelul de transport sau TCP ataşează pachetelor trimise un număr de port al serviciului dest inatar şi direcţionează pachetele care ajung.nnn.microsoft. Această situaţie a determinat. www.Protocoale de reţea 57 2.0. era nevoie de o arhitectură flexib ilă.254. Fiecarui calculator îi este asociată o adresă de loopback 127. în 1984. Acest nivel. Modelul de referinţă TCP/IP Pana în anii 60.1. comunicarea între computere se realiza greoi prin intermediul linii lor telefonice. fără a întrerupe conver existente.192 .1 se mai numeşte şi localhost. Porturile sunt numere întregi care permit unui computer să f acă diferenţa între comunicaţiile internet ce au loc la un anumit moment dat.com are ip-ul 207. Protocolul TCP (Transfer Control Protocol) se refera la modalitatea de transm itere a informatiei. Adresele IP sunt s ub forma nnn. numit nivelul internet (IP). la momentul redactarii acestui document. Dată fiind îngrijorarea DoD că o parte din gazde. În anii 80 au fost conectate la Arpanet un număr foarte mare de reţele. iar cele peste 1024 sunt disponibile dezvoltatorilor. routere şi porţi de in terconectare ar putea fi distruse la un moment dat.1. care înseamna “acest calculator”.nnn. o reţea de calculatoare sponsorizată de DoD (Department of Defence). Cu alte cuvinte.0. Fiecare serviciu c munică pe un anumit port.0. Spre exemplu. Rolul său este de a permite gazdelor să emită pachete în orice reţea şi face ca chetele să circule independent până la destinaţie. Arhitectura a devenit cuoscută mai târziu sub denumirea de modelul de referinţă TCP/IP.

) conexiunea dintre client şi server este întreruptă. Protocolul HTTP Unul dintre cele mai importante şi de succes servicii ale Internetului. Acest lucru înseamnă că după ce elementele cerute sunt descarcate pe calculatorul utilizatorul ui. Telnet. se reali zează o nouă cerere către acesta. deoarece poate deosebi pachetele adresate celor doua servicii pe baza portului catre care sunt trimise. iar fiec are nivel comunica doar cu nivelul imediat de sub el. FTP (File Transfer Protocol) facilitează transferul de fişi ere între două calculatoare din internet. Acest lucru înseamnă că HTTP nu este orientate pe conexiu e (connection-oriented). SSL. Cele mai comune porturi sunt: FTP : 20/21. a fost instituit la CERN (Centre Européen . pe un sistem (server) pot rula concomitent aplicatii server si pentru protocolul HTTP cat si pentru protocolul FTP. SMTP. Telnet: 23. Micros oft SQL Server:1433. Printre protocoalele de nivel aplicatie. la primirea de date. IMAP. iar browserul descoperă ca are nevoie de o alta resursa de pe server.server în care clienţii (brow serele web) trimit o cerere unui server web. Acest model nu este folosit însa în practică. datele pleaca din nivelul aplicatiei. FTP. S SL (Secure Socket Layer) este un protocol folosit pentru transmiterea de date te xt criptate in internet. POP3. enumeram cateva di n cele mai cunoscute: HTTP. iar nivelul cel mai de sus reprezinta nivelul aplicatie . Un server poate deservi clienti atat ai serviciului sau HTTP cat si a celui FTP. In aceasta arhitectura multi-nivel. SSH etc. Modelul TCP/IP este înrudit cu modelul de referinţă OSI (Open Systems Interconnection). rămânând mai mult u odel teoretic. 2. Nivelul cel mai de jos reprezinta n ivelul fizic al retelei. Modelul OSI este format din 7 straturi asigurând astfel mai multă flexibilitate. fieca re nivel comunica doar cu nivelul imediat de deasupra lui. World-Wide Web-ul – mai pe scurt Web sau spaţiul WWW. In figura de mai jos se poate vedea sitva de comunicare propusa d e modelul ISO/OSI cu cele 7 nivele ale sale. text etc. Astfel. fiecare nivel comunica doar cu nivelele ad iacente: la transmiterea de date.2.58 Programare Web (suport de curs) acelasi calculator. HTTP (H yper Text Transfer Protocol) este un protocol client . HTTP: 80. Telnet este un pro tocol care permite unui utilizator să se conecteze de la un calculator la altul. SMTP (Simple Mail Transfer Protocol) este un protocol folosit pentru schimbul de mesaje de poştă electronică. După ce serverul returnează elementele cerute (imagini.

domain=www. expires=Mon. Browse rul cere şi afişează şi celelalte elemente necesare în pagină (de exemplu imaginile). 2. Serverul Web î chide conexiunea TCP. Serverul web răspunde trimiţând un fişier HTML.com.com. domain=. domain=live.Protocoale de reţea 59 pour la Recherche Nucléaire – Centrul European de Cercetări Nucleare de la Geneva) în an ul 1989. Utilizând conexiunea TCP. domain=.live.0.com. Etapele care se parcurg între cerere şi răspuns sunt: 1. 04-Oct-2021 19:00:00 GMT. clientul care a iniţiat conexiunea trimite o cerere (de exemplu un docum ent HTML). 3. Browserul afişează textul din fişierul HTML trimis. Browserul întreabă serverul local D NS adresa IP a maşinii pe care se află pagina cu URL-ul selectat. 7. Cerer ile clientului şi răspunsurile serverului Web sunt descrise de protocolul HTTP (Hype r Text Transfer Protocol).1 200 OK Date: Wed. 6.live. la care serverul trimite un răspuns (documentul cerut sau un mesaj de e roare). Web – ul a apărut din necesitatea de a permite cercetătorilor răspândiţi în lume s aboreze utilizând colecţii de rapoarte. browserul trimite o comandă GET. path=/ CacheControl: no-cache Pragma: no-cache Expires: -1 Content-Type: text/html.com.com.com. Exemp u de cerere din partea clientului: GET / HTTP/1. După trimiterea răspunsului conexiunea dintre client şi server se încheie. path=/ Set-Cookie: frm=true. Br owserul determina URL – ul cerut de utilizator. După stabilirea conexi unii TCP. domain=. 15 Aug 2007 09:49:56 GMT Server: Microsoft-IIS/6.com Exemplu de răspuns al serverului: HTTP/1. desene. path=/ Set-Cookie: mkt2=ui=ro-r o. Browserul stabileşte o conexiune TCP cu portul 80 al serverului cu IP – ul obţinut anterior. 8. fotografii şi alte tipuri de documente aflate într-o continuă dezvoltare. domain=live. path=/ Set-Cookie: frm=tr ue. 4.live. path=/ Set-Cookie: lastMarket=ro-ro. p ath=/ Set-Cookie: lastMktPath=ro/ro.live. domain=.live. 04-Oct-2021 19:00:00 GMT.0 P3 P:CP="BUS CUR CONo FIN IVDo ONL OUR PHY SAMo TELo" S:WEBA12 X-Powered-By: ASP.50727 Set-Cookie: mktstate=E=&P=&B=.com. charset= utf-8 Content-Length: 5939 • Metodele puse la dispoziţie de protocolul HTTP sunt: HEAD – clientul cere numai ante tul paginii . expires=Mon. Comunicaţia dintre clientul web (browseru l) şi serverul web are loc în felul următor: procesul server Web (spre exemplu Microso ft IIS – Internet Information Services) „ascultă” portul TCP 80 al maşinii gazde pentru a răspunde eventualelor cereri de conexiune venite de la clienţi.live.1 Host: www. 9. pa th=/ Set-Cookie: mkt1=norm=-ro. planuri. 5.NE T X-AspNet-Version: 2. Serverul DNS co munică browserului adresa IP cerută.

trimite date pentr u a fi procesate pe server PUT – inlocuieşte conţinutul paginii specificate cu datele trimise de client DELETE – solicită ştergerea paginii specificate TRACE – permite client ului să vadă cum sunt prelucrate mesajele OPTIONS – returnează metodele HTTP suportate d e server CONNECT . Datele introduse de utilizator vor fi sub forma de perechi nume=valoare. Metoda implicită este GET. datele trimise nu mai sunt afişate în bara de adrese a browserului. datele transmise serverului pot fi vizualizate în bara de adrese a browserului. Desi difera d in punct de vedere al sintaxei. asemenea. fiecare script din cadrul lui este interpretat si rezultatul executiei este introdus ina poi in fisierul static HTML inainte ca rezultatul să fie trimis catre client (brow ser web).NET în Live Search. putându-se transmite cantităţi mari de date. dar există versiuni şi pentru alte servere Web. nu sunt capabile să construiasca controale reutilizabile care să incapsuleze functionalitati complexe pentru interactiunea cu utilizatorul • Perl (Practical Extraction and Report Langu age) este un limbaj de programare complex. o aplicatie sau chiar un framework: • CGI (Common Gateway Interface). Pentru a transmite date serverului se poate folosi metoda GET sau metoda POS T. Formularele HTML sunt folosite pentru ca utilizatorii să introducă date în câmpurile ace stora şi să le transmită serverului Web (utilizând browserul.60 Programare Web (suport de curs) • • • • • • • GET . Un fisier PHP/ASP p oate fi combinat cu date de tip text. o conexiune TCP şi protocolu l HTTP). precursor al PHP • JSP (JavaServer Page s) este o platformă de programare Web creată de Sun Microsystems şi face parte din spe cificaţia Java 2 Entreprise Edition (J2EE). Cele mai răspândite servere Web sunt : • IIS (Internet Information Server) de la Microsoft.com/results. atat PHP cat si ASP sunt interpretate. . lucru util când se transmit informaţii confidenţiale. ci se bazeaza pe limbajele VBScript si JScript. Lucrea ză bine cu serverul IIS. insa aduc unele limitari: sunt lente deoarece la fiecare accesare fisi erele sunt procesate si interpretate (in loc să fie compilate). Dacă se utilizează GET. datele primite de la browser (via HTTP) sunt prelucrate de un script. se poate folosi url-ul : http://search.NET.live. • PHP (iniţial Person al Home Page apoi PHP: Hypertext Preprocessor) şi ASP (Active Server Pages).converteşte conexiunea de tip cerere într-un tunel TCP/IP . de ob icei pentru a facilita comunicaţii securizate prin SSL (HTTPS). De fapt. De exemplu pen tru a cauta informaţii referitoare la ASP. in momen tul executiei.clientul cere serverului să trimită pagina specificată POST . conform specificatiilor HTTP. marcatori HTML si comenzi script. Apache (open sourc e). ASP nu ofera un limbaj nou.aspx?q=ASP.php/. Aceste modele completeaza destul de bine suportul dezvoltarii aplicati ilor Web. La nivelul serverului. Reprezinta o serie de script-uri exec utate pe serverul web. Acestea pot fi scrise in orice limbaj de programare (inte rpretat sau compilat) cu respectarea urmatoarelor restrictii: programul scrie da tele la iesirea standard si genereaza antete care permit serverului Web să interpr eteze corect iesirea scriptului. Este inclus ca parte componentă a sistemelor de operare Microsoft ( Windows NT Server.asp. in urma cererii unui client Web. Caracterul ? semnifică faptul că se transmit date către serv er. iar perechile nume=valoare pot fi separate prin caracterul &. ele urmând după URL-ul fişierului ce conţi ne scriptul care le va prelucra. codul lor fiind stocat in fisiere externe cu extensia . ASP ( Active Server Pages) este o platformă de programare Web creată de Miscrosoft. Metoda POST permite ca transmit erea datelor către server să se facă în flux. fisierul este procesat. Windows 2000 Server şi Windows Server 2003).

. Server-side scripting reprezintă „pro gramarea” comportamentului serverului.Protocoale de reţea 61 JSP utilizează sintaxa XML şi o serie de clase şi funcţii Java. iar client-side scripting se refera la „progr amarea” comportamentului browserului de pe client. Programarea la nivel de client se realizează în special prin JavaScript. Codul JSP este compilat de servlet-uri binare pentru o procesare rapidă.

. au dezvoltat adesea propriile "extensii" HTML in afara procesului standard si le -au incorporat in browserele lor. Pentru a insera un rand într-un tab el se folosesc etichetele <tr>.</table>. Standardul oficial HTML e ste stabilit de World Wide Web Consortium (W3C).. 3.62 Programare Web (suport de curs) 3. HT ML 4. alinierea tex tului etc. fac din el un foarte bun format pentru documentele Internet si Web. printre care si HTML 2. autorii de browsere.</tr> ("table row "= rand de tabel ).. care este afiliat la Internet E ngineering Task Force (IETF). Pentru a insera un tabel se folosesc etichetele corespondente <table> . O celula de date se introduce cu eticheta <td>. fiecare domeniu av and propriile optiuni pentru culoarea fondului.0 si. ac este extensii au devenit standarde de facto adoptate de autorii de browsere. structurarea formatarii si legaturile hipertext. Multe din trasaturile lui. cum ar fi independenta f ata de platforma. <html> <head> <title>tabel</title> </head> <body> <h1 align=center>Un tabel simp lu format din 4 linii si 2 coloane</h1> <hr> <table> <tr> <td>c11</td> <td>c11</ td> </tr> <tr> <td>c21</td> <td>c22</td> </tr> <tr> <td>c31</td> <td>c32</td> </ tr> <tr> <td>c41</td> <td>c42</td> </tr> </table> </body> </html> .</td>. culoarea textului.1.01. care descrie formatul primar in care documentele sint d istribuite si vazute pe Web.1.0. HTML 3. Programarea client . Un rand e ste format din mai multe celule ce contin date..2. In acelasi timp. Elemente avansate de HTML 3. Tabele Tabelele ne permit să cream o retea dreptunghiulara de domenii.1. HTML 4.0. Un tabel este format din randuri. cum ar fi tagul Netscape . cum ar fi Netscape si Microsoft..side Unul din primele elemente fundamentale ale WWW ( World Wide Web ) este HTML (Hyp ertext Markup Language). W3C a enuntat cateva versiuni ale specificatiei HT ML. In unele cazuri. cel mai recent.HTML 3.

• daca tabelul este aliniat pe centru ( <table a lign="center"> ). Daca in tabel sunt definite mai multe atribute bgcolor. atun ci textul care urmeaza dupa punctul de inserare al tabelului va fi dispus in par tea dreapta a tabelului. • daca tabelul este aliniat dreapta ( <table align="right "> ). Culoarea de fond se stabileste cu ajutorul atributului bgcolor. se utilizeaza un atribut al etichetei <tabel> numit border. <table border="2"> <tr> <td>c11</td> <td>c11</td> </tr> </table> Pentru a alinia un tabel într-o pagina Web se utilizeaza atributul align al etiche tei <table>. <table> ( cu prioritate cea mai mica ). <html> <head> <title>tabel</title> </head> <body> <h1 align=center>Un tabel simp lu colorat</h1> <hr> <table border="3" bgcolor="green"> <tr> <td>verde 11</td> < td bgcolor="red">rosu 11</td> </tr> <tr bgcolor="blue"> <td>albastru 21</td> <td bgcolor="yellow">galben 22</td> </tr> <tr bgcolor="cyan"> <td>c31</td> <td>c32< /td> </tr> <tr> <td>c41</td> <td bgcolor="white">c42</td> </tr> </table> . <tr>. unei linii prin eticheta <tr> sau celule de date prin eticheta <td>. Valorile pe care le poate primi bgcolor sunt cele cunoscute pentr u o culoare. atunci prio ritatea este urmatoarea: <td>. Cand atributul border are o valoar e nenula chenarul unui tabel are un aspect tridimensional. o valoare egala cu 0 a grosimii semnifica absenta chenarului. Daca atributul border nu este urmata de o valoare atunci tabelul va avea o grosime prestabilita egala cu 1 pixel. atunci textul care urmeaza dupa punctul de inserare al tabelul ui va fi afisat pe toata latimea paginii. imediat sub tabel. Alinierea este importanta pentru textul ce inconjoara t abelul. care poate fi atasat intregului tab el prin eticheta <table>. cu urmatoarele valori posibile: " left " ( valoarea prestabilita ). Astfel : • daca tabelul este aliniat stanga ( <table align="left"> ). " center " si "right ".side 63 In mod prestabilit. un tabel nu are chenar.Programarea client . Pentru a adauga un chenar unui tabel . Acest atribut poat e primi ca valoare orice numar intreg ( inclusiv 0 ) si reprezinta grosimea in p ixeli a chenarului tabelului. atunci textul care urmeaza dupa punctul de inserare al tabelului va fi dis pus in partea stanga a tabelului.

Toate atribute care pot fi atasate etichetei <td> pot fi de asemenea atasate etichetei <th>.. . Valorea prestabilita a atributului cellspacing este 2.Valorile acestui atribut pot fi numere intregi pozitive. • top ( sus ). Continutul celulelor definite cu <th> este scris cu caractere a ldine si centrat. valoarea prestabilita ).pot fi stabilite exact prin intermediul a doua atribute. inclusiv 0. width si height. Aceste celule sunt i ntroduse de eticheta <th> ( de la " tabel header " = cap de tabel ) in loc de <t d>. cat si etichetelor <td> si <th> pentru a stabili alinier ea textului într-o singura celula. • right ( la dreapta ). • bottom ( jos ). Alinierea pe orizontala a continutului unei celule se face cu ajutorul atributului align care poate lua valorile: • left ( la stanga ).Valorile acestui atribut pot fi numere intregi pozitive.</font>. Dimensiunile un ui tabel . ale etichetei <table>. D istanta dintre marginea unei celule si continutul ei poate fi definita cu ajutor ul atributului cellpadding al etichetei <table>. <html> <head> <title>tabel</title> </head> <body> <h1 align=center>Text</h1> <ta ble width="100%" height="100%"> <tr> <td align="center"> <h2>Text centrat. Alinierea pe verticala a continutului unei celule se f ace cu ajutorul atributului valign care poate lua valorile: • baseline ( la baza ) . si reprezinta distanta in pixeli din tre doua celule vecine. urmate de semnul %. Valorea prestabilita a atributului cellpadding este 1. Distanta dintre doua celule vecine se defineste cu ajutorul atributului cellspacing al etichetei <table>. reprezentand frac tiunea din latimea si inaltimea totala a paginii.latimea si inaltimea .</h2> </td> </tr> </table> </body> </html> Un tabel poate avea celule cu semnificatia de cap de tabel.64 </body> </html> Programare Web (suport de curs) Culoarea textului din fiecare celula se pote stabili cu ajutorul expresiei: <fon t color="valoare">. • char ( alinierea se fa ce fata de un caracter ). si reprezinta distanta in pixeli dintre celule si conti nutul ei. • numere intregi intre 1 si 100. • center ( centrat . Aces te atribute pot fi atasate atat etichetei <tr> pentru a defini tuturor elementel or celulelor unui rand.. • middle ( la mijloc. valoarea prestabilita ).Valorile acestor atribute pot fi: • numere intregi pozitive reprezentand latimea respectiv inaltimea in pixeli a tabelului.

c24< br>c33. a carui valoare determina numarul de celule care se unifica. • extinderea unei celule peste celulele dedesubt se face cu ajutorul atri butului rowspan. Astfel: • extinderea unei celule peste celulele din dreapta ei se face cu aj utorul atributului colspan. a carui valoare determina numarul de celule care se unifica. c4</td> <br>c23..1...</body> este inlocuit de blocul <fr ameset>.</frameset>. ( no breakable space ) este de fapt caracterul spatiu. • dupa <td> se pune <br>. In scopul de a afisa un chenar pentru celule vide se utili zeaza &nbsp în interiorul unei celule: • dupa <td> se pune &nbsp. in care blocul <body>. Frames (cadre) în HTML Ferestrele sau (cadrele) ne permit să definim in fereastra browserului subferestre in care să fie incarcate documente HTML diferite. 3. Su nt posibile extinderi simultane ale unei celule pe orizontala si pe verticala. fiecare cadru este introdus p rin eticheta <frame>. c43. In interiorul acestui bloc. I n acest caz . .U n spatiu introdus prin intermediul acestui caracter nu va fi ignorat de browser. c44</td> </tr> </table> </body> </html> Daca un tabel are celule vide. c34</td> </tr> <tr> <td>c22</td> </tr> <tr> <td>c32</td> </tr> <tr> <td> c41</td> <td colspan="3">c42. o celula se poate extinde peste celule ve cine...side 65 Un tabel trebuie privit ca o retea dreptunghiulara de celule.Ferestrele sunt definite într-un f isier HTML special . in etichetele <td> si <th> vor fi prezente ambele atribute colspan si rowspan. atunci aceste celule vor aparea in tabel fara un chenar de delimitare. Caracterul &nbsp.2.Cu ajutorul a doua atribute ale etichetelor <td> si <th>.Programarea client . <html> <head> <title>table</title> </head> <body> <h1 align=center>Un tabel simp lu cu chenar</h1> <hr> <table border="0"> <tr> <td rowspan="3">c11</td> <br>c21< br>c31</td> <td>c12</td> <td colspan="2" rowspan="3">c13 .

iar a doua si a patra ocupa in mod egal restul de spatiu ramas disponibil. • n* care inseamna n parti din spatiul ramas.*"> <frame src="f1 .*"> <frame src="p2.50%. Mai intai. dupa care a doua subfereastra este impartita in doua subferestre de tip linie.html"> </fr ameset> </frameset> </html> Pentru a stabili culoarea chenarului unui cadru se utilizeaza atributul borderco lor.*"> <frame src=" p1.66 Programare Web (suport de curs) Un atribut obligatoriu al etichetei <frame> este src.50%. <html> <head> <title>frames</title> </head> <frameset cols="*. a treia ocupa jumat ate din spatiul total disponibil iar a doua si a patra ocupa in mod egal restul de spatiu ramas disponibil. care se imparte in trei parti egale .2* inseamna o imp artire in 4 subferestre . a treia ocupa jumatate din spatiul total disponibil . care descr iu modul in care se face impartirea. <html> <head> <title>frames</title> </head> <frameset cols="20%. pagina este impartita in doua subferestre de tip coloana. dintre care prima are 200 pixeli. care primeste ca valoare a dresa URL a documentului HTML care va fi incarcat in acel frame. Elementele listei pot fi: • un numar intreg d e pixeli. Definirea cadre lor se face prin impartirea ferstrelor (si a subferestrelor) in linii si coloane : • impartirea unei ferstre într-un numar de subferestre de tip coloana se face cu a jutorul atributului cols al etichetei <frameset> ce descrie acea fereastra.html"> </frameset> </html> In exemplul urmator este creata o pagina Web cu trei cadre mixte. dintre care prima are 200 pixeli .html"> <frameset rows="*. Acest atribut primeste ca valoare un nume de culoare sau o culoare definita in conformitate . • valoare atr ibutelor cols si rows este o lista de elmente separate prin virgula . Exemplu 1: cols=200. • procente din dimensiunea ferestrei (numar intre 1 si 99 terminat cu %) . • impa rtirae unei ferestre într-un numar de subferestre de tip linie se face cu ajutorul atributului rows al etichetei <frameset> ce descrie acea fereastra.*.html"> <frame src="f2. • o subfereastra poate fi un cadru (folosind <frame> )in care se va incarca un document HTML sau poate fi impartita la randul ei la a lte subfereste (folosind <frameset>). Exemplu 2: cols=200.html"> <frame src="p3. Observatii: • daca mai multe ele mente din lista sunt configurate cu * .Pentru a o crea se procedeaza din aproape in aproape. iar a patra ocupand 2 parti. a doua fereast ra ocupand o parte .* inseam na o impartire in 4 subferestre. atunci spatiul disponibil ramas pentru e le se va imparti in mod egal.1*.

html" height=40% width=50%> </iframe> In acest caz fereastra de cadru intern care are 40%din inaltimea si 50% din lati mea paginii curente. Un cadru intern se insereaza într-o pagina Web i n mod asemanator cu o imagine sau in modul in care se specifica marcajul <frame> . "no" echivalent cu 0.*"> <frame src="p2.barele de derulare nu sunt utilizabile.barele de derulare sunt vizibile atunci cand este necesar <html> <head><title>frames</title></head> <frameset cols="*. Un cadru intern este specificat prin intermedi ul blocului <iframe>.*"> <frame src="p.html"> <frameset rows="*.html"> <f rameset rows="*.*" bordercolor="green" border="15"> <frame src="p1.*" border="0"> <fr ame src="p1.html" scrolling="auto" noresize> </frameset> </html> Atributul noresize al etichetei <frame> (fara nici o valoare suplimentara) daca este prezent.*"> <frame src="p2. Atributul border al etichetei <frameset> permite configurarea latimii chenarel or tuturor cadrelor la un numar dorit de pixeli. • auto . html" scrolling="yes" noresize> <frame src="p. • no .html" scrolling="no" noresize> <fr ame src="p. Acest atribut poate fi atasat atat etichetei <frameset> (dezactivare a fiind valabila pentru toate cadrele incluse) cat si etichetei <frame> (dezacti varea fiind valabila numai pentru un singur cadru).Atributul bordercolor poate fi atasat atat etichetei < frameset> pentru a stabili culoarea tuturor chenarelor cadrelor incluse. O valoare de 0 pixeli va defini un cadru fara chen ar.Programarea client .html "> </frameset> </html> Pentru a obtine cadre fara chenar se utilizeaza border="0".ht ml"> </frameset> </html> Atributul scrolling al etichetei <frame> este utilizat pentru a adauga unui cadr u o bara de derulare care permite navigarea in interiorul documentului afisat in interiorul cadrului.</iframe>. <html> <head><title>frames</title></head> <frameset cols="20%.*. . chenarul unui cadru este afisat si are aspect tridimensional. Afisarea chenarulu i unui cadru se poate dezactivata daca se utilizeaza atributul frameborder cu va loare "no". Valoarea prestabilita a atribut ului border este de 5 pixeli.html" bordercolor="blue"> <frame src="p3. In mod prestabilit. Valorile posibile ale atribu tului frameborder sunt: "yes" -echivalent cu 1.barele de derulare sunt adau gate intotdeauna. <html> <head><title>frames</title></head> <frameset cols="20%.cat si e tichetei <frame> pentru a stabili culoarea chenarului pentru un cadru individual . inhiba posibilitatea prestabilita a utilizatorului de a redimensio na cadrul cu ajutorul mouse-ului..side 67 cu modelul de culoare RGB.. asa cum rezulta din urmatorul exemplu: <iframe src="iframes_ex. Valorile posibile sunt: • yes .html"> <frame src="p3.

68 Programare Web (suport de curs) Atributele aceptate de eticheta <iframe> sunt in parte preluate de la etichetele <frame> si <frameset>, cum ar fi:src,border,frameborder,bordercolor,marginheigh t,marginwidth,scrolling,name,noresize; sau de la eticheta <img> vspace,hspace,al ign,width,height; In mod prestabilit, la efectuarea unui clic pe o legatura noua pagina (catre care indica legatura) o inlocuieste pe cea curenta in aceeasi fer eastra (acelasi cadru). Acest comportament se poate schimba in doua moduri: • prin plasarea in blocul <head>...</head> a unui element <base> care precizeaza,prin atributul target numele ferestrei (cadrului) in care se vor incarca toate pagini le noi referite de legaturile din pagina curenta conform sintaxei: <base target= "nume_ferastra/frame_de_baza"> • prin plasarea in eticheta <a> a atributului targe t, care precizeaza numele ferestrei (cadrului) in care se va incarca pagina nou referita de legatura, conform sintaxei: <a href="legatura" target="nume_fereastr a/frame">...</a> Daca este prezent atat un atribut target in <base> cat si un at ribut target in <a>, atunci cele precizate de atributul target din <a> sunt prio ritare. Numele unui cadru este stabilit prin atributul name al etichetei <frame> conform sintaxei: <farme name="nume_frame"> In exemplul urmator este prezentata o pagina Web cu doua cadre. Toate legaturile din cadrul 1 incarca paginile in c adrul 2. <html> <head><title>frames</title></head> <frameset cols="20%,*"> <frame src="le ft.html" name="left"> <frame src="p.html" name="main"> </frameset> </html> <html > <head><title>frame_left</title> </head> <body> <a href="p1.html" target="main" > Fisierul1</a><br> <a href="p2.html" target="main"> Fisierul2</a><br> <a href=" p3.html" target="main"> Fisierul3</a><br><br> <a href="p1.html" target="_blank"> Fis1 într-o fereastra noua</a><br><br> <a href="p1.html" target="_self"> Fis1 in fereastra curenta</a><br><br> <a href="p.html" target="main"> Home</a><br> </bod y> </html> Atributul target al etichetei<frame> accepta anumite valori : • "_self" (incarcare a noii pagini are loc in cadrul curent); • "_blank" (incarcarea noii pagini are lo c într-o fereastra noua anonima); • "_parent" (incarcarea noii pagini are loc in cad rul parinte al cadrului curent daca acesta exista, altfel are loc in fereastra b rowserului curent); • "_top" (incarcarea noii pagini are loc in fereastra browseru lui ce contine cadrul curent); 3.1.3. Formulare Un formular este un ansamblu de zone active alcatuit din butoane, casete de sele ctie, campuri de editare etc. Formularele asigura construirea unor pagini Web ca re permit utilizatorilor să introduca informatii si să le transmita serverului. Form ularele pot varia de la o simpla caseta de text , pentru introducerea unui sir d e caractere pe post de cheie de

Programarea client - side 69 cautare, pana la o structura complexa, cu multiple sectiuni, care ofera facilita ti puternice de transmisie a datelor. Un formular este definit într-un bloc delimitat de etichetele corespondente <form> si </form>. Exista doua atribute importante ale elementului <form>. 1. Atributul action prec izeaza ce se va intampla cu datele formularului odata ce acestea ajung la destin atie. De regula , valoarea atributului action este adresa URL a unui script afla t pe un server WWW care primeste datele formularului , efectueaza o prelucrare a lor si expedieaza catre utilizator un raspuns. <form action="http://www.yahoo.c om/cgi-bin/nume_fis.cgi">. Script-urile pot fi scrise in limbajele Perl, C, PHP, Unix shell. etc 2. Atributul method precizeaza metoda utilizata de browser pent ru expedierea datelor formularului. Sunt posibile urmatoarele valori: • get (valoa rea implicita). In acest caz , datele din formular sunt adaugate la adresa URL p recizata de atributul action; (nu sunt permise cantitati mari de date - maxim 1 Kb ) • post In acest caz datele sunt expediate separat. Sunt permise cantitati mar i de date (ordinul MB) Majoritatea elementelor unui formular sunt definite cu aj utorul etichetei <input>. Pentru a preciza tipul elementului se foloseste atribu tul type al etichetei <input>. Pentru un camp de editare, acest atribut primeste valoarea "text". Alte atribute pentru un element <input> sunt: • atributul name , permite atasarea unui nume fiecarui element al formularului. • atributul value ,ca re permite atribuirea unei valori initiale unui element al formularului. Un buto n de expediere al unui formular se introduce cu ajutorul etichetei <input>, in c are atributul type este configurat la valoarea "submit".Acest element poate prim i un nume prin atributul name. Pe buton apare scris "Submit Query" sau valoarea atributului value, daca aceasta valoare a fost stabilita. <form method="post" ac tion="mailto:youremail@youremail.com" > First:<input type="text" name="First" si ze="12 maxlength="12" /> Last:<input type="text" name="Last" size="24" maxlength ="24" /> <input type="submit" value="Send Email" /> </form> Pentru elementul <input> de tipul camp de editare (type = "text") , alte doua at ribute pot fi utile: • atributul size specifica latimea campului de editare depase ste aceasta latime, atunci se executa automat o derulare acestui camp; • atributul maxlength specifica numarul maxim de caractere pe care le poate primi un camp d e editare; caracterele tastate peste numarul maxim sunt ignorate. Daca se utilizeaza eticheta <input> avand atributul type configurat la valoarea "password" , atunci in formular se introduce un element asemanator cu un camp de editare obisnuit (introdus prin type="text"). Toate atributele unui camp de edi tare raman valabile. Singura deosebire consta in faptul ca acest camp de editare nu afiseaza caracterele in clar, ci numai caractere *, care ascund de privirile altui utilizator aflat in apropiere valoarea introdusa într-un asemenea camp. La expedierea formularului insa, valoarea tastata într-un camp de tip "password" se t ransmite in clar.

70 Programare Web (suport de curs) <html> <head><title>forms</title></head> <body><h1>Un formular cu un buton reset </h1> <hr> <form action=mailto:test@yahoo.com" method="post"> Nume:<input type=" text" name="nume" value="Numele"><br> Prenume:<input type="text" name="prenume" value="Prenumele"><br> Password:<input type="password" name="parola" ><br> <inpu t type="reset" value="sterge"> <input type="submit" value="trimite"> </form></bo dy> </html> Butoanele radio permit alegerea , la un moment dat , a unei singure variante din mai multe posibile. Butoanele radio se introduc prin eticheta <input> cu atribu tul type avand valoarea "radio". Italian: <input type="radio" name="food" /> Greek: <input type="radio" name="foo d" /> Chinese: <input type="radio" name="food" /> O caseta de validare (checkbox) permite selectarea sau deselectarea unei optiuni . Pentru inserarea unei casete de validare se utilizeaza eticheta <input> cu atr ibutul type configurat la valoarea "checkbox". Fiecare caseta poate avea un nume definit prin atributul name.fiecare caseta poate avea valoarea prestabilita "se lectat" definita prin atributul checked. <p>Please select every sport that you play.</p> Soccer: <input type="checkbox" c hecked="yes" name="sports" value="soccer" /> <br /> Football: <input type="check box" name="sports" value="football" /> <br /> Baseball: <input type="checkbox" n ame="sports" value="baseball" /> <br /> Basketball: <input type="checkbox" check ed="yes" name="sports" value="basketball" /> Intr-o pereche "name = value" a unui formular se poate folosi intregul continut al unui fisier pe post de valoare. Pentru aceasta se insereaza un element <input > într-un formular , cu atributul type avand valoarea "file" (fisier). Atributele pentru un element de tip caseta de fisiere: • • atributul name permite atasarea unui nume atributul value primeste ca valoare ad resa URL a fisierului care va fi expediat o data cu formularul. Aceasta valoare poate fi atribuita direct atributului value, se poate fi tastata într-un camp de e ditare ce apare o data cu formularul sau poate fi selectata prin intermediul une i casete de tip File Upload sau Choose File care apare la apasarea butonului Bro wse... din formular; atributul enctype precizeaza metoda utilizata la criptarea fisierului de expediat.Valoarea acestui atribut este "multipart/form-data". • O lista de selectie permite utilizatorului să aleaga unul sau mai multe elemente dîn tr-o lista finita. Lista de selectie este inclusa in formular cu ajutorul etiche telor corespondente <select>si </select>. O lista de selectie poate avea urmatoa rele atribute:

Elementele unei liste de selectie sunt incluse in lista cu ajutorul etichetei <o ption>. Acest atribut poate primi urm atoarele valori: a) " off ". atributul name. atunci catre server va fi expe diat textul ce urmeaza dupa <option>. in acest caz: se produce intreruperea cuvintelor la marginea dreapta a editorului . Doua atribute ale etichetei option se dovedesc utile: • • atributul value primeste ca valore un text care va fi expediat serverului in per echea "name=value". Eticheta are urmatoarele atribute: • • • • atributul cols. • • • • • • .DJ</option> <option selected="yes">Iasi -. care specifica numarul de caractere afisate într-o linie.B</option> <option>Craio a -. <select> <option>Bucuresti -. c) " soft ". atributu l rows. in acest caz: intreruperea cuvintelor la marginea d reapta a editorului se produce numai cand doreste utilizatorul. care precizeaza (prîntr-un numar intreg poz itiv . eticheta <select> are un atribut multiple (fara alte valori). nu se include caracterul de sfar sit de linie in textul transmis serverului o data cu formularul. Cand formularul este expediat catre server pentru fiecare element selectat al listei care este se insereaza cate o pereche "name=value" unde name este numele listei. in acest caz: se produce intrerupere a cuvintelor la marginea dreapta a editorului .side • • 71 atributul name. atributul size. caracterul de sf arsit de linie este inclus in textul transmis serverului o data cu formularul. care p ermite atasarea unui nume campului de editare multilinie. daca acest atribut lipseste . In plus. (de la "word wrap"=trecerea cuvintelor pe randul urmator0.IS</option> </select> O lista de selectie ce permite selectii multiple se creeaza intocmai ca o lista de selectie obisnuita.DJ</option> <option selected="yes">Iasi -. caracterul de sfarsit de linie este inclus in textul transmis se rverului o data cu formularul. care ataseaza listei un nume (utilizat in perechile "name=value" expediat serverului). care specifica numarul de linii afisate simultan. b ) " hard ". valoarea prestabilita fiind 1) cate elemente din lista sunt vizibile la u n moment dat pe ecran (celelalte devenind vizibile prin actionarea barei de deru lare atasate automat listei). <select multiple=”yes” size=”3” name=”orase”> <option>Bucuresti -. atributul selected (fara alte valori) perm ite selectarea prestabilita a unui elemment al listei.B</option> <option>Craiova -. care determina comportament ul campului de editare fata de sfarsitul de linie.Programarea client . atributul wrap.IS</option> </select> Intr-un formular campuri de editare multilinie pot fi incluse cu ajutorul etiche tei <textarea>.

care primeste ca valoare textul ce va fi a fisat pe buton. nu exista nici o semantica as ociata cu acestea. Standardul XML nu specifica ni ci semantica si nici multimea de tag-uri ale limbajului. Definirea semantica documentelor XML este o sarcina a aplicat iilor care folosesc documentelor respective sau a foilor de stiluri Avantaje XML : • XML descrie continutul si modul de afisare al continutului. Since it makes everything nice a nd easy to read. 3. se utilizea za eticheta <input> avand atributul type configurat la valoarea "button". • XML ofera facilitati multi ple si imbunatatite de prezentare (de exemplu folosind browserele) Structura unui document XML este arborescentă: <book> <title>My First XML</title> <prod id="33-657" media="paper"></prod> <chap ter>Introduction to XML <para>What is HTML</para> <para>What is XML</para> </cha pter> <chapter>XML Syntax <para>Elements must have a closing tag</para> <para>El ements must be properly nested</para> </chapter> </book> . se lanseaza in executie o functie de tratare a acestui eveniment. etc. Pentru a insera un buton într-un formular.Cand utilizatorul apasa un buton. </textarea> <textarea cols="20" rows="5" wrap="hard" readonly=" yes"> As you can see many times word wrapping is often the desired look for your text areas. atat multimea de tag-uri (marcatori). Cu al te cuvinte XML permite definirea de tag-uri precum si relatia dintre acestea. Spre exemplu <H1> va repr ezenta intotdeauna un header de nivel 1. Toate elementele cuprinse într-un formular pot avea un atribut dis abled care permite dezactivarea respectivului element si un atribut readonly car e interzice modificarea continutului acestor elemente. </textarea> Intr-u n formular pot fi afisate butoane. ca t si semantica asociata fiecarui tag sunt predefinite. Toate documentele au o anumita structura. imagini.2. si specificatiile complete ale acestui limbaj se afla la adresa http://www. iar tagul <documentHTML> nu are nici un sens (nu are asociata nici o valoare semantica). XML Xml (eXtensible Markup Language) este un limbaj care permite definirea documente lor ce contin informatii într-un mod structurat. De oarece nu exista o multime de tag-uri predefinita.Alte do ua atribute ale elementului "button" sunt: • atributul name. Limbajul HTML nu permite s crierea unor astfel de functii (acest lucru este posibil daca se utilizeaza limb ajele Javascript sau Java). Aceste structuri se construiesc utilizand marcatori.).org se ocupa de standard izarea XML-ului.w3. • informatia este ma i usor de gasit si manipulat daca este in format XML. De fapt XML este un met alimbaj pentru definirea limbajelor bazate pe marcatori (markup language). care la randul lui e diferit de continutul dintr-un tabel al unei baze de date).org/TR/WD-xml . In HTML. care permite atasarea unui nume butonului • atributul value. cat si o indicatie despr e rolul pe care il are acel continut (de exemplu continutul din sectiunea header are alt rol fata de cel din footer. Informatia structurata dintr-un d ocument xml are atat continut (cuvinte. Since it makes everything nice and easy to read. W3.72 Programare Web (suport de curs) <textarea cols="20" rows="5" wrap="hard"> As you can see many times word wrappin g is often the desired look for your textareas.

CSS . O foaie este construită din reguli de stil care spu n unui browser cum să arate un document. } body {background-color: black."> </htmltag> O eroare des întâlni tă este folosirea „” în interiorul declaraţiei de mai sus: <p style="background: url("yellow_rock.. Exista doua modalitati de a defini un stil: • sintaxa CSS (Cascading Styl e Sheets). color: white. De exemplu: <p style="background: blue. Selectorul este elementul care este legatla un stil particular.gif"). 1) Declaraţia inline se realizeză cu ajutorul tag-ului st yle.side 73 <book> este elementul rădăcină (root).">Greşit</p> <p style="background: ur l(yellow_rock. </style> <html> <head> <style type="text/css"> p {color: white. color: blue } </style> </head> Orice element HTML este un posibil selector CSS1. property2: va lue2 } Ca exemplu. selectorul în declaraţia CSS: P { text indent: 3em }. Declaraţiile CSS pot fi introduse într-o pagina HTML în 3 modur i: inline.Programarea client . Regulile de stil sunt formate după cum urme ază: selector { property: value } Declaraţiile de stil multiple pentru un singur sel ector pot fi despărţite de punct şi virgulă: selector { property1: value1. este P. marime culoare. title.. 3. De exemplu. color: red } h2 { font-size: large. } </style> </head> <body> <p>White text on a bla ck background!</p> </body> </html> . cssproperty2: value. intern şi extern.gif).Cascading Style Sheets (foi de stil in cascada) Stilurile pun la dispozitia creatorilor de site-uri noi posibilitati de personal izare a paginilor Web. Un stil reprezinta un mod de a scrie un bloc de text ( ad ica anumite valori pentru font. distante fata de margi ni etc).">Corect</p> 2) Declaraţia internă se realizează cu ajutorul tag-ul ui <style> . aliniere.">A new background and font color with inline CSS</p> La modul general declaraţia este de forma: <htmlta g style="cssproperty1: value. prod şi chapter sunt fraţi (siblings) şi sunt copii (child) lui book. următorul segment de cod defineşte proprietăţile culoare (color) şi mări e-font (font-size) pentru elementele H1 şi H2: <head> <title>exemplu css</title> < style> h1 { font-size: x-large.3. • sintaxa Javascript.

css este invalid. un selector ID ar putea f i desemnat astfel: #text3M { text-indent: 3em } La acest selector se va face ref erinţă în HTML folosind caracteristica ID: <P ID=text3M>Textul are în faţă un spaţiu de măr a trei litere m </P> O proprietate este desemnată unui selector pentru a-i manipula stilul. </P> Clasele pot fi declarate fără un element asociat: .css" /> </head> <body> <h3> A White Header </h3> <p> This paragraph has a blue font.css . Un selector ID este desemnat folo sind indicatorul "#" care precede un nume.note { font-size: small } În acest caz. declaraţiile CSS se pun de obicei într-un fişier separat. De aceea. p. Avantajele unei asemenea abordari sunt: • separarea conţinutului paginii de design. Selectorii ID sunt sunt desemnaţi cu scopul de a defini elemente în mod individual şi nu mai multe elemente o dată ca în cazul claselor. astfel permiţând u-i aceluiaşi element să aibă diferite stiluri. Atunci când se foloseşte CSS este de preferat să se separe codul HT ML de cosdul CSS. Toate tagurile din pagina HTML cu acee aşi clasă vor fi formatate identic.74 Programare Web (suport de curs) 3) Declaraţia externă.</P> <P CLASS = html >Acest rând are aceeaşi culoare cu primul. crescând lizibilitatea codului html • modificarea uşoară a design-ulu i unui site prin modificarea într-un singur fişier css decât in mai multe pagini html • reutilizarea uşoară a codului css Declaraţia externă se realizează prin intermediul tag-ul ui <link></link>: <html> <head> <link rel="stylesheet" type="text/css" href="tes t.css { color: #4b0082 } Exemplul de mai sus a creat două clase. margin.html { color: #191970 } p. clasa note poate fi folosită cu orice element. <P CLASS = html>Doar o clasă este permisă pentru un selecto r. css şi html pentru folosirea cu tag-ul P al HTML. În CSS se pot def ini aşa numitele clase. Exemplele d e proprietăţi includ color. Un simplu selector poate avea diferite clase. ca de exemplu. p. </P> <P CLASS = css> De exemplu.html. ¡ ¡ . cu extensia . Caracteristica CLASS (clasă) este folosită în HTML pentru a indica clasa unui element.css trebuie să se afle în acelaşi director cu pagina html. The background color of this page is gray because we changed it with CSS! </p> </body> </html> Fişierul test. şi font. De exemplu.

w3schools. De exemplu. H2. în mod intuitiv. toate titlurile dintr-un document ar putea primi declaraţii identice prîntr-o grupare: H1.Programarea client . H4. gruparea selectorilor şi a declaraţiilor este permisă. dar acestea ar trebui să se evidenţieze în mod logic. dacă nu se cifică altfel. De exemplu. pr oprietatea margin-top nu este moştenită. font -family: sans-serif } Toţi selectorii care sunt interpuşi în cadrul altor selectori vo r moşteni valorile proprietăţilor selectorilor în cadrul cărora sunt interpuşi. Există şi cazuri în care selectorul conţinut nu moşteneşte valorile selecto ului care îl conţine. un paragraf nu va avea aceeaşi margine de sus cum o va avea tot documentul (prin selectorul body).com/css/default. De exemplu. H5. H6 {color: red.side 75 Pentru a descrie formatările repetate într-o foaie de stil. O listă compl etă a selectorilor CSS puteţi găsi la http://www. H3.asp . o culoare definită pentru BODY va fi aplicată şi textului din tr-un paragraf.

adica direct pe sistemul de operare Windows. etc. si care determina o viteza mult mai mare a dezvoltarii aplicatiilor decât direct pe platforma Win32. platformă care permite dezvoltarea unei aplicaţii în orice limbaj do reste programatorul. 2000 si ulterior). D e asemenea. javascript. se poate apoi compila pentru orice sistem de operare care are instalat . sunt: • Permite integrarea usoară a aplicaţiilor Windows cu cele de WEB.NET ASP (Active Server Pages) reprezintă o tehnologie creată de Microsoft pentru a crea pagini web dinamice. Me) si • IIS – Internet Information Server (Windows NT. • Generarea dinamică a răspunsurilor către clienţii WEB. constă în dezvoltarea unei platforme comune pentru mai multe limba je de programare. Microsoft .NET este o platforma de dezvoltare software. tratarea exceptiil or. El este o componenta a Windows XP: Add/Remove Programs -> Add/Remove Windows Components. man agementul duratei de viata a obiectelor (Garbage Collection). etc. Serverul IIS Microsoft Internet Information Services (IIS) este serverul de aplicatii web al Microsoft. scripturile din fisierele ASP pot fi si ele de mai multe tipuri :vbs cript. Programarea server – side cu ASP. active server) Caracteristicile principale ale platformei . .2.NET. • Viteză mare de execuţie. Caracteristici ale ASP si ASP .Personal Web Server (Windows 98. în limbajul Microsoft Intermediate Language.NET Framework. compatibil cu platforma .76 Programare Web (suport de curs) 4. Inovaţia adusă de Microsoft. Principalele caracteristici ale tehnologiei ASP sunt: • Permite accesa rea si actualizarea usoară a bazelor de date. datorită faptului că scriptul nu poate fi vizualizat în browser. Acest lucru este posibil prin dezvoltarea unui interpretor – Comon Language Runtime – care transformă codul de program dintr-un limbaj oarecare.1. 4.NET. ce are la bază stocarea si execuţia scripturilor pe serverul We b. • Securitate ridi cată.NET 4. care are menirea de a oferi programatorilor un mediu in care sunt pus e la dispozitie diverse servicii cum sunt: managementul firelor de executie. Paginile web dinamice create cu ajutorul ASP pot îngloba mai multe tipuri de tehnologii Web existente. Codul r ezultat în limbajul Microsoft Intermediate Language. Serverele Web care suporta tehnologia ASP sunt în număr de două: • PWS .

0.NET.NET. Execuţia s curizată a codurilor. care este stocat în fi siere separate. aduce îmbunătăţiri semnificative faţă de ASP. Utilizează standardele existente pentru comunicare. Visual C++ . scalabilă si robustă care permit e o mare flexibilitate cu foarte puţine linii de cod scrise. Ea preia tot ce este mai bun de la Active Server Pages (ASP) la fel ca si serviciile bogate si facilităţile oferite de Common Language Runtime (CLR) si multe alte facilităţi noi. este interpretat pe măsura parcurgerii scripturilor.Programarea server – side cu ASP. în primul rând trebuie amintite cele dezvoltate d e Microsoft – VB . scris într-un anumit limbaj de programare. • Este independent d e programul de navigare pe Internet.NET.. aceste elemente de interfaţă sunt afisa te prin intermediul limbajului HTML.N ET reprezintă o evoluţie a ASP bazată pe o nouă tehnologie dezvoltată de Microsoft. scrisă în alt limbaj de programare.NET poate fi folosită interfaţa familiară de tip drag-and-drop pentru crearea aspect ului formularelor Web. Pascal. metode si eve nimente controalelor plasate pe ele. Înlocuirea m ediului script cu cel compilat.NET. Microsoft ASP .NET • • • • • • • • 77 Facilitează interoperabilitatea între aplicaţii.0.NET – este cel mai complex. • C# .NET. Totusi. Datorită platformei .NET. etc. cât si limbaje dezvoltate de alte f irme: Borland C#. acesta. C# . iar în cazul utilizării Microsoft Visual Studio . . • Serializarea/deserializarea cu usurinţă a obiectelor. Asigură serializarea/deserializarea obiectelor. • Utilizează noţiunea de code behind. fiind o evoluţie a mediului Visual Basic 6. în cazul ASP.NET. ceea ce în cazul ASP simplu.ASPX) si codul din spatele formularului. Asigură un mediu stabil de programare obiectuală. etc. NET. fiind o evoluţie a mediului VC++ 6. fiind aceea de copiere a codu lui. Tehnologia ASP . Printre limbajele care suportă . Formularel e Web sunt similare formularelor Windows prin faptul că oferă proprietăţi. pot fi clasificate în funcŃie de gradul de complexitate: • VB . era o problemă. Smalltalk. • Asigură interoperabilitatea între aplicaţii WEB.NET. Web Forms reprezintă pa rtea centrală pe care se bazează ASP . între aplicaţii WEB si alte categorii de aplicaţii. Cobol. fără conflicte între versiuni. • Codul aplicaţiei este compilat si executat de server.NET. desi au toate la bază aceeasi pl atformă. indiferent de platforma pentru care s unt create. Phython.NET est e următoarea generaţie a tehnologiei de dezvoltare a aplicaţiilor Web. este cel ma i accesibil. în cazul aplicaţiilor ASP Codul de program al unei a plicaţii. Perl. Rezu ltatul este o nouă modalitate de dezvoltare web rapidă. singura „reutilizare” care se făcea în ASP. si anu me platforma: . pot fi înglobate cu usurinţă în aplicaţiile WEB toate compon ele care erau până acum caracteristice doar mediului Windows. Fortran. • Favorizează reutilizarea codului. ASP . Instalare simplificată. cele mai evidente fiind următoarele: • Execuţia este mai rapidă. este un limbaj „hibrid” între complexitatea limbajului C++ si accesibilitatea oferită de limbajul VB . adică separă partea de prezentare de partea de execuţi e a unei aplicaţii WEB. Acestea reprezintă elementele de interfaţă cu u tilizatorul care dau aplicaţiilor web aspectul si comportamentul dorit.NET Framework. poate fi integrat fără probleme în al tă aplicaţie. Eiffel. Limbajele de programare dezvoltate de Microsoft. • VC ++ . • Securitate cres ută. Formularele Web sunt constituite din două componente: parte a vizuală (fisierul .

trebuie să rulati din linia de comanda fisierul aspnet _regiis. adica codul care este executat la nive l de server. Atentie: daca ati instalat IIS dupa . Se poate ajunge la acel fisier cu click dreapta pe Form si View Cod e.config – acesta este un fisier XML in care se pot seta mai multe informatii de configurare a aplicatiei web.NET Pentru a crea aplicaţii web cu ASP. Configurarea masinii de lucru pentru proiecte ASP. Acestea s unt parte integranta a . care poate fi vizualizat in doua moduri: Design si HTML. Controalele HTML si server sunt compon ente ale interfetei cu utilizatorul care sunt folosite pentru a afisa respectiv colecta informatii catre / dinspre utilizatori.NET\Framework\v1. Crearea de aplicaţii WEB folosind ASP. • Fiecare fisier . Astfel.NET poate fi creat cu ajutorul Visual WebDeveloper 2005 Express E dition: File -> New Web Site -> ASP.exe cu optiunea –i.1 .NET.NET Va trebui să aveti instalate IIS si Visual WebDeveloper 2005 Express Edition. care cuprinde inclusiv unelte de design al Form-urilor web.We b. el este folosit pentru securitate (autentificare). 4. daca ne gandim la modelul arhitectural pe mai multe nive le: • User Interface Layer – Form-uri web. add existing item şi apoi web. • Business Layer – clase in care se efectueaza opera tiile specifice aplicatiei.NET in Visual Studio .NET cu C# Un proiect ASP.este un mediu integrat de dezvoltare. nu veti putea rula aplicatii ASP.1. Avantajele stocatii unor astfel de constante in web.config sunt: modificarile in acest fiser nu atrag dupa sine necesitatea de recompilare a aplicatiei.NET Web Site.NET Framework si inregistreaza ASP. unde este codul din spatele Form-ului. Acest fisier are atasate automat cateva namespaces (folosind cuvantul cheie d in limbajul C# using). (În fereastra soluţion explorer. Proiectele ASP. care instaleaza automat si . ADO.3. Se creaza automat de catre IDE urmatoarele fisiere: • Un Form care este de fapt un fisier Default.aspx. Visual WebDeveloper 2005 Express Edition .2.3. din directorul C:\WINDOWS\Microsoft. printre care se pot observa si cele din familia System.3. respectiv informatiile sunt într-un singur loc si pot fi modificate cu usurinta. 4. El este o componenta a Windows XP: Add/Remove Programs -> Add/Rem ove Windows Components. .NET in IIS.4322. Acesta contine cod HTML si aici pot fi asezate prin design contoalele care ruleaza la nivel de server. • Web. dar si pentru stocarea unor informatii gen constante care să poat a fi regasite din codul executabil.NET Framework si include clase predefinite care se ocupa de chestiuni specifice aplicatiilor web.Web. In general.NET avem nevoie de următoarele instrumente softwa re: Microsoft Internet Information Services (IIS) este serverul de aplicatii web al Microsoft. se recomanda ca designul apl icatiilor (din punct de vedere al ingineriei software si nu vizual) să respecte an umite criterii. Pentru a face totusi asta.config) In general. Limbajul de programare C#.aspx are asociat unul de tip . click dreapta pe websit e1. Colectia de namespaces System.c s.NET Framework.78 Programare Web (suport de curs) 4. unelte de debug si deployment.N ET – sunt clase predefinite care se ocupa de managementul datelor – accesul la date in baze de date ODBC si Microsoft SQL Server. Se alege la opţiunea Language li mbajul C#. in care se fac afisari si de unde se prei au informatii de la utilizator.

majoritatea controalelor dispun de Smart Tasks (sau Common Tasks). Activare etc. setarea modului de vizualizare etc. Login. iar logica aplicatiei este reprezentata de un fisier cu extensia . să spunem apasarea unui buton de ca tre utilizator. Navigation. Fiecare tab contine controale specifice.Programarea server – side cu ASP.NET). Acestea din urm a se folosesc foarte mult in aplicatii de management al informatiilor. textbox-urile au TextChanged.cs (pentru limbaj ul Visual C#) sau . Text. HTML s i General. permit formatarea controalelor cu stiluri predefinite. Fisierele .NET 2005 are o interfată care permite manipularea facila a acestora din Toolbox. Acest mediu de lucru beneficiaza de toate facilitat ile oferite de platforma . Exista controale folosite la afisare de date: Labels. Formulare în ASP. ASP. trebuie să asociati un handler evenimentului predefinit Click al b utonului respectiv.NET vine cu cateva controale predefinit e.WebControls. iar asocierea resp ectiva se poate face foarte usor din Visual Studio. Visual Studio . Acestea. Data.aspx-actionand ca un container pentru HTML. ca instanta al uneia dintre clasele din spatiul de nume S ystem.3.NET 2. Principalele facilităţi noi sunt redate î continuare: • Separarea interfeţei HTML de logica aplicaţiei • Un set bogat de controal e pentru server ce detectează tipul browserului si generează limbaj HTML corespunzător acestuia • Mai puţin cod de scris din cauza modului în care sunt construite noile con troale server • Model de programare bazat pe evenimente . WebParts.NET 2.NET care ofera o abstractizare in modelul de programare.) • Evenimente predefinite la care stiu să r aspunda (de exemplu. Pentru cazul anterior.NET Pentru a prezenta informatii in navigatorul clientului folosim formularele Web A SP.UI. TextBoxes. este suficient dublu-click pe buton. text static si controale server care pot fi afisate in browser. Aceasta tehnica de separare a codului de partea de prezent are este numita"code-behind programming" Formularele Web si ASP .aspx mai sunt referi te ca pagini ASP. unde se poate dori afisarea tuturor cartilor dint r-un anumit domeniu. cum ar fi: ListBoxes. EventArgs e){} 4.cs asociat. mostenire) si reprezinta o inlocuire a clasicelor formulare HTML Componenta viz uala este reprezentata de un fisier cu extensia . pentru ca să se creeze automat o metoda de tipul p rotected void ButtonX_Click(object sender. dar in mod curent se folosesc si unele pentru afisarea unor colectii de informatii. numite si controale server. Controalele sunt caracterizate prin: • Proprietati (ID-u l controlului. mediu de executie controlat. atasare a de date. adica in fisierul . in plus fata de cele HTML.NET (siguranta tipurilor. Font.) In momentul in care doriti să tratati un eveniment. butoanele au Click.vb (pentru Visual Basic.3.NET. DropDownLists si GridViews. in functie de co ntrolul in cauza. Un handler nu este altceva decât o functie. un model orientat ob iect si bazat pe evenimente. etc. Toolbox-ul este alcatu it din tab-urile Standard. cum ar fi de exemplu una de biblioteca. in codul "din spatele acestuia".NET au fost cre ate pentru a depăsi câteva dintre limitările ASP. numite asa deoarece tr atarea evenimentelor la care acestea raspund se executa pe server. etc. se produc niste modificari: se creaza un nou obiect.0 vine cu peste 50 de noi astfel de controale. ASP. In ASP. Observati ca atunci cand introduc eti controale într-un Form web.NET • 79 Data Access Layer – clase care se ocupa cu accesul la baza de date si trimiterea i nformatiilor in nivelele superioare. Validation.Web.0. in functie de ce anume ati adaugat.

atribute coresp unzatoare unor controale din pagina WebForms si alte date membre necesare implem entarii aplicatiei.NET Exista doua tipuri de baza in care pot fi impartite controalele: • HTML Controls. In acest model. aduc facilitati superioare controalelor HTML incluzand con troale mult mai complexe. Controale în ASP.4. In ordinea aparitiei. • Tratarea evenimentelor utilizator. • Web Controls. O pagina WebForms. poate fi p rivita ca un program executabil pentru care iesirea standard o reprezinta browse rul sau dispozitivul client. a conexiunilor la baza de date si eliberarea obiectelor din memorie.80 Programare Web (suport de curs) Cod compilat si suport pentru mai multe limbaje de programare. pagina trece prîntr-o serie de stagii de procesare: initializare. iar tratarea lor are loc dupa aparitia unui eveniment Click care trimite formularul la server (a unu i submit).NET inca rcata la server. • Render. fată de ASP care er a interpretat ori ca VBScript ori ca Jscript • Permite crearea de controale de către terţi care să aducă noi funcţionalităţi. Logica aplicatiei reprezinta in fapt o clasa care extinde functionalitatea clasei System.UI. de exemplu pentru a crea o casetă de t ext: <input type="text" id=txtFirstName size=25> Orice element poate fi însă marcat să ruleze ca si un control HTML atunci când formularul este procesat de server prin adăugarea textului "runat=server" în interiorul tagului. eveniment care poate fi folosit pentru a face ultimile act ualizari asupra paginii Web inainte ca aceasta să fie generata la client. procesare si eliberare. proprietati (de exemplu. cum ar fi controlul calendar. Trebuie retinut ca acest e evenimente nu sunt tratate într-o anumita ordine pe server. eveniment care genereaza la client reprezentarea HTML a paginii Web ASP. <input type="text" id=txtFi rstName size=25 runat=server> . eveniment care initializeaza pagina si in care proprietatile cont roalelor sunt actualizate. Evenimentul este util de folosit atunci cand dorim să efectuam ul timele operatii de eliberare a resurselor: inchiderea fisierelor. • Unload este ultimul eveniment care se executa inainte ca pagina să fie eliberata. Aceasta clasa contine metode care trateaza diferite evenimente ce apar in timpul executiei formularului Web la server (de exemplu. prin proprietatea IsPostBack putem afla dac a o pagina Web este la primul acces sau la accesari ulterioare). daca metoda Page_Load este conectata la evenimentul Load al clasei de baza Page. acest ea sunt: • Init.Web. reprezinta elemente HTML care pot fi programate la nivelul serverului si expun u n model obiectual restrictionat la capabilitatile elementelor HTML pe care le af iseaza. reprezin ta stagiul in care sunt tratate evenimentele generate de client cum ar fi: schim barea unui text într-un control. Aici este corect să initializam controale care se adaug a dinamic la pagina sau variabile necesare inainte de initializarea paginii. • Loa d poate fi numit locul in care utilizatorul isi initializeaza codul. Evenimentul este generat de fiecare data cand pagina este incarcata dupa ce controalele au fost initializate la pasul anterior. • PreRender. • 4. apasarea unui buton etc.3. Pot fi folosite si e lementele standard HTML într-un Formular Web. la procesarea pe serverul Web. Controalele HTML sunt asemenea elementelor HTML fo losite cu ajutorul Frontpage sau al oricărui alt editor HTML. atunci aceasta este apelata la fiecare acces al unui for mular Web).Page. iar modelul obiect nu re flecta neaparat sintaxa HTML.

face acelasi lucru doar ca asa se pot retine informatii din Form-ul sursa si folosite in cel destinatie. un co ntrol de tip buton in interiorul unui tabel). clasa de baza WebControl. nu isi pastreaza val oarea. Application State. adăugarea acestui text ce permite procesarea controlului de către server se poate face foarte simplu dând clic dreapta pe element al HTML în Design View si selectând Run as Server Control din meniul contextual. in mod normal nu se retin obiectele folosite in cel anterior. Exista urmatoarele modalitati de a pastra informatii u tile: Query Strings.Programarea server – side cu ASP.aspx. diferenţa fiind ca primul este un control care rezida in . Controlul Hyperlink si metoda Response. • posibilitatea d e a trimite evenimente unui container din interiorul acestuia (de exemplu. În Session.NET. Mai tre buie observat faptul ca fiecare Form se reincarca (se executa Page_Load) la fiec are raspuns al serverului pentru un eveniment (cum ar fi apasarea unui buton). iar afisarea la client va fi optimizata in functie de capabilitatile a cestuia. Session State.5. Totusi. Navigarea intre Forms cu pastrarea informatiilor Exista mai multe posibilitati de a naviga intre Form-urile unei aplicatii ASP. Sess ion State: Variabilele din Session pot fi create in timpul executiei. adica sunt setate pe null. Iar “luarea” lui din Session: objFeedback = (Feedback)Session["Feedback"]. • posibilitatea de a controla generarea evenimentelor pe server. pentru a le folosi.6. toate variabilele sunt de tip object. Medoda Server. Cookies. iar acesta poate fi imaginat ca un cos in care depunem obiecte pe care dorim să le pastram p e durata intregii executii a aplicatiei de catre utilizatorul curent. Sunt defin ite in spatiul de nume System. • pentru unele controale se pot defini sabloane (template-uri) de afisare . • legarea la surse de date a tuturor proprietatilor controalelor pentru a influenta afisarea la executie. de exemplu) si manipularea în mod programatic a tagului prin cod ul din Formularul Web. obiectele p e care le contine acesta. iar atribuirea se face unui obiect de tip Feedback (o clasa definită de utilizator ).Redirect() fac acelasi lucru. mai puŃin textul „runat=server”.NE T. iar metoda se apeleaza din cod (.WebControls si mostenesc.cs). • detecteaza automat tipul navig atorului.Web Cont rols.NET 81 În cazul folosirii Visual Studio . In momentul în care controlul este afisat în browser.3. Deci la navigarea într-un Form nou si incarcarea acestuia. ASP. Daca setam p arametrul preserveForm al metodei la valoarea true.3. chiar daca n u parasim Form-ul curent. S e impune deci să pastram starea obiectelor pe care dorim să le folosim.Transfer(). si pe care noi dorim să le folosim. Con troalele HTML permit de asemenea tratarea evenimentelor asociate cu tagul HTML ( clic pe un buton.NET. atunci QueryString si ViewSt ate din sursa vor fi vizibile in destinatie. ceea ce oferă un control foarte precis a ceea ce va f i trimis către browser. tagul e ste afisat exact asa cum a fost salvat ca si cum a fost salvat pe Formularul Web . direct sau indire ct. Pastrarea informatiilor Avand in vedere ca ne referim la aplicatii ASP.UI. Astfel ar arata crearea unui nou obiect in Session: Session["Feedback"] = objFeedback. Se observa c a s-a facut o conversie de tip.aspx. Numite si controale inteligente. ele pot fi caracterizate prin: • ofera un b ogat si consistent model obiectual de programare. View State. 4.NET defineste un al doilea tip de controale .Web. va treb ui să setam atributul EnableViewStateMac din directiva Page . trebuie să tinem cont de faptu l ca fiecare Form se executa pe server si la fiecare incarcare a sa. 4.

Digest for Windows dom ain servers. atunci IUSR_<numele_masinii> trebuie să aibă dreptul de a citi fisierul de pe hard-disk corespunzator. dar cu Intranetului. Properties. Aplicati e web Windows Acest mod autentifca pentru Intranet. Integrated utilizatorii folo sind lista de useri de pe server (Domain Controller). Pentru o aplicatie securizata. daca aplicatia foloseste la un mom ent dat Form-ul “Student. atunci cand un utilizator acceseaza aplicatia. In momentul in care in IIS se activează Anonymous Access pe un director virtual (a dica pe o aplicatie web). acesta este modu l implicit in care este creata o noua aplicatie ASP. <authentication mode="Forms"> In primul rand. Deoarece in mod normal informatia din ViewSt ate este hash-uita. deci se va putea citi la nevoie 4. Trebuie să fiti atenti. Drepturile userilor in apl icatia web este dat de nivelul de privilegii al contului respectiv.aspx) pe valoarea false. iar asa nu va mai fi. De exemplu.NET. Basic}.config. trebuie totusi să vorbim de aplicatii publice care nu necesita nici un fel de autentificare. Atunci cand se creează un proiect ASP. dupa cum s e vede mai jos. In general. el ia a utomat contul IUSR_<numele_masinii>. Aplicatii web Forms Aplicatii care au nevoie c omerciale. Forms poate fi inlocuit cu Windows sau Passport.82 Programare Web (suport de curs) (fisierul . Tipul aplicatiei Modul de autentificare Descriere Aplicatie web Anonim Nu avem nevoie de publica pe Internet.NET Exista mai multe moduri de a securiza o aplicatie ASP. cele mai des intalnite fiind sintetizate in tabelul de pe slide.NET. .NET cu Visual Studio.aspx”.aspx”. Pentru asta se foloseste fisierul de configurare web.7.3. list a serverului (Domain Controller). Pe de alta parte. Windows Integrated. folosind conturi din acces privat.NET.NET. să spunem “c:\Inetpub\wwwroot\library \student. Securitatea în ASP. securizarea aplicatiei se poate face din ASP. Authentication de informatii confidentiale si eventual in care sunt m ai multe tipuri de utilizatori. Acest cont trebuie să aibă dreptul de a citi fisiere le care sunt necesare aplicatiei. Aplicatie we b Windows Utilizatorii companiei disponibila pe Integrated pot accesa aplicatia din afara Internet. securizare. Edit) – unde se pot alege mai mult e tipuri de autentificare {Anonymous. se creaza o aplicatie web accesibila anonim. avem mai multe posibilitati de aute ntificare. care in mod normal se afla in grupul de uti lizatori Guest pe orice masina. Impl ementarea politicii de securitate se poate face atat din IIS cat si din aplicati a ASP. se poate face acest lucru atat din IIS Management Console (click dreapta pe un director v irtual din IIS. Directory Security.

Din nou.com pentru autentificare.7. cererea este refuzată si clientul este direcţionat către site-ul Web Passport. 4. Cookie re prezintă un mic fisier text ce păstrează diverse informaţii despre utilizatorul respecti v. 2.NET. IIS verifică datele de autentificare.1 Windows Authentication În acest mod de autentificare. De asemenea generează si un cookie. 4.NET autentifică cli entul pe baza informaţiilor furnizate. cererea este trimisă mai întâi serverului IIS. IIS nu realizează autentif icarea.3 Passport Authentication La utilizarea Serviciului Web Microsoft Passport.NET refuză cererea clientului si returnează o pagină de au tentificare (Login. la autentificare. după care trimite cererea către ASP. Pagina securizată este returnată utilizatoru ui.NET Framework care se ocupa cu accesul la baze de d ate . Atâta timp cât acest cookie rămâne valid. IIS r efuză cererea utilizatorului. Clientul completează informaţiile cerute în pagina de aut entificare si apoi trimite informaţiile 5. dar se bazează pe sistemul de operare Windows pentru autentificarea util izatorului. IIS autentifică clientul ca fii nd un utilizator anonim.com.NET are încorporate procedurile de auten tificare. 2.4.NET ADO. 7. Dacă cookie-ul nu există. Clientul introduce datele de autentificare. În mo mentul în care un utilizator solicită o pagină securizată.7.3. este standardizata in sensul ca se pot folosi aceleasi obiecte pentru acce sarea .NET 83 4.1.7. Atunci când utilizatorul cere o pagină securizată. sau în diverse alte scopuri. Calculatorul clientului generează o fereastră de aute ntificare. 4. ADO.3. si în cazul în care sunt corecte. S ite-ul Passport. 7. 4. 3. Pagina securizată cerută si noul cookie sunt returnat e clientului. 6. Acesta verifică p e calculatorul clientului prezenţa unui anumit cookie1 3.1.Programarea server – side cu ASP.NET 6. clientul poate solicita si vizua liza orice pagină securizată ce utilizează aceleasi informaţii de autentificare. IIS autentifică clientul ca utilizato r anonim si trimite cererea către ASP . informaţii folosite la următoarea vizită a să pe site-ul respectiv. 4. Acesta verifică prezenţa unui anumit co okie pe calculatorul clientului. 5. 1.NET este componenta din .NET. Dacă acestea două nu corespund.com. direcţionează cererea către aplicaţia Web. clientul este autentificat si primeste un cookie corespunzător informaţiilor introduse. deci este necesar ca în setările acestuia să fie permis accesul anonim. 1. nici IIS nici aplicaţia Web nu s e ocupă de autentificarea clientului. Dacă cookie-ul nu este pre zent sau este invalid. după care retrimite cere rea către IIS 6. 1.1. ASP . 2. Utilizatorul completează cu datele corespunzătoare si le trimite înapoi către Passpo rt. IIS autentifică clientul ca fiin d un utilizator anonim si trimite cererea către ASP .aspx). Utilizatorul solicită o pagină securizată de la aplicaţia Web. 4.2 Forms-Based Authentication Atunci când se utilizează autentificarea bazată pe formulare. aplicaţia ASP . Dacă informaţiile introduse se potrivesc cu cele din baza de date Passpor t.com generează un formular de Login pe care îl trimite utilizatorului 5.3. ASP . Cererea ajunge la Serverul Web IIS care compară datele de autentificare ale utilizatorulu i cu cele ale aplicaţiei (sau ale domeniului) 3.

.

pentru conectar ea la SQL Server 7 sau versiuni ulterioare • OleDbConnection . cum ar fi: ListBoxes.returneaza o singura valoare dîntr-o interogare • ExecuteR eader . sunt returnate ca rezultat al metodei Exe cuteReader a unui obiect Command (SqlCommand SqlDataReader etc) • o singura linie din recordset este in memorie la un moment dat. Connection reprezinta conexiun ea curenta la baza de date. Aceste date pot fi procesate direct d e de aplicatie. in baza de date La apelul metodei Update.SqlClient pentr u MS SQL sau System. Modificarile asupra bazei de date se pot efectua prin intermediul unui obiect Command sau unui obiect DataAdapter. MS SQL Server. Sunt ne cesare la referinte doua namespaces : System. executandu-se una din comenzile reprezentate de InsertCommand. unde se poate dori afisarea t uturor cartilor dintr-un anumit domeniu. Tipuri de conexiuni: • SqlConnection . UPDAT E.Data. dar in mod curent se folosesc si unele pentru afi sarea unor colectii de informatii. Alternativ. Aceasta conexiune poate fi accesata direct de un obie ct Command sau de un obiect DataAdapter. bazata pe mecanismul non-conexiune.conexiuni la divers e tipuri de baze de date • ODBCConnection • OracleConnection Un obiect Connection co ntine toate informatiile necesare deschiderii unui canal de comunicatie cu baza de date in cadrul proprietatii ConnectionString.NET este urmatorul: un obiect Connection stabileste o conexiune intre aplicatie si baza de date. Sunt incorporate. . sub forma unui obiect DataReader DataRead er • contine un recordset bazat pe conexiune. Obiectul Command executa o comanda asup ra bazei de date. se poate utiliza un DataAdapter pentru a popula un o biect DataSet. Command este reprezentat de doua clase : SqlCommand si OleDbCommand Utilizat pentru a efectua apeluri de proceduri stoc ate sau de comenzi SQL asupra bazei de date sau pentru a returna tabele. efectuate local. etc. se copie modificarile din DataSet in baz a de date. • faciliteaza comunicarea intre baza de date si DataSet • populeaza obiectele DataTable sau DataSet ori de cate ori se ap eleaza metoda Fill • metoda Update inregistreaza modificarile. DropDownLists si GridVi ews.executa comenzi care nu returneaza inregistrari INSERT. dar este necesara mentinerea activa a unui obiect Connection pe durata de viata a obiectului DataReader DataAdapter este clasa din nucleul tehnologiei AD O. read-only • obiectele Da taReader nu pot fi instantiate direct. cum ar fi de exemplu una de biblioteca. metode pentru facilitarea tranzactiiilor.Data si System. deci se foloseste un minim de re surse.OleDb pentru Access.84 Programare Web (suport de curs) diferitelor tipuri de baze de date : Access. Metode: • ExecuteNonQuery . Oracle. Exista controale folosite la afisare de date: Labels. etc.NET. forward-only. se utilizeaza un obiect Da taReader care va contine datele returnate.Data. DELETE • ExecuteScalar .returneaza o multime rezultat. TextBoxes – informatii unicate. Delete Command sau UpdateCommand. de asemenea. Mecanismul accesarii bazelor de da te in ADO. Acestea din urma se folosesc foarte mult in aplicatii de management al info rmatiilor. Daca se returneaza valori multiple.

Realizar ea operatiunilor asupra bazei de date.Net să poata lucra cu baza de date. E xemplul urmator arata modul de inserare într-o baza de date.Net.mdb"). modificare sau sterge re. Pentru a obtine acest lucru folosind obie cte SqlCommand este folosita metoda ExecuteReader care intoarce un obiect de tip ul SqlDataReader.1.4. Inchiderea conexiunii.Programarea server – side cu ASP. 4.1. inregistrarilor d intr-un tabel.Net 4. Atunci cand se lucreaza cu o baza de date treb uie urmati pasii: 1. Description) VALUES ( Miscellaneous . Cea mai buna metoda est e să lasam baa de date să faca ceea ce este necesar si să intoarca o singura valoare. Obiectele ADO.2 SqlCommand Obiectele de tipul SqlCommand permit specificare tipului de actiune asupra bazei de date. conn). cum ar fi SqlDataAdapter si SqlCommand. OleDbConnection oleDbConn = new OleDbConnection("Provider=Mic rosoft. De exemplu se poate face o interogare. conn). Whatever doesn t fit elsewhere )".NET 85 4. SqlCommand cmd = new SqlCommand (insertStrin g. Uneori avem nevoie dîntr-o baza de d ate doar de o singura valoare. cmd. Apeland ExecuteReader si apoi calculand acea valoare in program n u este cea mai eficienta metoda de a ajunge la rezultat. Obiectul SqlConnection de mai sus este instantiat folosind un constructor care primeste ca parametru un strin g. media. Instantierea unui obiect SqlConnection. 3. etc.4. Pentru a insera valori într-o baza de date trebuie apelata functia ExecuteNonQuery pe un obiect SqlCommand.4. dar ca punem primul parametru al constructo rului SqlCommand pe valoarea corespunzatoare. care poate fi suma. SqlConnection sqlConn1 = new SqlConnection ("Data Source=DatabaseServer.0.ExecuteNonQuery(). Acest argument este stringul de conectare.Jet.Initial Catalog= Northwind.Passwo rd=YourPassword").User ID=YourUserID.OLEDB. Scopul instantierii unui obiect de tip SqlConnection este ca alte obiecte ADO. Acest lucru il face metoda ExecuteScalar: SqlCommand cmd = new SqlCommand ("SELE CT count(*) FROM Categories".Data Source=MyDatabase. de cele mai multe or i declararea si instantierea se face in acelasi timp: SqlConnection sqlConn = new SqlConnection( "Data Source=(local). se obţine un tabel rezul tat care trebuie să poata fi vizualizat.1. SqlDataReader rdr = cmd.1.Initial Catalog=Northwind. Atunci cand se realizează o interogare in baza de date. conn). inserare. au constructori care primesc obiectul conexiune ca parametru. Trimiterea conexiunii ca parametru altor obiecte ADO. Exemplul de mai jos arata modul de obtinere a unei instante Sq lDataReader.            . 5. string insertString = @"INSERT INTO Categories (CategoryName.4. 4. Al te obiecte. Modificarea si stergerea datelor dîntr-o baza de date se face la fel ca si inserarea.Integrated Security=SSPI"). 2.ExecuteReader().1. Deschiderea cone xiunii.1 SqlConnection Un obiect SqlConnection este la fel ca orice alt obiect C#. SqlCommand cmd = new SqlCommand ("SELECT CategoryName FROM Categori es".

dupa ce ati depus proiectul ASP.5 Instalarea unei aplicaţii web pe serverul IIS Evident ca dupa dezvoltarea unei aplicatii. Daca într-o aplicatie este nevoie doar de informatii care vor fi citite o singura data. dupa cum se vede si in paragraful precedent. 4.3 SqlDataReader Tipul SqlDataReader este folosit pentru a citi date in cea mai eficienta metoda posibila. aplicatia va putea fi referita din exte rior cu numele: http://<nume_server>/<alias> . 4. O data citita o informatie nu mai poate fi citita inca o data. In primu l rand.config. unde <nume_server> este de fapt s itul principal expus de serverul web.Password=***" /> </appSettings> Dupa cum se p oate vedea aici. mergeti in IIS. Datprita fap tului ca citeste doar inainte (forward-only) permite acestui tip de date să fie fo arte rapid in citire. Overhead-ul asociat este foarte mic (overhead generat cu i nspectarea rezultatului si a scrierii in baza de date). trebuie creat un nou director virtual.4. config : <appSettings> <add key="Database" value="Data Source=MISHU\MISHUSQL. ea trebuie livrata beneficiarului. Daca pentru instantiere este folosit operatorul new veti obtine un obiect cu ca re nu puteti face nimic pentru ca nu are o conexiune si o comanda atasate. New -> Virtual Directory. in IIS-ul server-ului w eb.config o che ie cu numele « Database ».trebuie apelata metoda ExecuteDataReader. P entru ca ea să mearga.2. serverul de baze de date se va numi in mod diferit la fiecare client. Deci. SqlDataReader citeste secvential date.1. trebuie neaparat să aveti grija de securiz area aplicatiei daca este cazul. Configurare. click dreap ta pe Default Web Site. Metoda clasica de a citi informatia dintr-un SqlDataReader este de a itera întro bucla while asa cum se vede in figura 4 la liniile 32-35. care să indice catre calea directorului fizic unde se afla de fapt aplicatia. fara a recompila codul la fiecare ? Cu m facem conexiunea la baza de date pentru fiecare client ? Ei bine. fisierele trebuie copiate undeva pe hard-disk-ul serverului web (nu neap arat in calea predefinita …\Inetpub\wwwroot\). să ne im aginam o aplicatie de E-Commerce care lucreaza cu un server de baze de date si să ne imaginam ca noi facem aplicatia si o dam la mai multi clienti. Cum face m deci să putem livra aplicatia clientilor. 4. Obtinerea unei instante de tipul SqlDataReader este pu tin diferita de instantierea normala . Metoda Read intoarce true cat timp mai este ceva de citit din stream. iar <alias> este ce ati ales voi la creare a directorului virtual in IIS. Pentru a citi aceste informatii trebuie apelata metoda Read. SqlDa taReader obtine datele într-un stream secvential. alegeti un Alias (acesta va fi de fapt numele aplicatiei asa cum va fi ea vazuta din afara).4. Cum fac conexiunea in aplicatia mea ? Caut in web.1.4.4 4. mentenanta Avantajele folosirii unui fisier web.NET pe serverul web (asta se face prin simpla copiere). aceasta citeste un singur rand din tabelul rezultat . Iata: .Ini tial Catalog=elearning. sau rezultatul une i interogari este prea mare ca să fie retinut in memorie (caching) SqlDataReader e ste solutia cea mai buna. folosim web. navigati la calea directorului propriu-zis si … gata. Acum.1. NU poate fi folosit pentru scriere. Dupa aceea. In primul si in primul rand. Evident.ExecuteScalar().1.1. am pus o inregistrare care contine chiar un string de conexiune la baza de date.User Id=***.4. este nevoie să fie “depusa” pe serverul acestuia de web. In mod evident .86 Programare Web (suport de curs) int count = (int) cmd.1.

.

Programarea server – side cu ASP. strPar ameters = (string)apsr.Configu ration.NET 87 public static SqlConnection ConnectToDB() { string strParameters. return sqlConn.GetValue("Database".AppSettingsReader apsr = System.typeof(string)). System.AppSettingsReader(). } new .Configuration. SqlConnection sqlCon n = new SqlConnection(strParameters).

cmu. org/wiki/.w3.charlespetzold.asp http://www .wikipedia.org/wiki/HTTP ht tp://www.html http://en.org/wiki/Multitier_architecture http://en.com/web/web_scripting.wikip edia.com/css/default.org/Style/CSS/ http://www.org/wiki/Service-oriented _architecture http://en.org/wiki/OSI_Model http://en.NET_Framework http://www.asp http://en.w3schools.w3.w3schools. Referinte http://www.wikipedia.org/wiki/Internet_protocol_suite htt p://www.wikiped ia.edu/str/descriptions/clientserver_body.wikipedia.wikipedia.asp http://en.org/TR/html401/ http://www.com/dotnet/ .w3schools.org/wiki/Model-view-controller http://en.wikipedia.sei.com/html/default.88 Programare Web (suport de curs) 5.

organizarea ºi evaluarea activitãþilor didactice .Proiectarea.

.

Lectura personalizată a programelor şcol are III...... Planificări calendaristi 91 ........95 III..... .... ....Proiectul de lecţie ?....107 V......1.....2................1....................... Anexe …………………………………………………………………………108 1....Programa şcolară reper obligatoriu pentru un demers flexibil……………….....4.............Proiectarea demersului didactic.................4......4................ Proiectul unităţii de învăţare ....2...... Proiectarea unei unităţi de învăţare III... P oiectarea activităţii de evaluare III....Aplicarea prog or şcolare.MiniGhid Metodologic Informatică & TIC Cuprins I............93 II........94 III. Metode complemen tare de evaluare IV.. ........ Tipuri de itemi III.....3.... Planificarea calendaristică III........

.

Competenţele specifice se definesc pe o biect de studiu şi se formează pe parcursul unui an şcolar.defini rea unor concepte.experimentarea. . competenţe generale. explorarea. 93 . conform cărora prin competenţă se realizează în mo xemplar tranferul şi mobilizarea cunoştinţelor şi a depriderilor în situaţii/contexte noi ş inamice. Ele sunt derivate din comp etenţele generale. se diferenţiază de . formulăm câteva definiţii de lucru necesare pentru explicarea manierei în ca re au fost concepute programele şcolare..c oncretizată prin următoarele concepte operaţionale: -identificarea de termeni. Proiectarea curriculumului pe competenţe vine î a cercetărilor din psihologia cognitivă. . Modelul de proiectare curriculară centrat pe competenţe simplifică structura curriculumului şi asigură o mai mare eficienţă a proceselor de predare/învăţare şi evaluare sta permite operarea la toate nivelurile cu aceeaşi unitate: competenţa.sortarea-d iscriminarea. . Structura programei şcolare cuprinde: o notă de prezentare. Termenul de curriculum derivă din limba latină unde. Receptarea . adică având ca element centra la toate etajele sale activiatea de proiectare şi programa analitică. -anticiparea unor rezultate. s-a pornit de la o diferenţiere cât mai fină a etapelor unui proces de învăţare. . procese. 3. Ele un grad ridicat de generalitate şi complexitate şi au rolul de a orienta demersul d idactic către achiziţiile finale ale elevului. Actualele progra me şcolare subliniază importanţa rolului reglator al achiziţiilor elevilor în plan formati v. • profesorii.programele analitice" prin accentul pe care îl pun pe interiorizarea unui mod de gândire specific fiecărui domeniu transpus în şcoală prin intermediul unui obiect de stud iu. sugestii metodologice. Programa şcolară descrie oferta educaţională a unei anum te discipline pentru un parcurs şcolar determinat Filosofia contemporană a educaţiei a evidenţiat diferenţa dintre o educaţie bazată pe curriculum. • specialiştii în evaluare.MiniGhid Metodologic Informatică & TIC I.compararea unor date. 2. nu pe succesiunea conţinuturilor şi pe numărul de ore alocat lor. . Competenţelor specifice li se aso ciază prin programă unităţi de conţinut. descoperirea. • părinţii. Definim competenţele ca fiind ansambluri st ructurate de cunoştinţe şi deprinderi dobândite prin învăţare. acestea permit identificarea ezolvarea în contexte diverse a unor probleme caracteristice unui anumit domeniu. . stabilirea unor relaţii.calcularea unor rezultate parţiale. . programele şcolare actuale. Competenţele g enerale se definesc pe obiect de studiu şi se formează pe durata învăţământului liceal.observarea unor fenomene. Conceptual.concretizată prin următoarele concepte operaţionale: .perceperea unor relaţii.clasificarea datelor.Programa şcolară reper obligatoriu pentru un demers flexibil Programa şcolară este par te a Curriculumului national. relaţii.reprezentarea unor date. Fără a intra î onceptuale. • elevii. compe tenţe specifice şi conţinuturi.Algoritmizarea . conexiuni. Pentru a asigura o marjă cât mai largă de aco erire a obiectelor de studiu.investigarea. ce exprimă complexe de operaţii mentale: 1. Acestora le corespund categorii de competenţe organizate în jurul câtorva verbe definitorii.c ulegerea de date din surse variate. . . în măsură să orien eze demersurile agenţilor implicaţi în procesul de educaţie: • conceptorii de curriculum. procese.concretizată prin urmatoarele concepte operaţionale: -reducerea la o schemă sau model. care are în cen trul activităţii didactice ideea de programare a traseului elevului către un ţel cunoscu t şi impus doar de către adulţi. Centrarea pe competenţe reprezintă modalitatea care face ca sintagma centrarea pe elev să nu rămână o lozincă fără conţinut. Prelucrarea primară (a datelor) . Componenta fundamentală a programei este cea refer toare la competenţe specifice şi conţinuturi. fiind etape în dobândirea acestora. . .nominalizarea unor concepte. valori şi atitudini. • inspectorii. p rintre altele înseamna drum către.

derivate din acestea. 6. date de ieşire. fenomene. centrat pe formarea de competenţe: identificarea celor mai a decvate metode şi activităţi de învăţare. -adaptarea şi adecvarea la context.posibilitatea intervenţiei profesorului în succesiunea elementel or de conţinut. -verificarea unor rezultate . . Acceptă în mod pasiv ideile transmise. expunerea. sisteme. con stituind un implicit al acesteia. Argumentează. Ele acoperă întreg parcursul învăţămantului liceal şi orientează dimensiunile axioiogică ctiv-atitudinală aferente formării personalitaiii din perspective fiecărei discipline. profesorului. -negocierea. astfel încât acestea să permită un demers didactic personalizat. -interpretarea rezultatelor. 5. care poate fi con cretizat prin urmatoarele concepte operaţionale: -aplicarea în alte domenii. -calcularea.Aplicar programelor şcolare Existenţa unor programe centrate pe achiziţiile elevilor determină u n anumit sens al schimbării în didactica fiecărei discipline. 4. -argumentarea unor enunţuri. -integrarea u nor domenii.Exprimarea . a completării sau a înlocuirii activităţi or de învăţare. Elementele care asigură a cest reglaj sunt: . Încearcă sa reţină şi sa reproducă ideile auzite Realizează un schimb d dei cu ceilalţi. Competenţele g enerale ce se urmăresc a fi formate la elevi pe parcursul treptei liceale de şcolari zare precum şi competenţele specifice fiecărui an de studiu.posibilitatea modificării. . -rezolvarea de probleme prin modelare si -reprezentar ea datelor algoritmizare. Valorile şi atitudinile apa r în mod explicit sub forma unei liste separate in programa fiecărui obiect de studi u. -generalizarea şi particularizarea. Sugestiile metodologice cuprind recomandări generale privind metodologia de aplic are a programei. de a realiza sensul unor idei 94 . explicaţia Exprimă puncte de vedere pro prii. Aceste recomandari se pot referi la: desfasurarea efectivă a proc esului de predare/învăţare. Criterii Strategii didactice Orientare tradiţională Orientare moder nă Rolul elevului Urmăreşte prelegerea. Realizarea lor concretă derivă din activitatea didactică permanentă a profesorului.Transferul.MiniGhid Metodologic Informatică & TIC -remarcarea unor invarianţi. II. ce permite profesorului adaptarea cadrului formal la personal itatea sa şi la specificul clasei de elevi cu care lucrează. Tabelul de mai jos prezi ntă în antiteză caracteristici ale procesului de predare-învăţare din didactica tradiţional didactica actuală. - Dincolo de structura unitară a programelor şcolare. cu condiţia asigurării coerenţei tematice şi a respectării logicii interne domeniului. procese. concluzii.lipsa prescrierii de la centru a intervalului de timp alocat elem entelor de conţinut.dar se supun altor criterii de organizare didacticometodică şi de evaluare. -demonstrarea. curriculumul naţional actual propu ne o ofertă flexibilă. -generarea de idei. evaluarea continuă. evaluarea unor rezultate. dotări/materiale necesare pentru aplicarea în con ptime a programei. -c ompararea unor rezultate. -realizarea de conexiuni între rezultate. Valorile si atitudinile au o importanţă egală în regla rea procesului educativ ca şi competenţele .care acoperă dimensiunea cognitiva a pers onalităţii . se stabilesc pornind de la modelul de generare prin gruparea categoriilor de concep te operaţionale in funcţie de dominantele avute in vedere. -transp unerea într-o altă sferă. -analiza de situaţii.concretizata prin urmatoarele concepte operaţionale: -descrierea unor stări. între reprezentare şi obiect.Prelucrarea secundară (a rezultatelo r) – concretizată prin urmatoarele concepte operaţionale: -elaborarea de strategii. -relaţionări între diferite tipuri de reprezentări. pune şi îşi pune într u scopul de a înţelege. i: -optimizarea unor rezultate.

în funcţie de condiţii şi cerinţe concrete. III. validate. cu scopul de ierarhizare Vizează măsurarea şi aprecierea c unoştinţelor (ce ştie elevul).Proiectarea demersului didactic Predarea reprezintă activitatea p rofesorului de organizare şi conducere a ofertelor de învăţare care are drept scop facil itarea şi stimularea învăţării eficiente la elevi. Proiectarea demersului didactic presupune: . 95   . diferenţa dintre didactica tradiţională şi cea actuală constă în modul de conceper organizare a situaţiilor de învăţare (riguros dirijate în primul caz şi având autonomie de erite grade.ca şi al autorului de manual . în cel de-al doilea). Învăţarea se realizea ză prin cooperare. Facilitează şi moderează înv Ajută elevii să înţeleagă şi să explice punctele de vedere proprii. Învăţarea duce la competiţie între elevi. o strategie este legitimă sau ilegit imă nu în general. Modul de realizare a învăţării Evaluarea De fapt. Vizează măsurarea şi aprecierea competenţelor (ce poate să facă elevul c eea ce ştie). ci potrivit unor circumstanţe concrete. profesorul eficient este ac ela care ştie: să selecţioneze o să combine o să varieze diferite metode o o să aleagă stra ii adecvate.lectura personalizată a programelor şcolare. Lectura personalizată a programelor şcolare În noului curriculum. atitudini). ţine prelegeri. Rolul profesorului Expune. Este partener în învăţ e loc predominant prin formare de competenţe şi deprinderi practice. Pune accent pe elementele de ordin calitativ (valori. respectiv. Altfel spus. 2. . Se consideră şi se manifestă în permanenţă „ca un părinte" . Demersul person alizat exprimă dreptul profesorului .MiniGhid Metodologic Lucrează izolat. prin apel doar la exemple „clasice". conceptul central al proiectării didactice este demersul didac tic personalizat.de a lua decizi i asupra modalităţilor pe care le consideră optime în creşterea calităţii procesului de înv nt. Pune accent pe aspectul cantitativ (cât de multă informaţie eţine elevul). În elabora rea planificărilor calendaristice recomandăm parcurgerea următoarelor etape: 1. Realiz area asocierilor dintre competenţele specifice şi conţinuturi. Învăţarea are loc predominant are şi reproducere de cunoştinţe.2. planificarea calen daristică este un document administrativ care asociază elemente ale programei cu alo carea de timp considerată optimă de către profesor pe parcursul unui an şcolar.proiectarea sec venţială (a unităţilor de învăţare).1. răspunderea personală pentru a asigura elevilor un parcurs şcolar indiv idualizat. LECTURAREA PROGRAMEI se realizează “ orizontală” în succesiunea următoare: Competente Generale → Competente Specifice Conţinutur → → Activităţi de învăţare III.Planificarea calendaristică În contextul noului curriculum. Impune puncte de vedere. iar instrumentul acestuia este unitatea de învăţare. Informatică & TIC Cooperează în rezolvarea problemelor şi a sarcinilor de lucru. Vizează clasificarea „statică" a elevilor. Împărţirea în unităţi de Stabilirea succesiunii de parcurgere a unităţilor de învăţare. Proiectarea demersului didactic este ac ea activitate desfăşurată de profesor care constă în anticiparea etapelor şi a acţiunilor c rete de realizare a predării. III.planificarea calendaristică. . Vi zează progresul în învăţare pentru fiecare elev.

determină formarea la elevi a unui comportament specific. pe care profesorul le consideră adecvate pentru atingerea obi ectivelor propuse. Alocarea timpului considerat necesar pentru fiecare unitate de învăţare. • In rubrica Competenţe specifice se trec simbolurile competenţelor specifice din p rograma şcolară./ …………..este unitară din punct de vedere tematic. completate. • în rubrica Evaluare se menţionea ză instrumentele sau modalitaţile de evaluare aplicate la clasă. • Numarul de ore alocate se stabileste de catre profesor in funcţie d e experienţa acestuia şi de nivelul de achiziţii ale elevilor clasei. material didactic folosit etc. Profesor…………………………. . Proiectarea unei unităţi de învăţare Elementul generator al planificării cal ndaristice este unitatea de învăţare. • Rubrica Resurse cuprinde specificări de timp. modificate s r înlocuite de altele. O unitate de învăţare reprezintă o structură didactic isă şi flexibilă. Întregul cuprins a l planificării are valoare orientativă. Profesor…………………………. Proiectul unităţii de învăţare………………………………….se desfăşoară în mod sistematic şi continuu pe o per oadă de timp.MiniGhid Metodologic Informatică & TIC 4. generat prin integrarea unor competenţe specifice.. ore pe săpt. ore pe săpt... eventualele modificări determinate de aplicare a efectivă la clasă putând fi consemnate în rubrica Observaţii. Uni şcolară………………… Disciplina………………………. respectiv în cuplarea lor la baza proprie de cunoastere a elevilor. Clasa/Nr. Clasa/Nr. • 96 . Planificare calendaristică Anul şcolar… ate Unităţi de învăţare Competenţe specifice Săptămâna Observatii In acest tabel: • Unităţile de învăţare se indică prin titluri (teme) stabilite de către pr r. III. . Conţinuturi Compet are Observatii Conţinuturi: apar inclusiv detalieri de conţinut necesare în explicitarea anumitor par cursuri. Planificările pot fi intocmite pornind de la următoarea rubricaţie Unitatea şcolară………………… Disciplina………………………. de loc./ …………. • Continuturile selectate sunt cele extrase din lista de continuturi ale programei. în concordanţă u competenţele specifice şi conţinuturile vizate.care are următoarele caracteristici: . Detaliem în continuare elementele esenţial e ale proiectării unei unităţi de învăţare. forme de organizare a clasei.. O planificare anuală corect tocmită trebuie să acopere integral programa şcolară la nivel de competenţe specifice şi co nuturi. Se recomandă utilizarea următorului format.se finalizează prin evaluare.. Nr.. • In ru brica Competenţe specifice se trec simbolurile competenţelor specifice din programa şc olară • Activităţile de învăţare pot fi cele din programa şcolară. Finalul fiecărei unităţi d învăţare presupune Evaluare sumativă. .3.. de ore alocate……………….

profesorul va menţiona în această rubrică forme de organizare a clasei puri de interacţiuni ale resurselor umane). respectiv. pen tru a elimina eventualele blocaje constatate în formarea elevilor şi pentru a asigur a progresul scolar al fiecaruia dintre ei? PREDICTIVĂ (INIŢIALĂ) TIPURI DE EVALUARE SUMATIVĂ (FINALĂ) FORMATIVĂ (CONTINUĂ) 97 . utilizând surse diverse.ca si a lecţiei . talent pedagogic. inspiraţie. redat prin tema activităţii. în rea unu demers didactic personalizat.4. medii şi superioare pe care le pot atinge elevii. Intr-o abordare pragmatică. activităţile de învăţare vor fi transpuse într-o anumită formă omunicare inteligibilă nivelului de vârstă. In completarea rubricaţiei. Activităţile de învăţare se consruiesc prin corelarea competenţelor cu conţinuturile şi pre orientarea către un anumit scop. raportandu-le la competenţe şi specificând resursele necesare bunei desfăşurări a proce ului didactic. resursele cuprin d acele elemente care asigură cadrul necesar pentru buna desfaşurare a activitaţilor d e învăţare. este primul pas în identi ficarea unităţilor de învăţare în care va fi imparţită materia anului şcolar. Câteva utile în proiectarea instrumentelor de evaluare sunt urmatoarele: • Care sunt compet enţele din programa şcolară. Proiectarea activităţii de evaluare se realizează concomiten t cu proiectarea demersului de predare/învăţare şi în deplină concordanţă cu acesta.MiniGhid Metodologic Informatică & TIC Desi denumirea si alocarea de timp pentru unităţile de învăţare se stabilesc la începutul a ului şcolar prin planificare. lectura programei şi a manualelor nu mai este în mod obligatoriu liniară. ordonând activitaţile în succeesiunea derulăr ii. formulări fie originale. Astfel. ca şi manualele se pliază unei citiri personale şi adaptate. Stabilirea temei de catre pro fesor pe baza lecturii programei. fie preluate din lista de conţinuturi a programei. Temele sunt enunţuri complexe legate de anal iza scopurilor învaţării. pentru a demonstra că au atins aceste competenţe? • Care este specificu colectivului de elevi pentru care îmi p ropun evaluarea? • Când şi în ce scop evaluez? • Pentru ce tipuri de evaluare optez? • Cu c instrumente voi realiza evaluarea? • Cum voi proceda pentru ca fiecare elev sa fi e evaluat prin tipuri de probe cât mai variate astfel încât evaluarea să fie cât mai obiec tivă? • Cum voi folosi datele oferite de instrumentele de evaluare administrate. Practic pe baza indicaţiilor din p lanificare se fac detalierile pe orizontală. dar ea. In condiţiile noului curriculum. alocarea de timp. creativitate. pe care trebuie să le dobândească elevii? • Care sunt performa minime. III.începe prin parcurgerea hemei urmatoare: În ce scop voi face? Identificarea competenţelor Ce voi face? Selectarea conţinuturilo r Cu ce voi face? Analiza resurselor Cum voi face? Determinarea activităţilor de învăţare Cât s-a realizat? Stabilirea instrumentelor de evaluare ConceptuI de unitate de învăţare are rolul să materializeze conceptul de demers didactic personalizat. se urm areşte corelarea elementelor celor cinci coloane. având în avans un interval de timp optim pen tru ca acestea să reflecte cât mai bine realitatea. este recomandabil ca proiectele unitaţilor de învaţare să se completeze ritmic pe parcursul anului. mijloace de învăţamant. flexibilizâd proiectarea didactică şi definind în acest sens pentru pract ica didactică premise mai bine fundamentate din punct de vedere pedagogic. sau din manual formulări care reflectă din partea profesorului o înteleger e profundă a scopurilor activitaţii sale. pr ecum şi orice alte elemente pe care le consideră utile în derularea scenariului didact ic. Proiectarea unităţii de învăţare . Asupra conţinuturilor progr amei profesorul poate interveni prin regruparea lor sub temele unităţilor de învăţare pe c are le-a stabilit. Programa trebuie parcursă în mod necesar de către toţi . Identif icarea unei unităţii de învăţare se face prin tema acesteia. In momentul propunerii lor spre rezolvare elevilor.

în egală măsură. În funcţie de acest criteriu. demonstrarea comportamentului comun icativ şi de inter-relaţionare a elevului. evaluarea ar trebu i să asigure evidenţierea progresului înregistrat de elev în raport cu sine însuşi.1. Multe cunoştinţe şi capacităţi re necesită evaluare sunt ignorate. pe drum l atingerii competenţelor prevăzute în programă. diverse tipuri de exerciţii etc. prezintă avantaje deosebit e. . psihomotor. în proiectul unităţii de învăţare apar specificaţii: evaluare iniţială. Focalizată pe unitatea de învăţare. calcule. care sunt apreciate prin note în mod aproximativ. .folosirea cu mai mare frecvenţă a metodelor de autoevaluareşi evaluare prin consultare în grupuri mici. atitudinea de responsab ilitate. ca: realizarea interacţiunii elev-profesor. câteva aspecte pot fi avute în vedere: . compuneri. Numai astfel pot fi stabilite modalităţile prin care poate fi r eglată. Ceea ce este generalizat în evaluarea curentă din şcoli este stocarea în memo rie a abstracţiilor şi promptitudinea reproducerii acestora. ceea ce poate el să facă u tilizând ceea ce ştie sau ceea ce intuieşte. variabile importante ale în cum ar fi: atitudinea elevului faţă de învăţare. activitatea de învăţare / formare a elevilor în mod diferenţ . modul cum abordează cunoştinţele pentru a rezolva probleme practi ce. ci. fără interes în ceea ce priveşte nivel ul cognitiv. de obicei nerelevante pentru personalitatea ele vului şi neglijează aspecte importante ca: gândirea. în accepţiunea tradiţională de “notare ritmică” robe stereotipe precum dictări. u sumativă. . adoptarea unor metode proprii de lucru. afectiv. specifice vieţii cotidiene etc. imaginaţia. deşi presupune un volum mare de timp pentru apreciere a tuturor elevilor şi blocaje datorate emoţiei sau timidităţii. de la o etapă la alta. relaţional.4. În raport cu momentele re alizării evaluării. mai ales. itemii pot fi cl asificaţi în trei mari categorii: 98 . deşi sunt. modul în care elevul învaţă (si matic sau sporadic).modificarea raportului dintre evaluarea sumativă. faţă de disciplina de studiu. evaluarea fo mativă este înlocuită cu evaluarea curentă. care inventariază. O astfel de evaluare are în vedere doa r unele tipuri de comportamente. sele ctează şi ierarhizează prin notă şi evaluarea formativă. III. Fiecare activitate de evaluare a rezultatelor şcolare trebuie însoţită în mod s stematic de o autoevaluare a procesului pe care profesorul l-a desfăşurat cu toţi elev ii şi cu fiecare elev. Unul dintre criteriile cel mai des utilizate este acela al gradulu i de obiectivitate oferit în corectare. faţă de educ aţă de interrelaţiile din interiorul colectivului de elevi. In acest sens.realizarea unui echilibru dinamic între evaluarea scrisă şi e aluarea orală: aceasta din urmă. ce are drept scop valorificarea po enţialului de care dispun elevii şi conduce la perfecţionarea continuă a stilului şi a met odelor proprii de învăţare. Tipuri de itemi Item = <întrebare> + <formatul acesteia> + <răspunsul aştep tat> Teoria şi practica evaluării evidenţiază mai multe citerii pe baza cărora pot fi clas ificaţi itemii.MiniGhid Metodologic Informatică & TIC TRADIŢIONALE METODE ŞI INSTRUMENTE DE • • • Probe scrise Probe orale Probe practice • Observarea sistematică a elevilor • Investigaţia EVALUARE • Proiectul COMPLEMENTARE • Por ofoliul • Tema pentru acasă • Tema de lucru în clasă • Autoevaluarea Adeseori. competenţa de comunicare şi de relaţi onare etc. Este important să fie evaluată nu numai ca titatea de informaţie de care dispune elevul.

“ etc. lipsite de echivoc .. sau imagini. lucrul cu calculatorul implică formulări standardizate. Tot în categoria itemilor cu alegere duală se pot realiza cerinţe care necesită di n partea elevului operaţii de anticipare a efectului unei operaţii prin aplicarea un ui sistem riguros de cunoştinţe într-un context nou. Aceştia sunt itemii cu cel mai înalt grad de dificultate. dacă se soli cierea cu ADEVĂRAT/FALS. Corect/Incorect etc. Pentru pr oiectarea corectă a itemilor cu alegere duală este necesară respectarea următoarelor cer inţe: formularea clară a enunţului. – Itemii de acest tip se prezintă sub forma unor întrebări sau enunţuri. se va evita utilizarea unor enunţu ri negative. notaţii etc. Factorul de discriminare fiin d însă extrem de mic. Da/Nu. operaţii sau reguli. principala problemă constituind-o modul de elaborare a schemei de notare as tfel încât să se poată obţine unitate şi uniformitate la nivelul corectării. “Explicaţi în ce area. corelarea strictă a sarcinilor cu obiectivele de evaluării. posibilitatea asocierii cu un sistem de notare extrem de simplu: pu nctajul aferent se acordă integral. Atragem atenţia asupra faptului că lipsa “firului roşu“ care pune în e idenţă elementele sistematice întâlnite în utilizarea unui produs soft (chiar şi în cazul u soft de bază) conduc la un experimentalism accentuat care împiedică formarea capacităţii elevului de a se adapta situaţiilor noi. Itemi cu alegere duală A legerea duală presupune formularea unei cerinţe cu două variante complementare de răspun s (Adevărat/Fals. Se pot verifica prin intermediul i temilor cu alegere duală: cunoştinţele legate de corectitudinea sintactică a unor expres ii (comenzi. Itemii semiobiectivi permit ca răspunsul aşteptat să nu fie totdeauna unic determ inat. acestea conducând la raţionamente ce folosesc dubla negaţie. modalitatea de corectare şi notare inducând uneori mici diferenţe de la un corec tor la altul.) recunoaşterea unor explicaţii.. efortul elevului reducându-se la id entificarea unui răspuns din două posibile. itemii cu alegere duală sunt formulaţi în combinaţie cu itemi subiectivi de tipul “Justificaţi. De obicei. justificări care necesită achiziţii cognitive super oare. elemente utile în construirea răspunsurilor pentru itemii semiobiectivi şi subiectivi. se vor evita enunţurile foarte generale. efortul de a realiza enunţuri fără echivoc duce la elaborarea de itemi nesemnifica tivi din punct de vedere educaţional sau ştiinţific). pe rmiţând valorificarea capacităţilor creative ale elevilor.”. inducând un gr ad înalt de ambiguitate. Aceştia testează o gamă mai variată de capacităţi intelectuale. – – înţelegerea semnificaţiei unor noţiuni din te logia de specialitate (denumiri. c. b. fie că este vo ba de activităţi de utilizare şi combinare a instrumentelor informatice (Tehnologia In formaţiei). Aceştia sunt relativ uşor de con truit. Achiziţiile evaluate prin itemii cu aleger e duală sunt de regulă rudimentare. neexersate. Fac excepţie enunţurile care pun în evidenţă justificăr unor proprietăţi. Itemii obiectivi asigură un grad de obiectivitate ridicat în măsurarea rezultatelor şcolare şi testează un număr mare de elemente de conţinut într-un interval de timp relativ scurt. ca şi modalitatea de notare a acestuia . capacitatea de a testa un număr mare de elemente de conţinut într-un timp relativ scurt. se acordă parţial conform unei reguli (formule) de calcul sau nu se acordă deloc (în funcţie de răspunsul aşteptat). oferind în ac timp posibilitatea de a utiliza şi materiale auxiliare în rezolvarea sarcinilor de lucru propuse. a. proprietăţi etc. a.. ştiinţifice.”. “Scrieţi varianta corectă. metode de rezolvare.. itemii obiectivi şi cei semiobiectivi repezentând instrumente de evaluare fracvent aplicate la aceste discipline.1... Răspunsul aşteptat este bine determinat. elevul va putea obţine un rezultat acceptabil la un test format numai din astfel de itemi alegând la întâmplare un răspuns dintre cele două admise pentru fiecare item în parte. instrucţiuni. Itemii subiectivi (cu răspuns deschis) solicită un răspuns amplu. rolul secundar pe care î au de a obişnui elevul cu formulări standard.). În aceste cazuri. fără ambiguităţi sau formulări incomplete. instrumente de prelucrare. 99 . obiectivitate privind apreciere a răspunsului. Itemii obiectivi sunt caracterizaţi prin: structur area sarcinilor propuse şi standardizarea formatului lor de prezentare.MiniGhid Metodologic Informatică & TIC a. definiţii. o parte din punctaj este alocată justificării. selectarea unor en unţuri relevante pentru domeniul de cunoaştere sau categoria de competenţe testată (uneo ri.). Itemi obiec i Fie că este vorba de activităţi de proiectare şi programare (Informatică).

Abilitatea profesorului de a elabora distractori cât mai plauzibili. – Itemii de acest tip permit abordarea unui vol um mare de informaţie într-un interval de timp relativ redus. dar plauzibile poartă numele de distractori. – – termeni şi expresii de specialitate. aranjarea listei de răspunsuri (mai ales dacă sunt multe) într-o or dine logică. contribuie la reuşita aplicării testelo r cu alegere multiplă. prin eliminarea elementelor redundante in utile în raport cu ideea enunţului şi cerinţa itemului. cu alegere multiplă Itemii cu alegere multiplă sunt cele mai utilizate tipuri de ite mi. – instrumentul adecvat unei prelucrări. dacă elev ociază corect n-1 enunţuri dintre cele n date. deşi nu pot măsura capacitatea elevului de a-şi organiza şi exprima ideile. Factorul de discriminare e ste ceva mai mare decât în cazul itemilor cu alegere duală. iar factorul de discriminare este mai mare decât în cazul celorlalţi itemi obiectivi . a. – Itemii de acest tip permit abordarea unui volum m are de informaţie într-un interval de timp relativ redus. în special în testele standardizate (bacalaureat. cu excepţia cazului în care se doreşte evidenţierea relaţiei dintre acestea. enunţurile vor fi aproximativ egale ca lun gime. simboluri şi concepte. Se verifică prin intermediul itemilor de tip pereche capacitatea elevului de a stabili corelaţii între: – funcţii şi instrumente.MiniGhid Metodologic Informatică & TIC se vor evita enunţurile lungi şi complexe.) Un item cu aleg ere multiplă este format dintr-un enunţ numit premisă sau bază şi un număr de opţiuni din c elevul trebuie să aleagă un singur răspuns numit cheie. să rescrie perechile asociate sau doar eleme ntele lor de identificare etc. astfel încât. pe baza unei discriminări complexe. dar nu exact ega le. în timp ce alţi itemi soli ită cel mai bun răspuns. O categorie de itemi cu alegere mult plă solicită răspunsul corect. strategia de asociere “la întâm lare” neconducând decât în situaţii foarte rare la un rezultat acceptabil privind rezultat ul testului. – secvenţe de program care realizează o anumită prel ucrare. care să const ruiască toate alternativele posibile de a greşi. neconform e cu cerinţa. eventual dacă există ră nsuri care nu vor fi folosite niciodată (dacă funcţia de asociere este surjectivă sau nu ). Itemi de tip pereche Itemii de tip pereche solicită stabilirea unor corespondenţe între informaţiile distribuite pe două coloane. – termeni şi defi probleme şi metode de rezolvare. Prima coloană conţine i formaţii de tip enunţ (premise). dintr-o sferă relati v restrânsă.) şi se precizează dacă un răspuns poate fi folosit la mai mult de un enunţ (dacă funcţia de asociere este injectivă sau nu). enunţurile adevărate sau false să fie aproximativ egale ca număr. nu se va folosi un limbaj academ ic. Celelalte răspunsuri. metode de r ezolvare şi tehnici de implementare. deoarece acesta ar putea constitui un indiciu după care elevul încearcă să ghicească ră punsul corect. Cele două coloane sunt precedate de instrucţiuni de asociere în care i se explică elevului tehnica de formare a perechilor (să unească printr-o linie. Erorile comise de elevi oferă profesorului informaţii supliment are necesare în autoreglarea procesului de învăţământ. cea de-a doua coloană conţinând informaţii de tip răspuns. aran nunţurilor în listă astfel încât să nu se poată intui o regulă de asociere (referinţele să e”). – expresii cu o valoare dată. a. În aceste cazuri trebuie 10 0 . aranjarea coloanelor astfel încât acestea să încapă în întregime pe aceeaşi pagină. se va evita introducerea a două idei într-un singur enunţ. oferind posibilitatea evaluării unor achiziţii cognitive complexe. Sunt forme de testare cu un grad mare de fidelitate . să nu rezulte automat răspunsul pentru ce l de-al n-lea enunţ. admitere etc. o terminologie foarte specializată sau o construcţie lingvistică stufoasă şi greoaie. utilizarea unui număr inegal de premise şi răspunsuri.2. Pentru proiectarea corectă a itemilor de tip de pereche este necesară r espectarea următoarelor cerinţe: utilizarea unui material omogen. celelalte variante fiind greşite. Se verifică prin intermediu l itemilor de tip pereche capacitatea elevului de a identifica: definiţii şi notaţii. evului i se solicită să asocieze fiecare enunţ cu un unic răspuns. astfel încât căutarea răspunsului în listă să se realizeze cât mai comod.

Itemii de completarea se prez intă sub forma unui enunţ. formularea poate fi mai clară sau mai neclară. – Itemii cu răspuns scurt se prezintă cel i des sub forma unor întrebări. – recunoaşte rea şi nominalizarea unor elemente vizuale specifice unui anumit mediu de lucru. const ruirea itemului astfel încât să existe o singură alternativă “corectă” sau “cea mai bună”. un cuvânt. aflate în concordanţă cu premisa.. furnizarea tuturor informaţiilor necesare în premisă. pe cât posibil. notaţii etc. vizarea unui răspuns care să reprezinte o sinteză de cunoştinţe sau un rezultat al înţelegerii unei situaţii şi mai puţin o reproduc unor informaţii. ca în cazul itemilor obiectivi. simboluri. unor alternative astfel încât distractorii să fie în mod cert “greşiţi” sau “mai puţin bun ianta cheie să fie în mod cert “corectă” sau “cea mai bună”. b.MiniGhid Metodologic Informatică & TIC manifestată grijă la formularea cerinţei astfel încât criteriul de discriminare a “celui ma bun răspuns” să reiasă clar din enunţ. nu şi dimensiunea lor. adapta şi construi un algoritm pe o temă dată sau un prog ram într-un – limbaj de programare. con a ansamblurilor de itemi cu alegere multiplă astfel încât răspunsurile să ocupe poziţii dif rite în lista de variante (să nu fie în mod constant al doilea răspuns. – – c apacitatea de integrare a unor elemente necesare din punct de vedere sintactic s au semantic într-un context dat. un l. exprimat cu precizie. termenii folosiţi se po t încadra în nişte standarde ştiinţifice sau pot fi variante particulare ale acestora etc. rezervarea or spaţii pentru răspuns care să sugereze numărul de cuvinte aşteptate (dacă acest lucru nu reprezintă un indiciu).1. construirea unor alternative plauzibile. o expresie. raportarea parţial subi ectivă a profesorului în raport cu răspunsul formulat (răspunsul poate fi scris ordonat sau dezordonat. Ei solicită găsirea cuvîntului sau si tagmei care completează şi dă sens enunţului respectiv. I temi semiobiectivi Itemii semiobiectivi formează o categorie de instrumente de eva luare ce solicită construirea parţială sau totală a unui răspuns pe baza unei sarcini defi nite. Se pot verifica prin intermediul itemilor cu răspuns scurt şi de completare: cunoaşterea unor noţiuni. care comportă raportări noi la barem). Pentru proiectarea corectă a itemi lor cu răspuns scurt / de completare este necesară respectarea următoarelor cerinţe: for mularea enunţului astfel încât să admită un răspus scurt. Pentru proiectarea corectă a itemilor cu alegere mu tiplă este necesară respectarea următoarelor cerinţe: stabilirea clară a cerinţei. de exemplu) b. recunoaşte. în conco nţă cu obiectivul de evaluare. o propoziţie sau frază concisă).2. schimbarea unor elemente dintr-un context dat ast fel încât să se realizeze o finalitate precizată. b. aranjarea listei de răspunsuri rdine logică. Itemi cu răspuns scurt / de completare Itemii cu răspuns scurt solicită ca elevul să formuleze un răspuns scurt sau să completeze o afirmaţie astfel încât aceasta să capete sens sau să aibă valoar e adevăr. elimi nându-se materialul irelevant. astfel încât căutarea răspunsului în listă să se realizeze cât mai comod. unei afirmaţii incomplete. 101 . Ei solicită un răspuns sub o formă restrânsă (un număr. formularea premisei folosind afirmaţii sau întrebări pozi tive. printr-un sistem de subîntrebări relative la o temă comun răspunsuri de tip obiectiv. crearea unor situaţii cogn e nivel mai ridicat prin solicitarea de elaborare a răspunsului şi nu de alegere a l ui dintr-o mulţime prestabilită. formularea nunţului astfel încât acesta să admită un singur răspuns corect. Se pot verifica prin intermediul întrebărilor structurate: capa citatea de a urmări. Întrebări structurate Întrebările structurate solicită. expresii de specialitate. ) posibilitatea asocierii unui sistem de notare în care pot să intervină situaţii neprevăz ute (răspunsuri neaşteptate. Itemii semiobiectivi sunt caracterizaţi prin: posibilitatea de a testa o gamă mai largă de capacităţi intelectuale şi rezultate ale învăţării. răspunsuri scurte sau de completare prin care se pot eva lua cunoştinţele complexe referitoare la tema respectivă fără a solicita elaborarea unui ră puns deschis (eseu).

). Acest tip de eseu comportă operaţii de maximă complexitate (analiză. c. originalitatea şi caracter ul personal al răspunsului. crearea unor situaţii cognitive de nivel foarte ridica t prin solicitarea de a realiza interacţiuni reale şi complexe între cunoştinţe. Itemi subiectivi (cu răspuns deschis) Itemii subiectivi formează o categorie de i nstrumente de evaluare ce vizează creativitatea elevului. formularea răspunsului.) sau privind forma de prezentare a răspunsului. sisteme de operare. dar şi priceperi şi depri deri sporind gradul de obiectivitate în raport cu itemii cu răspuns deschis. abilităţi prinderi. Pentr u proiectarea corectă a întrebărilor strucutrate este necesară respectarea următoarelor ce rinţe: redactarea subîntrebărilor astfel încât acestea să solicite răspunsuri simple la înc crescând pe parcurs dificultatea acestora. în cazul în care baremul nu a prevăzut toate situaţiile de interpretare şi construire a răspunsului. sistematizare şi restructurare) lăsând frâu liber fanteziei şi capacităţ eative ale elevului. necesi tatea predefinirii unor criterii privind baremul de corectare şi notare. ideile care treb uie să fie atinse etc. În cazul informatic ii şi tehnologiei informaţiei se pot elabora itemi subiectivi de tip eseu (structura t sau liber) şi itemi de tip problemă (care necesită proiectare. adică răspunsul la o întrebare să nu depindă d nsul la întrebările precedente. raportarea subiectivă a profesorului în raport cu răspunsul formulat. Deşi sunt uşor de formulat.2.1. iar în cazul tehnologiei informaţiei p rin teme practice şi proiecte. Itemii structuraţi sunt construiţi a stfel încât răspunsul aşteptat să fie “orientat” cu ajutorul unor elemente din enunţ (indic ivind ordinea de tratare. capacităţile de sistematizare a unor elemente prin construirea unor scheme sau repr ezentări grafice. itemii subiectivi ridică problem e privind obiectivitatea evaluării. pentru anumite teme cu un volum mai mare de e lemente “informative” în raport cu achiziţiile “operaţionale”. Se pot verifica prin interme l itemilor de tip eseu: cunoştinţele globale legate de stuctura sistemelor de calcul . itemii de tip eseu preferaţi sunt cei structuraţi. Ace te neconcordanţe sunt generate uneori de nepotrivirea între contextul general al cun oştinţelor şi situaţiile particulare în care acestea trebuie să fie aplicate. c. Se po t adăuga restricţii privind întinderea în timp sau spaţiu (număr rânduri. Deoarece la informatică elementele de creativitate se manifes tă mai ales prin rezolvări de probleme şi proiecte. Itemii subiectivi sunt caracterizaţi prin: abord are globală a unei sarcini asociate unui obiectiv ce nu poate fi evaluat prin inte rmediul itemilor obiectivi. pagini. Un eseu liber nu furnizează în enunţ nici un fel de indicaţii sau constrângeri. un e seu liber nefiind necesar decât rar. Se pot verifica totodată cunoştinţe. pricepere şi timp. c omplexitate şi gradualitate. pentru a fi aplicate în c . numărul de linii. Itemi de tip eseu Itemii de tip eseu pot fi structuraţi sau liberi. redactare şi uneori imp lementare a rezolvării). formularea unor subîntrebări autoconţinute (a l căror răspuns corect să nu depindă de răspunsul corect la una dintre întrebările preceden realizarea concordanţei dintre enunţul general (tema întrebării) şi subîntrebările formulat c. Subîntrebăr ile ce formează itemul permit creşterea progresivă a dificultăţii cerinţelor. Itemi de tip problemă Rezolv area unei probleme presupune soluţionarea unei situaţii conflictuale generată de necon cordanţe ivite între sistemul de achiziţii şi situaţiile concrete descrise de un enunţ. etapele conceptuale ale proiectării unei aplicaţii etc. Alteori achiz ile sunt dobândite prin experimente (situaţii particulare) şi. – Itemii de tip eseu se prezintă sub forma unor cerinţe generale însoţite eventual (pentru eseurile structurate) de indicii privind tratarea cerinţei.MiniGhid Metodologic – Informatică & TIC capacitatea de a realiza din aproape în aproape o prelucrare complexă utilizând un med iu de lucru informatic. dar este reco andat ca subîntrebările să fie independente. posibilitatea. paragrafe c. Proiectarea lor necesită atenţie. conferind procesului de evaluare varietate. criterii clare. principiile de utili zare a unei anumite aplicaţii. judicioase şi puternic anticipative. sinteză. O întrebare structurată poate să conţină materiale suport şi inform i suplimentare ce se adaugă treptat. a unor element e noi (răspunsuri neaşteptate) care comportă reanalizarea baremului. evoluţia istorică a – sitemelor hard şi soft. elevul având libertatea să-şi strucutreze cum consideră şi cum poate materia ul pe care-l solicită enunţul.

u totul alte situaţii. 102 . acestea trebuie să fie ridicate la un înalt nivel de abstractiz are şi generalizare.

-descrierea metodei de rezolvare a problemei. Capacităţile cognitive superioare legate de aplicare creati vă. -posibilitatea de generalizare şi t ransfer a tehnicilor de rezolvare. -ela borarea unui raport despre rezultatele obţinute. alegerea modelului adecvat etc . Obiectivele urmărite prin utilizarea re zolvării de probleme sunt: . metodele de rezolvare şi tehnicile de implemen tare fiind supuse unui “tir” sistematic de probleme prin care acestea să formeze compe tenţe reale de programare.obţinerea informaţiilor necesare rezolvării problemei. -for mularea şi testarea ipotezelor. descoperirea condiţiilor interne. gândire divergentă. sunt verificate prin itemi de acest tip.MiniGhid Metodologic Informatică & TIC Rezolvarea de probleme este o activitate specifică şi des utilizată la disciplina “Infor matică”. 103 . elementele gândirii algoritmice.

4. Evaluarea prin rezolvare de probleme la informatică ridică uneori probleme din punctul de vedere a l întocmirii baremului de corectare. Metodele alternative de evaluare se caracterizează prin următoarele: capacitatea de a transforma relaţia profesor-elev inducând un climat de c olaborare şi parteneriat. Acest tip de item impune o analiză atentă a algoritmului şi asocier ea lui cu una dintre problemele sau prelucrările numerice întâlnite la matematică. Aspecte de aceeaşi natură se întâlnes şi în domeniul utilizării calculatorului. Metodele complementare realiz ează actul evaluării în strînsă legătură cu procesul educativ. “la obiect” sau pot crea un “context” care trebuie modela t pentru a se ajunge la rezolvarea propriu-zisă. Aspectele reale de concepţie. o formulare a enunţului care să se caracterizeze prin coerenţă. caracterul sumativ. de a-l testa şi. a prezentărilor etc. . la Tehnologia informaţiei. de a construi un algoritm conform unor criterii (limita de memorie. eficienţa algoritmului. de a implementa şi verifica programul corespunzător. de creativitate şi gând re divergentă intervin la realizarea machetelor. – discernământul în a alege un algoritm mai efici ent (conform unuia dintre din criteriile studiate: număr operaţii. motivaţiile şi atitudinea ele ului în demersul educaţional. realizat prin evaluarea cunoştinţelor. Metode complementare de evaluare Metodele complementare de eva luare reprezintă instrumente suplimentare. capacitatea de a realiza o evaluare individualizată (observare sistematică). strategiile de structurare a datelor sau însuşi algorit mul de rezolvare (în partea practică a probei).2. structurarea programului. spaţiu de memorie u tilizat) III. – capacitatea de a alege structurile de program de date adecvate rezolvării unei probleme. proiectul. referatul. în funcţie de erorile apărute. relucrarea astfel încât “produsul” (documentul. număr de instrucţiuni etc. Se pot formula probleme în care se fu rnizează algoritmul şi se cere un enunţ de problemă care se rezolvă prin intermediul algor itmului respectiv. proiecte ). capacităţilor şi atitudinilor pe o periadă mai lungă de timp şi dintr-o arie mai largă. Se recomandă totuşi ca baremul de corectare să cuprindă fracţiuni din punctaj pentru diferitele aspecte pe care le co mportă rezolvarea unei probleme la informatică: corectitudinea sintactică. amintind că rolul programatorului este acela de a “ordona” iniţial informaţia şi operaţiile specifice unui anumit context şi abia după aceea de a elabora algoritmul. c apacitatea de a educa spiritul de echipă prin activităţi de grup (investigaţii. tratarea unor situaţii limită. Se pot verifica prin inter mediul itemilor de rezolvare de probleme: – concepţia unor algoritmi de rezolvare a problemelor elementare. Enunţu ile pot fi formulate abstract. posibilitatea transformării procesului de evaluare prin înlo cuirea tendinţei de a corecta şi sancţiona prin aceea de a soluţiona erorile semnalate. caracterul form ativ. prezentarea. portofoliul. descriind situaţii concrete de prelucrare. “Povestea” în spatele căreia se ascunde p roblema are de cele mai multe ori conotaţii practice. obser varea sistematică a activităţii elevului şi autoevaluarea.). – capacitatea de a organiza volume mar i de date cu ajutorul bazelor de date. nestandardizate. raportul etc. prin întrepătrundere cu etap stuia. Unele tendinţe exagerate tind să impună o corectare pe principiul: problemă=program funcţional corect (pornind de la premisa că “un program care aproape merge e ca un avion care aproape zboară”). de a reconsidera elemente le de sintaxă ale programului.MiniGhid Metodologic Informatică & TIC Cerinţe suplimentare asociate unei probleme pot pune în evidenţă capacitatea elevului de a estima eficienţa unei rezolvări. – abilitatea de a implementa programul. structurare a datelor şi declararea variabilelor. de evaluare dispunând de forme specifice cum ar fi: investigaţia. pe paşi. fizică sau în alte domenii. – asimilarea unui algoritm general prin adaptarea lui astf el încât să rezolve o problemă particulară. corectitudinea alg oritmului. realizat prin valorificarea atitudinii elevului în raport cu propria sa eval uare. de a-l depana. să proiecteze. din rul programului să-şi aleagă obiectele şi instrumentele potrivite. când beneficiarul fo rmulează un enunţ şi utilizatorul trebuie să-şi aleagă programul de aplicaţie adecvat. posibilitatea de a deprinde elevul cu mecanismele de aurocorectare şi autoeducare necesare şi în procesul de integrare socială. eventual explicarea metodei aplicate (chiar daca a fost aplicată greşit) etc.) să răspundă cer or şi să fie realizat în timp record. urmărind în special capacităţile cognitive superioare. utilizarea mai amplă a tehnicilor şi mijloac elor didactice.

104 .

calitatea grafică şi funcţională a interfeţei). prez entarea referatului sau proiectului de către elevul sau elevii care l-au elaborat. Varietatea universului informatic ( a limbajelor şi tehnicilor de programare. cu multitudi ea de aplicaţii software din domenii atât de variate. dacă bibliografia propusă este mai bogată şi etapele de proiectare (concepţie). atât l a Tehnologia informaţiei cât şi la Informatică.Investigaţia Informatică & TIC caracterul profund integrator realizat prin interdisciplinaritate. reproi ectare (dacă este cazul). este tratată în mod independent de către elev şi susţinută apo în faţa colegilor sau altui auditoriu mai larg. experim entarea unor instrumente de prelucrare – nestandard. dezvoltare şi elaborare a documentaţiei aferente necesită plan ificarea unor etape de elaborare şi o strategie de lucru. urmărirea activităţii elevului în sensul u izării eficiente şi creatoare a materialului de investigat.) justifică utilizarea acestei forme de studiu şi evaluare la clasă. este un teren ideal pentru des făşurarea investigaţiilor. să fie capabil să dea ex . acesta (sau un – reprezentant al grupului) trebuind să-l susţină. experimentare. implementare şi testare necesită un timp mai îndelungat. a aplicaţiilor din domeniul TIC. a noutăţilor hardware etc. informaţiile din Help. încurajarea şi evidenţierea activităţilor creatoare desfăşurate de elevi.).MiniGhid Metodologic 1. prin completări de conţinut ale progra mei sau prin aducerea în atenţie a unei problematici complet noi. configurare. Organizarea unei activităţi de evaluare şi învăţare prin intermediul referatelor şi pr ctelor presupune: – valorificarea metodei de învăţare prin descoperire. conflicte cu alte programe etc. experimentează operaţiile propuse de aplicaţie imaginând utilitatea practică a acestora şi formulează concluzii generale refer itoare la acel soft (utilitate. – extrapolarea cunoştinţelor dobândite şi verific area ipotezelor formulate. structurarea infor maţiei corespunzătoare unui referat într-un material ce poate fi scris. Tema referatului. vizite etc. Dacă studiul aferent şi rezultatul studiulu prezintă interes şi din punct de vedre practic. formularea unor indi caţii care să direcţioneze activitatea elevilor. lucrarea poartă numele de proi ect. Referatul şi proiectul Referatul reprezintă o formă de îmbinare a studiului individual cu activitate de preze ntare şi argumentare. Investigaţia este o metodă de evaluare şi învăţare utilizată foarte des isciplina Tehnologie informaţiei şi numai ocazional la disciplina Informatică.). Tehnologia informaţiei. opţiunile din meniuri. spaţiul ocupat de produsele construite cu ajutorul lui. compararea şi generalizarea uno r tehnici şi metode utilizate în tehnologie prin cercetarea altor izvoare sau prin u tilizarea altor instrumente echivalente. ilustrat sau – p rezentat pe calculator. rezultatul fiind un program (o apli caţie) sau un produs TI complex (rezultatul aplicării creatoare a instrumentelor inf ormatice). organizare. educare şi inst ruire mutilaterală. I nvestigaţii mai rafinate pot realiza elevii iniţiaţi în programare şi în sisteme de operare care disting mult mai multe aspecte “în spatele“ produsului soft investigat (eficienţă. spaţiul ocupat pe disc sau în memorie. dirijată şi sprijinită de profesor. Organiz area unei activităţi de evaluare şi învăţare prin metoda investigaţiei presupune: – valorif a metodei de învăţare prin descoperire. sprijinirea elevilor sau grupurilor de elevi care întâmpină dificultăţi în înţelegerea temei sau a metodelor specif e studiu. a desco irilor neaşteptate. În cele mai multe dintre cazuri investigaţia trebuie să fie organizată ca muncă independen tă depusă de elev. 2. Pentru organizarea activităţilor de investigaţie. studiul unor mat eriale suplimentare şi izvoare de informare diverse în scopul îmbogăţirii şi activizării – nţelor din domeniul studiat sau domenii conexe. profesorul va urmări: formularea generală a tem ei. în cazul proiectului. însoţită de bibliografie şi alte surse de document are (Internet. a românească de tip agendă MyCount difuzată pe Internet): citeşte explicaţiile asociate butoa elor. activităţile de concepere. Elevul cercetează “posibilităţile” unei aplicaţii (de exemplu. studiul unor documentaţii complementare. po sibilitate de dezvoltare. asigurarea surselor bibliografice sau tehnice necesare. solicitarea unor cunoştinţe sau deprinderi dobândite la alt e dicipline prin adaptarea creatoare a – acestora la cerinţele temei de investigaţie.

Referatul este de regulă o lucrarea de mică amploare. dar mai structurată şi mai bogată în informaţii decât o temă de muncă indep ferentă lecţiei curente. Proiectul este o lucrare mai amplă a 105 . să răspundă la întrebări etc.licaţii suplimentare.

autoevaluarea elevului. investigaţii. rezultatul final “converge” cătr oarea reală a acestuia. profesorul: va formula teme clare. de com plexitate medie. atitudinea elevului) sau chiar de către elev (pe considerente de performanţă. de progres ul înregistrat de acesta. chesti onare de atitudini etc.) va recomanda sau asigura sursele bibliografice şi de informa re necesare. dând şi elevului posibilitatea de a adăuga piese pe care le consideră relevante pentru activitatea sa. gradului de formare a abilităţilor şi gradului de raportare atitudinală pe care acesta o are faţă de tema evaluată. teme pentru acasă. Pentru a realiza o evaluare pe bază de referate. dar şi a celui de învăţare. observarea sistematică la clasă. un an. Profesorul construieşte această fişă în vederea individualizării cesului sumativ de evaluare. Portofoliul reprezintă o metodă complexă de evaluare în care un rezultat al evaluării este elaborat pe baza apli cării unui ansamblu variat de probe şi instrumente de evaluare. Pe baza fişei de evaluare se poat e realiza şi orientarea şcolară şi profesională a elevului.) Structurarea evaluării sub forma de portofoliu se dovedeşte deosebit de u tilă.MiniGhid Metodologic Informatică & TIC cărei temă este comunicată sau aleasă din timp. sesizând elementele de progres sau regres. pref erinţe etc. Observarea sistematică a activităţii şi comportamentului elevilor Fişa de observare a activităţii şi comportamentului elevului înregistrează informaţii legat e particularităţile personalităţii elevului manifestate în procesul didactic. va supraveghea discuţiile purtate cu elevii asupra conţinutului referatului. La Tehnologia informaţiei portofoliul se poate constitui d intr-o colecţie de lucrări practice realizate pe calculator. atitudini semnificative etc. cât şi pentru elev sau părinţii acestuia. cu o distribuire judicioasă a sarcinilor între membrii grupului. Pentru a realiza o ev luare pe bază de potofoliu. va pune în evidenţă evoluţia elevului. Proiectul poate fi elaborat în gru . evol uţia. precizînd pe cât posibil amploarea lucrării (câte pagini. îşi va rezerva suficient ti mp (în perioada de evaluare sau la sfîrşitul unor unităţi de învăţare) pentru ca elevii îns elaborarea proiectelor să-şi poată prezenta rezultatul proiectării. de achiziţiil evaluate spontan (răspunsuri sporadice. adaptând instrumentele de evaluare ce constituie “centrul de greutate” a le portofoliului la specificul disciplinei. P entru a realiza o evaluare pe bază de proiecte. Portofoliul 3. referate şi proiecte. Conţinutul unui portofoliu este r entat de rezultatele la: lucrări scrise sau practice.). elaborarea unui proiect putând să dureze de la 1-2 săptămîni până la 2-3 luni sau chiar un semestru. va stabili un termen final şi . profesorul: va comunica elevilor intenţia de a realiza u n portofoliu. atât pentru profesor. va recomanda s au asigura sursele bibliografice şi de informare necesare. Alegerea elementelor ce formează portofoliul este realizată de căt re profesor (astfel încât acestea să ofere informaţii concludente privind pregătirea. lăsând celor care elaborează proiectul multă libertate în a im roviza. dar va asigura şi un sistem de criterii pe baza cărora să realizeze evalu area globală şi finală a portofoliului. Prin multitudinea de forme şi momente în care se desfăşoară testarea elevului. va integra rezultatul evaluării portofoliului în sistemul general de notare. particularit e exprimare şi de raportare a acestuia la aria vizată. va evalua separat fiecare piesă a portofoliului în momentul realizării ei. de la un semestru. profesorul: va formula teme practi ce. fiecare vizând anumite as pecte de utilizare. Portofoliul este realizat pe o periadă mai îndelungată. Referatul poate f i utilizat la Informatică şi în egală măsură la Tehnologia informaţiei temele referatelor v cel mai des domenii de actualitate în producţia sofware sau în domeniul TIC. va alege componentele ce formează port ofoliul. până la un ciclu de învăţământ. durata maximă n ecesară prezentării etc. în funcţie de modul de evaluare. 4. ilustrând preocupar ea pentru lămurirea neclarităţilor. de complexitate sporită. va supraveghea disc uţiile purtate cu elevii asupra proiectului. îşi va rezerva suficient timp (în perioada de evaluare sau la sfârşitul unor unităţi de învăţare) pentru ca elevii însărcinaţi cu elaborarea referatelor să-şi poată pre atul. termene intermediare de raportare. parte dintre ele fiind comunicate elevului şi părinţilor acestui . Informaţiile din fişa personală aracter parţial secret. oferind o imagine de ansamblu asupra nivelului cun oştinţelor. adapta şi interpreta cerinţa într-un mod personal.

a. 106 .

Lecţia este înţeleasă ca o componentă operaţională (Cum?) pe termen s a unităţii de învăţare. • implică profesorul într-un . Proiectul unităţii e trebuie să ofere o derivare simplă a lecţiilor componente. Trăsături de temperament. din anul şi de la clasa respectivă. cu accent pe ritmurile de învăţare proprii ale elevilor. c u accent pe explorare şi reflecţie.rezolvare de probleme complexe. • dă perspecti a lecţiilor. limbaj. Astfel. Ca urmare.. Proiectul de lecţie ..MiniGhid Metodologic Informatică & TIC Un model orientativ de fişă de observare conţine: Date generale despre elev (nume.este recunoscut ca o formalitate consumatoare de timp şi energie.proiect didactic" pe te rmen mediu şi lung. Atitudini şi relaţionare (cu sine însuşi.). • implică elevii în . IV. pre nume.proiecte de învatare personale" pe ter men mediu si lung . Proiectul unei unităţi de învăţare conţine s ciente elemente pentru a oferi o imagine asupra fiecărei ore. dar şi în funcţie de implicarea şi de rit ul individual al elevului. dacă proi ectul unităţii de învăţare este bine construit. Particularităţi ale proceselor intelectuale (gîndire. In consecinţă. condiţii materiale. in tereselor şi nivelului de integrare. structurală (Cu ce?) şi operaţională (Cum a unitaţii de învăţare. Dacă unitatea de învăţare oferă întelegerea procesului din perspect lecţia oferă înţelegerea procesului din perspectiva operativă. proiectul unităţii de învăţare oferă date referitoare la elementele de conţinut şi nţele vizate.conceput ca document separat . particularităţi socio-comportamentale). Proiectul unităţii de învăţare . climat educativ. Particularităţi afect iv-motivaţionale. Ca urmare. tactică. totodată. în funcţie de secvenţa unităţii de î re se află.o entitate supraordonată .la o lecţie componentă trebuie să permit . atenţi e. sunt indicate rse materiale. trecerea de la unitatea de învăţare . imaginaţie. Acest mod are orientată către scopuri precise caracterizează organizarea atât a unităţii de învăţare cţiei. cu ma ia studiată. la care se raportează anumite activităţi de învăţare. atitudinilor.replicare" în acelaşi timp functională (De ce?). cu colegii) Consideraţii privind evoluţia aptitudinilor. conferind acestora o structură specifică. vârstă. Aptitudini şi interese manifestate. nu mai este necesară detalierea la nivelul roiectului de lecţie. 107 .Proiectul de lecţie ? Faţ proiectarea tradiţională centrată pe lecţie (ora de curs) . pentru fiecare activitate prec um şi instrumente de evaluare necesare la nivelul lecţiei (orei). spirit de observaţie etc. la o scară temporală mai mică şi într-un mod subordonat.proiectarea unităţii de învăţar rmatoarele avantaje: • creează un mediu de învăţare coerent în care aşteptările elevilor de lare pe termen mediu şi lung. fişa de observar e poate să conţină şi considerente legate de atingerea şi formarea competenţelor specifice. Completarea fişei se realizează în timp într-un ritm adecvat specificului activităţilor de a disciplina. în tabelul care sintetizeaza proiectarea unitatii de învăţare se pot delimita prin linii orizonta le (punctate) spatiile corespunzatoare unei ore de curs. pentru fiecare lecţie.. memorie. forme de organizare a clasei etc. Prin stabilirea copmpetenţelor generale ale dis ciplinei şi achiziţiile cognitive şi comportamentale vizate de aceasta. . luare de decizii complexe.

Sign up to vote on this title
UsefulNot useful