Differences

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

Link to this comparison view

appunti3s:generalizzazione [2018/04/25 07:55]
appunti3s:generalizzazione [2018/04/25 07:55] (current)
Line 1: Line 1:
 +====== Generalizzazione ======
 +{{:​appunti3s:​cpp-generalizzazione.png|}}
 +  * è quasi la stessa cosa dell'​[[appunti3s:​ereditarietà1]],​ per approfondimento vedere libro "Usare UML"
 +  * ha il simbolo della linea continua che termina con un triangolo
 +  * ha UN SOLO verso e quindi una sola regola (vedi esempio)
 +===== Principio di sostituzione =====
 +Un oggetto della classe derivata implementa sia il modello della classe base che della classe derivata.
 +===== Come si realizza? =====
 +Si definisce la classe A come classe //​derivata//​ dalla classe B , che è la classe //base//
 +<​code>​
 +Class B
 +{
 +  //etc.
 +};
  
 +class A : public B
 +{
 +  //etc.
 +};
 +</​code>​
 +In questo modo la classe A avrà, oltre ai propri membri, anche quelli ereditati da B.
 +
 +Rispetto alla relazione di Aggregazione (o di Associazione),​ in questo caso, A può accedere ai membri dello stesso tipo di B senza aver bisogno di creare un oggetto di tipo B perché è lui stesso un oggetto di tipo B. 
 +
 +Questo può essere utile quando ...?
 +===== Esempio =====
 +{{:​appunti3s:​autoveicolo1.png|}}
 +La relazione si riconosce quando nelle regole si può leggere: ​
 +**Ogni oggetto-derivato è un (//is a//) oggetto-base** (non viceversa). ​
 +Ogni automobile è un autoveicolo,​ Ogni camion è un autoveicolo,​ ecc...
 + 
  • appunti3s/generalizzazione.txt
  • Last modified: 2018/04/25 07:55
  • (external edit)