Home >Documents >Intrebari - Raspunsuri c# @Work

Intrebari - Raspunsuri c# @Work

Date post:22-Oct-2015
Category:
View:566 times
Download:19 times
Share this document with a friend
Description:
c#
Transcript:

Intrebari C# cruce ASP.NET

Principiile POO:

Abastractizare: posibilitatea ca un program s ignore unele aspect ale informaiei pe care o manipuleaz, adic posibilitatea de a se concentra asupra esenialului.nseamn identificarea similitudinilor ntre diferite entiti, situaii sau procese din lumea real , concentrarea ateniei asupra acestor aspectecomune i ignorarea pentru nceput a detaliilor.identific trsturile caracteristice eseniale ale unui obiect, care l deosebesc de toate celelalte feluri de obiecte.fiecare obiect n sistem are rolul unui actor abstract, care poate executa aciuni, i poate modifica i comunica starea i poate comunica cualte obiecte din sistem fr a dezvlui cum au fost implementate acele facilitai.procesele, funciile sau metodele pot fi de asemenea abstracte

Incapsulareascunderea de informaii (data-hiding)obiectele nu pot schimba starea intern a altor obiecte n mod direct (ci doar prin metode puse la dispoziie de obiectul respectiv);doar metodele proprii ale obiectului pot accesa starea acestuia.procesul de compartimentare a elementelor unei abstractizri n dou pri: structura i comportarea;ncapsularea separ comportarea (accesat prin interfa) de structur, definit prin implementare.fiecare tip de obiect expune o interfa pentru celelalte obiecte care specific modul cum acele obiecte pot interaciona cu el.

Modularitate-este procesul de partiionare a unui program n componente individuale (module) ceea ce permite reducerea complexitii programului prin definireaunor granie bine stabilite i documentate n program. modularizarea const n partiionarea programului n module care pot fi compilate separat, dar care au conexiuni cu alte module ale programului. modulele servesc ca i containere n care sunt declarate clasele i obiectele programului.

Ierarhizaremodalitatea de a ordona abstractizrile (tipurile abstracte de date).Ierarhiile pot s denote relaii de tip sau relaii de agregare. Relaiile de tip sunt definite prin motenirilentre clase, prin care o clas (clasa derivat) motenete structura saucomportarea definit n alt clas (clasa de baz ). Relaiile de agregare specific compunerea unui obiect din mai multe obiecte mai simple.Obs: n limbajele de programare procedural agregarea se realiza prin structuri de tip nregistrare

Motenireapermite definirea i crearea unor clase specializate plecnd de la clase (generale) care sunt deja definitepermite construirea unor clase noi, care pstreaz caracteristicile i comportarea, deci datele i funciile membru,de la una sau mai multe clase definite anterior, numite clase de baz, fiind posibil redefinirea sauadugarea unor date i funcii noi.o clas ce motenete una sau mai multe clase de baz se numete clasa derivat.posibilitatea refolosirii lucrurilor care funcioneazorganizeaz i faciliteaz polimorfismul i ncapsularea Anumite obiecte sunt similare dar n acelai timp diferite.Proprietatea de motenire: proprietatea claselor prin care o clas nou construit poate prelua datele i metodele claseimai vechi.Clasa derivat se afl ntotdeauna pe un nivel imediat inferior celui corespunztor clasei de baz.

Polimorfismul, suprancrcareaMai multe funcii pot avea acelai nume n acelai domeniu de definiie, dac se pot diferenia prin numrul sau tipulargumentelor de apel.O funcie este polimorfic dac se poate executa cu acelai efect asupra unor valori de tipuri diferite(ex. operatorul & din C)Un alt mecanism este suprancrcarea funciilor( function overloading).O funcie este suprancrcat dac execut operaii diferite n contexte diferite (ex. operatorul + din Java)Se poate aplica doar funciilor.Supradefinirea (overriding) ofer posibilitatea de a redefini metode pentru clasele derivate, metodele au acelai tipi aceeai parametri.

Polimorfismul, suprancrcareaDac n acelai domeniu sunt definite mai multe funcii cu acelai nume, la fiecare apel se selecteaz funcia corectprin comparareatipurilor argumentelor reale de apel cu tipurile argumentelor formale ale funciei.double abs(double);int abs(int);abs(1); // apeleaza abs(int)abs(1.0); // apeleaza abs(double)Nu este admis ca funciile s difere doar prin tipul returnat.Dou funcii declarate cu acelai nume se refer la aceeai funcie dac sunt n acelai domeniu i au numr i tipuri identice de argumente.

Tipuri de mostenire in C#:

n C# exist doar motenire simpl, o ierarhie de clase n care fiecare clas derivat are o singur clas de baz.Exemplu.parallelogramdreptunghi rombpatratClasa dreptunghi este o clas derivat (subclas) a clasei paralelogram, iar clasa paralelogram este o clas de baz (supraclas) aclasei dreptunghi.Astfel, o ierarhie de concepte conduce la o ierarhie ntre clasele care implementeaz conceptele ierarhice respective.

