3
50% examen final 50% proiecte 7 proiecte (aplicatii mai complexe) UNUL LA 2 SAPTAMANI !!! Bibliografie : 1) Object Orientate Software Contruction : B.Meyer  : Robert Martine (uncle Bo b) Agile Principles, Patterns, and Practices in C# Agile Software Development 2) Design Pattern , Elements of Reusable Oriented Objects Software : Erich Gamma & inca 3 ====================== Bazele programarii pe obicte ============================ ========= Clasa : Sablon sau prototip dupa care se creaza clasele si Obiecte : entitate care are un nume unic o anumita STARE si un COMPORTAMENT in s tarea respectiva Starea obiectului este data de valorile particulare ale atributelor sale comportamentul este alcatuit din multimea metodelor obiectului Un obiect contine atribute (implementate ca variabile mebru) si operatii (implem entate ca metode). Mesaj : OBIECTELE comunica printre ele prin mesaje . Spunem ca obiectul a comuni ca cu b daca a apeleaza o metoda a obiectului b ( mesajele se traduc prin apelur i de metode ale obiectelor). Interfata publica a unui obiect : pentru a putea comunica obiectul trebuie sa of ere un set de metode publice (mesaje publice )care alcatuiesc interfata publica a obiectului . Din afara se poate comunica cu obiectul doar prin intermediul metodelor publice . Obiectul pe langa metode publice are si date si metode ascunse , private. Incapsularea : Obiectele ascund datele si implementarea (incapsuleaza) dar ofera  acces controlat la date prin interfata publica . Metodele publice si implementa rea sunt clar separate ... Getter si Setter : Metode speciale publice care acceseaza respectiv modifica atr ibutele obiectului (obtinerea respectiv schimbarea starillor obiectului). Constructori/Destructori : O clasa contine un constructor pentru initializarea d atelor sale si destructor pentru eliberearea resurselor ocupate de obiect. Mostenirea : Doua clase A si B se afla in relatia de mostenire daca B este un fe l de clasa A cu anumite particularitati : -B mosteneste proprietatiile clasei A si eventual prezinta elemente specifice (intre clasa instrument si vioara se poate stabili relatia de mostenire ). Redefinirea metodelor intr-o relatie de mostenire (Derivare) : Daca A si B sunt in relatie de mostenire B mosteneste pe A si A contine o metoda a spunem ca B redefineste metoda a daca se declara explicit in B metoda a cu aceea si semnatura dar cu alta implementare Exemplu :

Curs 1 APOO

Embed Size (px)

Citation preview

Page 1: Curs 1 APOO

8/16/2019 Curs 1 APOO

http://slidepdf.com/reader/full/curs-1-apoo 1/3

50% examen final50% proiecte 7 proiecte (aplicatii mai complexe) UNUL LA 2 SAPTAMANI !!!Bibliografie :1)Object Orientate Software Contruction : B.Meyer : Robert Martine (uncle Bob)Agile Principles, Patterns, and Practices in C#Agile Software Development

2)Design Pattern , Elements of Reusable Oriented Objects Software : Erich Gamma &inca 3

====================== Bazele programarii pe obicte =====================================

Clasa : Sablon sau prototip dupa care se creaza claselesi

Obiecte : entitate care are un nume unic o anumita STARE si un COMPORTAMENT in starea respectivaStarea obiectului este data de valorile particulare ale atributelor salecomportamentul este alcatuit din multimea metodelor obiectuluiUn obiect contine atribute (implementate ca variabile mebru) si operatii (implementate ca metode).

Mesaj : OBIECTELE comunica printre ele prin mesaje . Spunem ca obiectul a comunica cu b daca a apeleaza o metoda a obiectului b ( mesajele se traduc prin apeluri de metode ale obiectelor).

Interfata publica a unui obiect : pentru a putea comunica obiectul trebuie sa ofere un set de metode publice(mesaje publice )care alcatuiesc interfata publica a obiectului .Din afara se poate comunica cu obiectul doar prin intermediul metodelor publice.Obiectul pe langa metode publice are si date si metode ascunse , private.

Incapsularea : Obiectele ascund datele si implementarea (incapsuleaza) dar ofera acces controlat la date prin interfata publica . Metodele publice si implementarea sunt clar separate ...

Getter si Setter : Metode speciale publice care acceseaza respectiv modifica atributele obiectului(obtinerea respectiv schimbarea starillor obiectului).

Constructori/Destructori : O clasa contine un constructor pentru initializarea datelor salesi destructor pentru eliberearea resurselor ocupate de obiect.

