Documente Academic
Documente Profesional
Documente Cultură
Proiectarea de clase
Cuprins
principiul inchis-deschis
principiul substituirii
principiul de inversare a dependentelor
sabloane de proiectare (software design patterns)
• clase cu o singura instanta (Singleton)
• fabrica de obiecte (Abstract Object Factory)
Figura ContainerFig
citeste() 1 * incarca()
Segment Cerc
citeste() citeste()
care parafrazeaza
Dreptunghi Autovehicul
dubleazaLatime() merge()
Patrat AutovehiculCuGabaritDepasit
dubleazaLatime() merge()
Contractele in mostenire
• precizeaza pre- si post-conditiile pentu fiecare metoda
• “cand se redefineste o metoda intr-o clasa derivata,
preconditia se inlocuieste prin o conditie mai slaba iar
postconditia prin una mai tare.” (Bertrand Mayer,
1988)
D. Lucanu POO – Proiectarea de clase 11
Proiectare prin contract
...A::f(...)
{
//requires p1 (prec.) A
//ensures q1 (post.)
... f()
}
...B::f(...)
{
B
//requires p2 (prec.)
//ensures q2 (post.)
... f()
}
void Patrat::dubleazaLatime(){
//requires: lungime = latime
//ensures: latime = 2 * old(latime) /\
// lungime = latime
latime *= 2;
lungime *= 2;
}
Dreptunghi
//requires: true
dubleazaLatime() //ensures: latime = 2 * old(latime)
Patrat
aprinde()
stinge()
Lampa 1 1 Buton
ClientButon 1 1 Buton
Lampa ButonImplementare