Differences

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

Link to this comparison view

poo-is:laboratoare:05 [2020/09/21 10:19]
sergiu.craioveanu [Laboratorul 05: Polimorfism. Agregare]
poo-is:laboratoare:05 [2020/09/29 22:26] (current)
alexandru.ionita99
Line 7: Line 7:
   * Capitolul 15 (Chapter 15: Polymorphism and virtual functions, pag. 661-693)   * Capitolul 15 (Chapter 15: Polymorphism and virtual functions, pag. 661-693)
  
-===== Polimorfism =====+===== 1. Polimorfism =====
 <note important>​**Polimorfism** = abilitatea unei functii cu un anumit nume sa aiba comportamente diferite, in functie de parametrii de intrare.</​note>​ <note important>​**Polimorfism** = abilitatea unei functii cu un anumit nume sa aiba comportamente diferite, in functie de parametrii de intrare.</​note>​
 <note important>​In C++, avem mai multe tipuri de polimorfism:​ <note important>​In C++, avem mai multe tipuri de polimorfism:​
Line 15: Line 15:
 <​note>​**Compile Time Polymorphism** <​note>​**Compile Time Polymorphism**
  
-Acest tip de polimorfism este obtinut ​cand supraincarcarea ​o functie ​(Function Overloading) sau un operator (Operator Overloading).+Acest tip de polimorfism este obtinut ​prin supraincarcarea ​unei functii ​(Function Overloading) sau al unui operator (Operator Overloading).
  
-**Overloading (supraincarcarea)** = posibilitatea ​dea avea intr-o clasa mai multe metode cu acelasi nume, acestea ​fiind diferentiate prin semnatura+**Overloading (supraincarcarea)** = posibilitatea ​de a avea intr-o clasa mai multe metode cu acelasi nume, fiind diferentiate prin **semnatura**.
  
 Extra: Supraincarcarea are loc la compilare => Compile Time Extra: Supraincarcarea are loc la compilare => Compile Time
Line 29: Line 29:
 Observatie: ​ Observatie: ​
   * Se pot suprascrie doar metodele vizibile pe lantul de mostenire (public, protected)   * Se pot suprascrie doar metodele vizibile pe lantul de mostenire (public, protected)
-  * O metoda din clasa copil poate suprascrie o metoda din clasa parinte daca au aceeasi semnatura si acelasi tip de return+  * O metoda din clasa copil poate suprascrie o metoda din clasa parinte daca au aceeasi semnatura si acelasi tip de return.
  
 Extra: Suprascrierea are loc la executare => Run time Extra: Suprascrierea are loc la executare => Run time
  
-(Exemplu in cadrul Laboratorului ​cand invatam despre ​Derivare)+(Exemplu in cadrul Laboratorului ​cand invatam despre ​Functii Virtuale)
 </​note>​ </​note>​
 <note important>​ Semnatura unei metode consta in: <note important>​ Semnatura unei metode consta in:
Line 39: Line 39:
   * numarul si tipul parametrilor ​   * numarul si tipul parametrilor ​
 </​note>​ </​note>​
-==== Exemplu ====+==== 1.1. Exemplu ====
 <code c++ CompileTime.cpp>​ <code c++ CompileTime.cpp>​
 #include <​iostream>​ #include <​iostream>​
Line 68: Line 68:
 <​note>​Observam ca, desi au acelasi nume, **semnatura** metodelor difera doar prin **tipul** si **numarul** parametrilor.</​note>​ <​note>​Observam ca, desi au acelasi nume, **semnatura** metodelor difera doar prin **tipul** si **numarul** parametrilor.</​note>​
  
-===== Agregare =====+===== 2. Agregare =====
 <note important>​**Agregarea** = procedeul prin care se creeaza un nou tip de date (o noua clasa) folosind tipuri de date (clase) existente <note important>​**Agregarea** = procedeul prin care se creeaza un nou tip de date (o noua clasa) folosind tipuri de date (clase) existente
  
 **Relatia de agregare** = o relatie intre clase de tipul "has a", "has many"</​note>​ **Relatia de agregare** = o relatie intre clase de tipul "has a", "has many"</​note>​
-==== De ce? ====+==== 2.1. De ce? ====
 <note tip>​**Reutilizarea codului duplicat in dezvoltarea de aplicatii** (code reuse) <note tip>​**Reutilizarea codului duplicat in dezvoltarea de aplicatii** (code reuse)
  
Line 80: Line 80:
 </​note>​ </​note>​
  
-==== Scurt exemplu ====+==== 2.2. Scurt exemplu ====
  
 <code c++> <code c++>
Line 100: Line 100:
   * se reutilizeaza codul deja implementat din A   * se reutilizeaza codul deja implementat din A
 </​note>​ </​note>​
-==== Exemplu amanuntit ====+==== 2.3. Exemplu amanuntit ====
 <code c++> <code c++>
 #include <​iostream>​ #include <​iostream>​
poo-is/laboratoare/05.1600672778.txt.gz · Last modified: 2020/09/21 10:19 by sergiu.craioveanu
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