Mostenirea : Doua clase A si B se afla in relatia de mostenire daca B este un fel de clasa A cu anumite particularitati :-B mosteneste proprietatiile clasei A si eventual prezinta elemente specifice(intre clasa instrument si vioara se poate stabili relatia de mostenire ).

Redefinirea metodelor intr-o relatie de mostenire (Derivare) : Daca A si B suntin relatie de mostenire B mosteneste pe A si A contine o metoda aspunem ca B redefineste metoda a daca se declara explicit in B metoda a cu aceeasi semnatura dar cu alta implementareExemplu :

Page 2: Curs 1 APOO

8/16/2019 Curs 1 APOO

http://slidepdf.com/reader/full/curs-1-apoo 2/3

class A{void a(){}}

class B:A{void a(){} //redefinirea metodei a din baza}

Polimorfism,metode virtuale, legare dinamica (intarziata<late binding>):Polimorfism : se intalneste intr-o relatie de mostenire intr-o ierarhie de clase , daca 2 sau mai multe clase derivate B si C sunt derivate dintr-o clasa de baza A ,redefinesc o metoda a din clasa de baza si aceasta metoda este apelata folosind o referinta catre clasa de baza spunem ca apelul este polimorfic deoarece se executa diferite variante ale metodei functie de obiectul real care precede apelul .Exemplu:

calss A {void a(){}

}class B:A{public void a(){}}

class C:A{public void a(){}}

class Client{A Obj{get;set;}void metoda(){ Obj.a(); // apel polimorfic}}

Client c=new Cient();c.Obj=new B();c.metoda(); //aici se va selecta varianta a() din clasa B

Functii(Metode) virtuale : Intr-o relatie de mostenire daca se redefineste o metoda care se apeleaza prin intermediul unei referinte catre clasa de baza pentrua fi selectata varianta corecta a metodei (cea din obiectul real care face apelul) trebuie pus in functiune mecanismul functiei virtuale : metoda din baza se declara virtuala (c++ si c# sunt explicite).

Legare intarziata(late-binding) : se numeste legare fenomenul prin care se asociaza la un apel de metoda o bucata de cod care se executaLegarea apare la obiecte din clase derivate din obiecte create dinamic cu new dar care sunt manevrate prin intermediul uneie referinte catre clasa de baza (vezi apelul Obj.a(); ) .

Clase abstracte : pentru a obtine aplicatii cu caracter general care pot fi reutilizate ca SOLUTII pentru alte aplicatii trebuie sa scriem programe cu caractergeneral. Pentru aceasta trebuie sa tratam obiectele particulare inrudite uniform prin intermediu claselor generale astfel incat aplicatiile sa depinda doar de clase generale , apare astfel situatia necesitatii utilzarii claselor abstracte : clase mult prea generale pentru a putea fi implementate complet;Se cunoaste doar semnatura metodelor si eventul o parte din date dar nu si implementarea acestora , doar metodele generale pot fi eventual implementate celelate sunt declarate metode abstracte (fara implementare doar numele cu acolade fara

Page 3: Curs 1 APOO

8/16/2019 Curs 1 APOO

http://slidepdf.com/reader/full/curs-1-apoo 3/3

corp ),este o clasa care contine cel putin o metoda abstracta .Sunt foarte importante in stabilirea relatilor dintre clase : in arborele mostenirii apar cel mai adesea ca si clase de baza.Le numim elemente de nivel inalt (High Level) .Exemplu :

class triangle:Shape{public void draw(){}}

class line:Shape{public void draw(){}}

class abstract Shape{public void draw(){}}

Clasele abstracte joaca rol de contract intre o clasa client si o familie de clase inrudite care ofera anumite servicii .Clasa client acceseaza sau foloseste celelalte clase prin intermediul contractului stabilit de clasa abstracta .Clasa abstracta stabileste contractul indicand diverse metode publice cu diverse semnaturi .

Principiul Abstractizarii : Pentru a obtine aplicatii mentenabile usor de mentinut la modificari in timp ale cerintelor si ale imlementarii se recomandaabstractizarea elementelor concrete de lumea reala (prin clase abstracte ) deoarece ce este abstract ramane nemodificat in timp.

Interfata este o structura care contine doar declarari de metode ( poate fi privita ca o clasa abstracta ce nu contine implemetari ).Pune in evidenta metodele publice ale unui obiect si poate fi folosita la fel ca un contract intre o clasa client si alte clase care ofera servicii (server).