Apelezi dintr-o clasa derivata functionalitatea unei clase de baza?n POO cnd o clas derivat motenete de la o clas de baz, un obiect al clasei derivate poate fi considerat ca fiind (sau convertit la) o instan a clasei de baz sau a unei clase derivate din aceasta. Dac exist funcii ale clasei de baz ce au fost redefinite n clasa derivat, apare o problem cnd un obiect derivat a fost convertit la (este referit ca fiind de) tipul clasei de baz. Cnd un obiect derivat este considerat ca fiind de tipul clasei de baz, comportarea dorit a apelului de funcie este nedefinit.Distincia dintre virtual (dinamic) i static este fcut pentru a rezolva aceast problem. Dac funcia n cauz este etichetat drept "virtual" atunci funcia clasei derivate va fi apelat (dac ea exist). Dac e static, atunci va fi apelat funcia clasei de baz

Method overload?

Overloading of methods permits a class, struct, or interface to declare multiple methods with the same name, provided their signatures are unique within that class, struct, or interface.Overloading of instance constructors permits a class or struct to declare multiple instance constructors, provided their signatures are unique within that class or struct.Overloading of indexers permits a class, struct, or interface to declare multiple indexers, provided their signatures are unique within that class, struct, or interface.Overloading of operators permits a class or struct to declare multiple operators with the same name, provided their signatures are unique within that class or struct.

Modificatori de access: public: accesibil din interiorul i din exteriorul clasei protected: accesibil numai din interiorul clasei i a claselor derivate internal: accesibil din interiorul din exteriorul clasei dar numai n cadrulassembly-ului (proiectului in VS) protected internal: accesibil numai din interiorul clasei i a claselor derivate ncadrul assembly-ului (proiectului in VS) private: accesibil numai din interiorul clasei

Interfata vs. Clasa abstractaCe este o interfata ?O interfata defineste un set de metode, proprietati, evenimente, indexatori. Acesti membri vor fi implementati de o clasa sau chiar de o structura.Pentru mai multe informatii despre interfete puteti consulta articolulInterfete in .Net.Ce este o clasa abstracta ?O clasa abstracta este o clasa care nu poate fi instantiata si este folosita pentru mostenire.O clasa care nu este abstracta si care deriveaza dintr-o clasa abstracta, trebuie sa includa implementarile tuturor membrilor abstracti.Vom crea o interfata si o clasa abstracta, apoi le vom implementa/mosteni.Observatii:Interfata contine doar signatura membrilor.Daca nu se specifica nici un modificator de acces pentru interfata, atunci cel implicit va fiinternal. Daca se afla in interiorul unei clase,o interfata poate avea modificatorii de accessprivate,protected,public,internal.O clasa poate implementa mai multe interfete.Clasa abstracta poate avea ca membri si campuri (field).O clasa poate mosteni o singura clasa abstracta.O clasa poate furniza atat membri abstracti cat si membri cu implementare concreta.Daca adaugam un nou membru la o clasa abstracta ii putem adauga o implementare implicita si nu vom avea probleme cucodul existent.Concluzii:O interfata nu contine cod pentru implementare, ea contine doar signaturile.O clasa abstracta poate contine codul complet sau partial, care poate fi rescris.O interfata nu poate contine ca membri: constante, constructori, destructori, campuri, membri statici sau alte interfete.Intr-o clasa abstracta se pot defini campuri, constante, metode, proprietati.Din punct de vedere al vitezei de executie, o interfata este mai lenta decat o clasa abstracta.

Clasa (heap) vs. Struct(stack) :

Thestackis a data structure in memory used for storing items in a last-in, first-out manner (LIFO). The stack contains bothlocal variablesand thecall stack. In C#, value types are stored on the stack.Local variablesLocal variables are variables that are declared inside a method. They can be of either value type or reference type. Value type variables are stored directly on the stack. A reference type variable is actually a numerical address pointing to a location on the heap where the object is stored.Call stackEvery C# application begins with aMainmethod. In turn, it calls other methods which call still other methods. When a method is called, it is added to the top of the stack. And, when a method returns to its caller, it is removed from the stack. Execution continues with the calling method.ScopeScopedefines the lifetime of a variable. The block of code in which a variable is declared is its scope. When the block in which a variable is declared begins execution, the variable's lifetime begins when it is pushed onto the stack as part of the call stack. When execution leaves the block in which the variable was declared, the call stack and variables are popped off the stack. The variable's lifetime has ended.The HeapTheheapormanagedheap is a data structure in memory where all objectsreference typesare stored. When an object is instantiated, the object is stored on the heap as a block of data containing its data members. Then, the memory address of the block is stored in a reference variabl

Embed Size (px)
Recommended