Sunteți pe pagina 1din 7

Ciclul de via a unui produs soft:

1. Apariia ideii (beneficiarul, proprietarul ideii)


2. Colectarea cerinelor (cerine funcionale i ne func ionale) (beneficiarul, business analistul, posibil QA)
a. Funcionale ce poate utilizatorul s fac
b. Nefuncionale diferite aspecte care nu sunt legate de func ional, fiabilitate, securitate...
3. Analiza cerinelor
4. Proiectarea (Developer senior, arhitector) se folosesc ni te wireframe-uri
5. Implementarea (Developer i arhitector)
6. Testarea (QA i developer)
7. Distribuirea proiectului
8. Maintenana
Limbaje declarative conin declaraii la ceea ce se ntampla (este adevr).
Libaje procedurale la baz st procedura, prelucrarea informa iei se petrece n procedur.
Definiii
Programarea orientat pe obiecte este o metod de implementare n care programele sunt organizate ca un ansamblu
de obiecte ce coopereaz ntre ele, fiecare obiect reprezentnd instan a unei clase.
Clasa este un tip de date care define te structura i comportamentul obiectelor. Obiectul spre deosebire de clas are
identitate.
Pentru a defini o clas de regul identificm obiectele i ncercm s le grupm. Obiectele care au multe caracteristici
n comun pot forma o clas.
Exemple de obiecte:
1. Lucruri tangibile
2. Roluri
3. Uniti organizaionale
4. Dispozitive (calculator, printer...)
5. Incidente evenimente sau interciuni
6. Locaii (cabinet, ar...)
Mostenirea proprietatea claselor de a obtine functionalul altei clase.
Polimorfism
Una din problemele ce necesita atentie este gasirea nivelului correct de abstractizare. La etapa initiala de dezvoltare a
softului. Una din greselile tipice este acordarea atentiei sporite asupra detaliilor de implementare tehnologice si nu
asupra structurii organizationale care ar pune accentul pe separarea responsabilitatilor.

Clase si obiecte
Diferenta e ca obiectul are identitate iar clasa e un tip de date.
Declararea clasei trebuie sa asigure clientul doar cu informatia necesara pentru utilizarea eficienta a ei
Metodele trebuie sa aiba acces doar la informatia necasara pentru indeplinirea responsabilitatilor lor.
Daniel Keller, A guide to natural naming

- Se aleg nume ce pot fi pronuntate in voce


- Cuvintele se incep cu majuscule in nume complexe
- Atentie la utilizarea prescurtarilor
- Atentie la nume multisemantice
- Nu se recomanda utilizarea numerelor
- Functia daca intoarce valoare boolean, sa fie clar ce inseamna true si ce false isPrinterReady
Incapsularea
. Ofera independenta implementarii de interfata
. Previne coruperea datelor interne
. Permite mai multor echipe un lucru independent asupra modulelor
. Documentarea buna permite o buna mantenanta, dar si o depanare facila.
Ierarhizarea
Odonarea/gruparea abstractiilor obtinute.
. Ierarhii de clasa, mostenirea
Mostenirea implica o ierarhie de tip generalizare sau specializare. Intre clase exista relatia is a este o. scaun este
mobila.
. Ierarhii de obiecte, agregarea
Relatia intre doua obiecte in care unul dintre obiecte apartine celuilalt obiect.
has a are un/o

Membrii statici
Membrii statici exista in exemplare unice pentru fiecare clasa fiind accesati in comun de toate instantele a clasei
respective.
Membrii statici pot fi referiti fara a instantia clasa ei nedepenzind de obiect.
Intr-o metoda statica nu este permisa referirea a unui membru non-static.
Pentru a defini un membru ca fiind static folosim static
Notie privind destructori n C++
n C++ parametrii transmii ca valoare n funcie i metode creaz copii ale acestor parametri (obiecte) i
aceste copii vor fi supuse tuturor operaiunilor standarde inclusiv de structuri.
n cazul crerii obiectelor complexe (care au atribute de tip clas) ordinea apelrii constructorilor va fi
urmtoarea :
1. Se apeleaz constructorul atributului
2. Se apeleaz constructorul clasei principale
Pentru aceleai tipuri de obiecte ordinea apelrii destructorilor va fi invers :
1. Se apeleaz destructorul clasei principale
2. Se apeleaz destructorul atributului
Organizarea claselor
Gruparea claselor dup funcionalitate

Uurin n utilizare
Evitarea conflictelor de nume
Controlul accesului

Java - package iar C# namespace


Modele de relaii
Premis: clasa are un caracter dual

Ierarhie conceptual
Ierarhie de implementare

Premis: obiectul corespunde unui tip

