Introduzione
Risultano molto comuni, situazioni in cui diverse classi condividono gli stessi attributi. Il questo caso si può utilizzare il concetto di ereditarietà creando relazioni di sotto classi e super classi, proprio come in Java e nella [[programmazione ad oggetti in generale.
Tutti gli attributi, associazioni e le molteplicità della super-classe sono ereditati dalla sottoclasse.
Costrutto is-a
Il costrutto is-a indica che una classe è sottoclassi di una solo altra classe, premettendo alla sotto classe di ereditare le caratteristiche della classe madre.
Esempio
Ovviamente possiamo avere relazioni is-a a più livelli: transitività
Rispetto a Java l’ereditarietà in UML è molto più potente perché permette, infatti permette ad un oggetto di essere istanza di due classi, ad esempio:

L’oggetto Anna è un istanza di Studente, ma anche di Lavoratore, a sua volta, essendo queste ultime sottoclassi di Persona, è anche implicitamente istanza di Persona. L’insieme delle sue classi più speci che è {Studente, Lavoratore}.
Costrutto della Generalizzazione
I diagrammi delle classi UML offrono un costrutto più complesso della relazione is-a, il costrutto della generalizzazione.
Permette di definire che le istanze di una classe possono essere istanze di più classi figlie secondo uno stesso criterio concettuale.

Criteri {disjoint} e {complete}
Normalmente una istanza della classe base può essere istanza di più di una sottoclasse di una stessa generalizzazione.
Ad esempio in questo esempio una persona può essere: Studente, Lavoratore, Studente e Lavoratore, ne Studente ne Lavoratore.

É possibile porre delle limitazioni a questi comportamenti attraverso il criterio {disjoint} ed il criterio {complete}.
Criterio {disjoint}
In questo caso la generalizzazione di
genereè disgiunta, ovvero una istanza diUomonon può essere anche istanza diDonna.Quindi una
Personao è unUomoo è unaDonna, o non ène Uomo ne una Donna.
Criterio {complete}
In questo caso la generalizzazione di
genereè completa, ovvero ogni istanza diPersonadeve essere anche istanza di almeno una sottoclasse traUomoeDonna.Quindi una persona o è un
Uomoo è unaDonna, o èsia Uomo e Donna.
Sia {disjoint} e {complete}
In questo caso la generalizzazione di
genereè sia completa e disgiunta, ovvero ogni istanza diPersonadeve essere anche istanza di esattamente una sottoclasse traUomoeDonna.Quindi una persona o è un
Uomoo è unaDonna.
Ereditarietà Multipla
Una classe può essere sottoclasse di più classi. Il meccanismo dell’ereditarietà vale come sempre.




