====== 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// Class B { //etc. }; class A : public B { //etc. }; 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...