UML_Class_Diagram
UML (Unified Modeling Language) Class Diagram
Introduzione: Utilizzo dei diagrammi delle classi per rappresentare visivamente le strutture e relazioni tra le classi all'interno di un sistema software.
Classi
Definizione: Una classe in UML è composta da:
Nome
Attributi (stato)
Metodi (comportamento)
Esempio: La classe
Professorepuò avere attributi comenome,cognome,età, e metodi comecreate()edelete().
Associazioni e Relazioni
Associazione: Rappresenta una relazione bidirezionale tra due classi.
Molteplicità: Indica il numero di istanze di classi che possono partecipare all'associazione, come ad esempio
0..*indica che ci possono essere zero o più istanze.
Aggregazione e Composizione
Aggregazione: Una forma di associazione che indica una relazione "parte-tutto". Le parti possono esistere indipendentemente dal tutto.
Composizione: Un'aggregazione forte in cui le parti non possono esistere senza l'oggetto contenitore.
Ereditarietà (Generalizzazione)
Concetto: Definisce relazioni tra classi dove una classe può ereditare attributi e metodi da un'altra.
Esempio: La classe
StudenteeProfessorepossono ereditare dalla classePersona.
Vincoli
Definizione di vincoli: Restrizioni e condizioni applicate alle classi e associazioni. Es:
Stipendio < Capo.Stipendioindica un vincolo sulla gerarchia salariale.
Interfacce
Definizione: Un insieme di operazioni pubbliche che devono essere implementate da classi concrete.
Tipi di interfacce:
Fornita: Espone operazioni.
Richiesta: Necessita operazioni per funzionare correttamente.
Classi Astratte
Definizione: Classi che non possono essere istanziate direttamente e possono avere sottoclassi concrete.
Associazioni e Attributi Derivati
Attributi Derivati: Calcolati e non memorizzati, spesso utilizzati quando i valori variano frequentemente.
Esempio: Età derivata dalla data di nascita.
Ereditarietà Multipla
Problemi: Possibilità di ereditare attributi o metodi più volte, portando a conflitti e ridondanze.
Soluzioni: Usare classificazioni nidificate, eredità multipla controllata o delega.
Delegazione
Uso: Permette a una classe di delegare funzioni a un'altra classe, evitando problematiche di ereditarietà multipla e mantenendo la struttura del codice più gestibile.