Is-a (Motenire)
Has-a (Agregare / Composition)
Uses-a (Dependen)

Dependena ntre clase apare atunci cnd o clas


folosete obiecte ale altei clase n metodele sale
(declar obiecte n corpul metodei sau primete
obiecte ca parametri).
Compoziia includerea prin valoare.
Agregarea includerea prin referin.
Modele de relaii

Accesibilitatea membrilor n C++

Acc
esul
n

c
M c
l
o l
a
a
s
t s
a
e a
n
d
i d
e
r e
r
e
i
b
v
a
a
z
t

p p p
u u u
b b b
l l l
i i i
c c c

p p
r r
o o
t t
e e
c c
ted ted

private private

public protected

protected protected protected

private private

public private

private protected private

private private

Accesibilitatea n Java

Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
Ordinea constructorilor i destructorilor

La construirea obiectelor unei clase derivate de la o clas de baz


(base) ordinea apelrii constructorilor va fi urmtoarea :
1. Se apeleaz constructorul clasei de baz.
2. Se apeleaz constructorul clasei derivate
Iar destructorii se apeleaz n oridnea invers:
1. Destructorul clasei derivate se apeleaz
2. Destructirul clasei de baz se apeleaz

Funcia virtual
Funcia virtual este funcia ce implic:
1. Redefinirea comportamentului n clasa derivat de o funcie cu aceiai signatur
2. Rezoluia dinamic a comportamentului n dependen de obiect i nu de tipul referin ei spre acest obiect
3. Generarea unui table al funciilor ce pstreaz pointeri spre func iile fiecrui obiect derivate
Funciile virtuale sunt acele funcii care sunt apelate n mod dynamic n timpul execu iei aplica iei.
Parametrii statici ai metodelor i funciilor nu permit folosirea virtualit ii claselor
derivate deoarece acetia fac o copie a obiectului transmis pe care o tipizeaz
(cast) conform tipului declarat n metod.
void directAssign(One o);
void pointerAssign(One * o);
void byReference(One & o);

Parametrii transmii ca pointer sau referin folosesc obiectul primit i nu i


schimb tipul dup cel declarat n metod, respectiv pentru acest obiect pot fi folosite func iile virtuale.
Two t; //class Two : public One
directAssign(t);
pointerAssign(&t);
byReference(t);
Metod ce nu are corp se numete abstract sau pur virtual ( virtual void f() = 0; ) ;
#strategy pattern

Motenirea multipl
Motenirea multipl e tipul de motenire n
care o clas derivat are mai multe clase de
baz.
Interfee:

Alternativ pentru motenirea


multipl
Contracte (api-uri)
Tema : Polimorfism
Polimorfismul este o proprietate a orientarii pe obiece prin
care o metoda paote avea comportament diferit.

Polimorfism Cod sursa Parametri Relatii argumente parametri

Overloading Difereit Diferiti(ca tip sau numar) -

Coercion Acelasi Acelasi Relatie de covertibilitate dintre


tipul parametrului si argumentului

Inclusion(se folosesc Diferit Aceeasi Relatie de incluziune dintri tipul


functii virtuale) parametrului implicit si
argumentrului metodei( adica tipul
obiectului este un subtip al tipului
referintei)

Paramtric Acelasi Diferiti(ca tip) -

Tema : Princii pe Priectare(SOLID)


Solid este un acronim care reprezint un set din cinci principii de care, n cazul n care sunt respectate permit
s dezvoltm o arhitectur flexibil i uor de meninut pentru o period mai lung de timp.
Acest principii sunt urmatoarele :
SRP (The Single Responsability Principle ) - o clas trebuie s aib doar un motiv(domeniu) pentru care trebuie s
se modifice.
OCP(Open Closed Principle) o clas trebuie s fie extensibil fr a o modifica.
LSP(The Liskov Substitution Principle) obiectele claselor derivate trebuie s poat substitui obiectele clasei de
baz.
ISP(Interface Segregation Principle) n procesul de dezvoltare este recomandabil s crea i intefe e cu o
granularitate ridicat care sunt specifice pentru clien i.
DIP(The Dependency Inversion Principle) clasele trebuie s depind de abstracii nu de implementri concrete.
SRP
Dac o clas are mai mult dect o responsabilite atunci acestea devin cuplate, modificrile n una din responsabilit i
pot s afecteze capacitatea clasei de a pstra corectitudinea celorlalte responsabilit i.
Acest tip de cuplare duce la o arhitectur fragil care poate genera erori nea teptate.

