Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-is:laboratoare:08 [2020/10/03 11:25]
alexandru.ionita99 [Laboratorul 08: Mostenire multipla. Clase si functii abstracte. Interfete]
poo-is:laboratoare:08 [2020/10/03 11:27] (current)
alexandru.ionita99
Line 7: Line 7:
   * Separate Interface and Implementation (pag. 264-265)   * Separate Interface and Implementation (pag. 264-265)
  
-=====Mostenire Multipla ​======+===== 1. Mostenire Multipla =====
 Spre deosebire de multe alte limbaje de programare orientate-obiect,​ C++ permite **mostenirea multipla** (o clasa poate fi derivata din mai multe clase de baza). Spre deosebire de multe alte limbaje de programare orientate-obiect,​ C++ permite **mostenirea multipla** (o clasa poate fi derivata din mai multe clase de baza).
 <​note>​In acest caz, la declararea clasei derivate nu se specifica o singura clasa de baza, ci o succesiune de clase de baza, separate prin virgula, avand in fata specificatorii de acces.</​note>​ <​note>​In acest caz, la declararea clasei derivate nu se specifica o singura clasa de baza, ci o succesiune de clase de baza, separate prin virgula, avand in fata specificatorii de acces.</​note>​
Line 13: Line 13:
 <​note>​In cadrul mostenirii multiple, **constructorii** claselor de baza vor fi apelati in ordinea enumerarii, iar **destructorii** vor fi apelati in ordine inversa.</​note>​ <​note>​In cadrul mostenirii multiple, **constructorii** claselor de baza vor fi apelati in ordinea enumerarii, iar **destructorii** vor fi apelati in ordine inversa.</​note>​
  
-==== Problema Diamantului ====+==== 1.1. Problema Diamantului ====
 Desi mostenirea multipla pare a fi un procedeu util, aceasta poate duce la multe ambiguitati,​ cea mai mare dintre acestea fiind **Problema Diamantului** (numita si **“death diamond”**). Sa consideram urmatoarea ierarhie de clase: Desi mostenirea multipla pare a fi un procedeu util, aceasta poate duce la multe ambiguitati,​ cea mai mare dintre acestea fiind **Problema Diamantului** (numita si **“death diamond”**). Sa consideram urmatoarea ierarhie de clase:
  
Line 32: Line 32:
 <​note>​Pentru a se crea un obiect de tip **Snake**, se vor apela constructorii claselor **Animal** and **Reptile**,​ dar se va apela o singura data constructorul clasei **LivingThing**,​ astfel **Snake** va avea o singura instanta a clasei **LivingThing**.</​note>​ <​note>​Pentru a se crea un obiect de tip **Snake**, se vor apela constructorii claselor **Animal** and **Reptile**,​ dar se va apela o singura data constructorul clasei **LivingThing**,​ astfel **Snake** va avea o singura instanta a clasei **LivingThing**.</​note>​
  
-=====Clase si Functii Abstracte ​======+===== 2. Clase si Functii Abstracte =====
  
 O metoda virtuala se numeste **abstracta (pura)** daca nu are implementare:​ O metoda virtuala se numeste **abstracta (pura)** daca nu are implementare:​
Line 73: Line 73:
 </​note>​ </​note>​
  
-=====Interfete ​======+===== 3. Interfete =====
  
 <​note>​O clasa fara atribute si cu toate metodele abstracte se numeste **interfata**.</​note>​ <​note>​O clasa fara atribute si cu toate metodele abstracte se numeste **interfata**.</​note>​
poo-is/laboratoare/08.1601713549.txt.gz · Last modified: 2020/10/03 11:25 by alexandru.ionita99
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0