Documente Academic
Documente Profesional
Documente Cultură
3) Ce este CLR?
CLR = Runtime de limbaj comun . Este una dintre cele mai importante componente ale
cadrului .Net. Oferă blocuri pentru multe aplicații.
1) Obiecte si Clase
O clasa = colectie de obiecte care au proprietati, operatii si comportamente comune.
= o combinatie de stari (date) si de comportamente (metode).
= o clasa este un tip de date, iar obiectele sunt instante ale acestui tip de
date.
2) Mostenirea claselor
Avem o clasa parinte X = clasa de baza/super-clasa, care va fi mostenita de o clasa
copil Y, adica clasa copil va imprumuta metodele si clasele existente in clasa parinte.
{this.mascul = mascul; }}
{this.greutate = greutate; }
base din constructorul clasei Pisica indică faptul că clasa de bază trebuie utilizată și
permite accesul la metodele, constructorii și variabilele sale. Folosind base(), putem
apela constructorul clasei de bază . Folosind base.Metoda(...) putem apela o metodă a
clasei de bază , îi putem oferi parametri și putem utiliza rezultatele acesteia. Folosind
base.câ mp putem obține valoarea unei variabile membru din clasa de bază sau îi putem
atribui o valoare diferită .
3) Polimorfismul
Polimorfism-ul = „a avea mai multe forme” si ofera posibilitatea de a folosi metodele
mostenite sub mai multe forme, in functie de rezultatul pe care il dorim (astfel codul
nostru devenind mai flexibil). Acest lucru ne ofera avantajul de a face un lucru in mai
multe moduri. In concluzie, mostenirea ne ofera posibilitatea de a folosi campurile si
metodele clasei parinte, in timp ce polimorfismul ne ofera posibilitatea de a folosi
metodele mostenite sub mai multe forme pentru a obtine rezultate diferite. Acest lucru
se face prin overloading (supraincarcare) si overriding (suprascriere).
în .NET, metodele moștenite din clasa de bază și declarate ca virtuale pot fi suprascrise.
Aceasta înseamnă ca, codul sursă original din clasa de bază este ignorat și codul nou îi ia
locul.
20. Ce inseamna overriden/overloading?
Overloading
O clasă poate supraîncă rca metodele moștenite. Constructorii pot fi supraîncă rcați.
1. public class Methodoveloading
2. { public int add(int a, int b) //two int type Parameters method
3. { return a + b; }
4. public int add(int a, int b,int c) //three int type Parameters with same method same as a
bove
5. { return a + b+c; }
6. public float add(float a, float b,float c,float d) //four float type Parameters with same
method same as above two method
7. { return a + b+c+d; } }
Overriding
Suprascrierea se referă la rescrierea metodelor din clasa pă rinte de că tre clasa copil.
Metodele din clasa parinte nu sunt modificate. Putem suprascrie doar metodele vizibile
(public, protected). O metodă din clasa copil suprascrie metoda din clasa pă rinte dacă
are același tip de return și aceeași semnatură (nume și parametri).
1. public class Account
2. { public virtual int balance()
3. { return 10; }
4. }
5. public class Amount:Account
6. { public override int balance()
7. { return 500; }
8. }
4) Abstractizarea
= ascunderea anumitor elemente care compun clasele (care de obicei reprezinta aspecte
de detaliu) si punerea in evidenta a acelor informatii esentiale pentru un utilizator.
Abstractizarea poate fi facuta fie prin clase abstracte, fie prin interfete.
5) Incapsularea
= ascunde informatii sensibile(variabile, metode sau clase care pot avea
atributul private) de catre utilizatori.
Beneficiile POO
1. Modularitatea: codul sursa pentru o clasa poate fi scris si mentinut independent de
codul sursa pentru alte clase.
2. Securitate ridicata la nivel de cod: Interactionand doar cu metodele obiectului,
detaliile implementarii interne raman ascunse de lumea exterioara.
3. Reutilizarea codului: daca o clasa exista deja, putem utiliza obiecte din acea clasa.
4. Debugging mai usor: Daca un anumit obiect se dovedeste a fi o problema, il puteti
elimina din program si puteti adauga/conecta, ca inlocuitor, un obiect diferit. Acest lucru
este similar cu rezolvarea problemelor mecanice in lumea reala. Daca un surub se rupe,
il inlocuiti pe el, nu intreaga masina.
Diferența între clasă și interfață, este ca o clasă poate fi instantanată , dar o interfață
nu poate fi niciodată instanțiată (nu contine niciodata constructori). O interfata
defineste doar ce trebuie sa faca o clasa, poate fi implementata de mai multe clase, iar
clasele care o implementeaza trebuie sa defineasca toate metodele din interiorul
interfetei.
De asemenea, o interfata poate mosteni o alta interfata folosinf cuv. Extinde, iar
metodele din interiorul unei interfete trebuie sa fie intotdeauna publice.
Clase statice
Nu pot fi create obiecte ale clasei statice
Membrii trebuie declarați static
Clasele statice sunt necesare cînd se crează o extension
method(LINQ)
Clasele statice se folosesc pentru a conține o colecție de
metode statice.
O clasă statica poate avea doar un constructor static.
Interfața este un tip care trebuie implementat de alte clase. Este declarata folosind cuv
cheie interface.
Directiva using creează un alias pentru un spațiu de nume sau importă tipuri definite în
alte spații de nume.
Dispose este o metodă invocată pentru cură țarea memoriei și eliberarea resurselor
negestionate.
Principala diferență = metoda apel cu valoare trece valoarea unei variabile. Dacă
există vreo modificare a valorii unei variabile în interiorul acelei funcții, aceasta nu
afectează valoarea inițială a acelei variabile.
Apelul prin referință trece adresa acelei variabile. În metoda apelului prin referință ,
trecem variabila în sine într-un argument, iar schimbarea valorii unei variabile afectează
și valoarea inițială a acelei variabile.
try
{
//in this block exception may get thrown
Throw new Exception();
}
Catch(Exception)
{
//handle exception
}
finally
{
//cleanup code, optionally
}
21) Static
Clase statice
Nu pot fi create obiecte ale clasei statice
Membrii trebuie declarați static
Clasele statice sunt necesare cînd se crează o extension method(LINQ)
Clasele statice se folosesc pentru a conține o colecție de metode statice.
O clasă statica poate avea doar un constructor static.
Clasa Timer din C # reprezintă un control Timer care execută în mod repetat un bloc de
cod la un interval de timp specificat
Enumerable este un obiect ca o matrice, o listă sau orice alt fel de colecție care
implementează interfața IEnumerable. Enumerabilele standardizează bucla peste
colecții și permit utilizarea sintaxei de interogare LINQ, precum și alte metode de
extensie utile, cum ar fi List.
String este immutable, Immutable înseamnă că dacă se creeaza un obiect șir, atunci nu
se poate modifica și creează întotdeauna un obiect nou de tip șir în memorie.
Example
string strMyValue = "Hello Visitor";
// create a new string instance instead of changing the old one
strMyValue += "How Are";
strMyValue += "You ??";
Da, dar nu sunt siguri si nu sunt folositi, iar daca se folosesc se pune cuv cheie unsafe in
fata.
DOM ( Document Object Model ) este un API care expune elementele documentelor
HTML și XML ca obiecte ale limbajului de programare.
Funcțiile recursive sunt funcții care fac apel la ele însele din interiorul corpului lor,
pentru a rezolva o problemă . (Fibonaci, Factorial)
Putem avea mai multe functii cu acelasi nume, care fac acelasi lucru sau
lucruri diferite, dar pentru tipuri de date diferite si chiar si tipuri de
date create de noi. O clasă poate supraîncă rca metodele moștenite.
Constructorii pot fi supraîncă rcați.
41) Ce reprezinta supradefinirea ?
45) Care sunt tipurile de constructori in cadrul unei clase si ce rol are
fiecare?
Exista 3 tipuri de constructor:default,cu parametrii si de copiere.
Constructorul default construieste un obiect initializand atributele cu
valori constante, ce nu sunt primite ca parametrii.
Protected este folosit pentru a oferi acces direct unei clase derivate la
membri clasei de baza, pastrand atributele clasei de baza privvate
pentru restul programului.
Class are ca speficaficator default de acces private iar struct are public
Un obiect este o instanta a unei clase si contine toate campurile din clasa
din care a fost instantiat.