User Tools

Site Tools


appunti3s:generalizzazione

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 [2020/06/08 22:19] (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...
 +