Clasa Rectangle are metoda draw() pentru a desena un dreptunghi i metoda area pentru calculul areei.
n acest caz aceas clas are dou responsabilit i pentru c implementeaz metode pentru dou domenii diferite.
Acest exemplu violeaz principiul SRP. Clasa Rectangle va trebui inclus n ambele aplica ii i codul inutil celeilalte
aplicaii o s duc la consum de timp de compilare, memorie i va afecta performa a acesteia.
Un alt rezultat la aceste cuplari de responsabiliti este necesitatea de recompilare, retestare i re-deploy a aplica iei.
O arhitectur mai bun este separarea acestor dou responsabili i n dou clase diferite.

OCP
Entitaile software(module, clase) trebuie s fie deschise pentru extindere, inchise pentru modificare.
Trebuie s proiectm modulele astfel nct ele s nu se modifice. Cnd apar schimbri de cerin e extinderea
comportamentului ar trebui realizat prin adaugarea a codului nou, i nu editarea codului existent care deja lucreaz.

S-ar putea să vă placă și

  • Cuprins:: Definirea Auditului
    Cuprins:: Definirea Auditului
    Document7 pagini
    Cuprins:: Definirea Auditului
    Diana Irimescu
    Încă nu există evaluări
  • AMSI Lab3E
    AMSI Lab3E
    Document7 pagini
    AMSI Lab3E
    Catherine Nemerenco
    Încă nu există evaluări
  • Lab1 en
    Lab1 en
    Document18 pagini
    Lab1 en
    Catherine Nemerenco
    Încă nu există evaluări
  • Lab7 en
    Lab7 en
    Document6 pagini
    Lab7 en
    Catherine Nemerenco
    Încă nu există evaluări
  • Lab1appoo en
    Lab1appoo en
    Document7 pagini
    Lab1appoo en
    Catherine Nemerenco
    Încă nu există evaluări
  • BDC Lab6en
    BDC Lab6en
    Document6 pagini
    BDC Lab6en
    Catherine Nemerenco
    Încă nu există evaluări
  • Marketing Direct
    Marketing Direct
    Document8 pagini
    Marketing Direct
    Catherine Nemerenco
    Încă nu există evaluări
  • Psa Test Are
    Psa Test Are
    Document13 pagini
    Psa Test Are
    Catherine Nemerenco
    Încă nu există evaluări
  • 28-34 PS
    28-34 PS
    Document19 pagini
    28-34 PS
    Catherine Nemerenco
    Încă nu există evaluări
  • Lab0 en
    Lab0 en
    Document9 pagini
    Lab0 en
    Catherine Nemerenco
    Încă nu există evaluări
  • BDC Lab10en
    BDC Lab10en
    Document5 pagini
    BDC Lab10en
    Catherine Nemerenco
    Încă nu există evaluări
  • BDC Lab7en
    BDC Lab7en
    Document6 pagini
    BDC Lab7en
    Catherine Nemerenco
    Încă nu există evaluări
  • BDC Lab9en
    BDC Lab9en
    Document4 pagini
    BDC Lab9en
    Catherine Nemerenco
    Încă nu există evaluări
  • BDC Lab10en
    BDC Lab10en
    Document5 pagini
    BDC Lab10en
    Catherine Nemerenco
    Încă nu există evaluări
  • AMSI Lab3
    AMSI Lab3
    Document9 pagini
    AMSI Lab3
    Catherine Nemerenco
    Încă nu există evaluări
  • Lab4 en Somipp
    Lab4 en Somipp
    Document36 pagini
    Lab4 en Somipp
    Catherine Nemerenco
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document4 pagini
    Lab 1
    Catherine Nemerenco
    Încă nu există evaluări
  • BDC Lab8en
    BDC Lab8en
    Document6 pagini
    BDC Lab8en
    Catherine Nemerenco
    Încă nu există evaluări
  • Lab1 Apa
    Lab1 Apa
    Document6 pagini
    Lab1 Apa
    Catherine Nemerenco
    Încă nu există evaluări
  • ProgC Lab3
    ProgC Lab3
    Document11 pagini
    ProgC Lab3
    Catherine Nemerenco
    Încă nu există evaluări
  • MNLab 2
    MNLab 2
    Document10 pagini
    MNLab 2
    Catherine Nemerenco
    100% (1)
  • Lucrare de Curs LFPC
    Lucrare de Curs LFPC
    Document19 pagini
    Lucrare de Curs LFPC
    Catherine Nemerenco
    100% (1)
  • Electronica Lab1 UTM
    Electronica Lab1 UTM
    Document4 pagini
    Electronica Lab1 UTM
    Catherine Nemerenco
    Încă nu există evaluări
  • Raspunsurile La BSD
    Raspunsurile La BSD
    Document17 pagini
    Raspunsurile La BSD
    Catherine Nemerenco
    Încă nu există evaluări