Documente Academic
Documente Profesional
Documente Cultură
Principii POO
Principii POO
Principii
1
Cuprins
Principii POO
• concepte
• Legi
Modelare
studiu de caz
titular
atribute (date membre)
sold
depune()
operatii (metode)
extrage()
D. Lucanu POO – Principii 8
Obiecte si clase
• obiect = instanta a clasei
XXX00459912 : Cont
in C++:
• o clasa este reprezentata de un tip de data class
sau struct
• atribute = date membre cu functii de acces
• metode = functii membre publice
• un obiect este reprezentat de o variabila a tipului
respectiv
depune()
in C++:
• mesajele sunt reprezentate de apeluri de metode
Cont
titular
sold
depune()
extrage()
relatia de
mostenire
ContDebit ContCredit
Dreptunghi
Patrat
Pasare
Pasare
zboara()
PasareZburatoare PasareNezburatoare
Pinguin
zboara()
Pinguini care
zboara? Pinguin
Cont
titular
sold
depune()
extrage()
ContDebit ContCredit
soldCredit
depune() depune()
extrage() extrage()
Sunt un student:
Student
• Imi cunosc ID-ul
id
• Imi cunosc numele nume
• Stiu disciplinele pe care le urmez discUrmate
• Pot sa-mi spun ID-ul getId()
• Pot sa-mi spun numele getNume()
• Pot sa ma inscriu la o noua addDiscUrmata()
disciplina
Sunt un profesor:
Profesor
• Imi cunosc ID-ul id
• Imi cunosc numele nume
• Stiu disciplinele pe care le discPredate
predau getId()
• Pot sa-mi spun ID-ul getNume()
addDiscPredata()
• Pot sa-mi spun numele examineaza()
• Pot sa predau o noua disciplina
Sunt o persoana:
• Imi cunosc ID-ul
• Imi cunosc numele
• Pot sa-mi spun ID-ul
• Pot sa-mi spun numele
Persoana
id
nume
getId()
getNume()
Profesor
Student
discPredate
discUrmate
addDiscPredata()
addDiscUrmata()
examineaza()
class Persoana
{
public:
Persoana(string = "", string = "");
~Persoana();
string getNume() const;
string getId() const;
protected:
string id, nume;
};
class Disciplina {
public:
Profesor* titular;
// ...
};
class Profesor {
public:
std::vector< Disciplina* > discPredate;
// ...
};
class Examen {
public:
std::vector< Student* > stidInscrisi;
// ...
};
relatia de
compozitie
examineaza()
: sco::Examen
mesaje