2. Diagrammi di classe
Una classe è formata da tre componenti:
- Nome
- Attributi
- Metodi
Attributi: <attributo_visibilità> <nome> : <tipo_del_dato>[molteplicità] = [default_value]
Metodi: <attributo_visibilità> <nome> (<lista_parametri>) : <tipo_del_ritorno>
Attributi di visibilità:
+
public
-
private
#
protected
~
friendly
Parametri: <nome> : <tipo> = [default_value]
Associazioni
Un’associazione indica relazioni tra classi, ad esempio delle persone che lavorano in un’azienda.
Le associazioni possono avere:
- Un nome, che di solito è un verbo
- I ruoli giocati dalle varie classi
I dettagli di un’associazione sono “attributi impliciti” e hanno la stessa visibilità di un attributo.
Possono avere una molteplicità: 1, 0..1, 1..*, 4, 6-12
Esempio:
class Persona {
private String nome;
private String cognome;
private String codFiscale;
private int stipendio;
}
class Banca {
private Persona[] clienti;
}
class Prestito {
private int ammontare;
private int rata;
private Date dataInizio;
private Date dataFine;
private Persona intestatario;
private Banca banca;
}
Aggregazioni
Sono una forma speciale di associazione: descrivono la relazione “un oggetto è parte di un altro”.
Composizioni
Una relazione di composizione è un’aggregazione forte: i componenti non possono esistere senza il loro contenitore: la creazione e la distruzione avviene nel contenitore e le parti dei componenti non sono parte di altri oggetti.
Associazioni riflessive
Un’associazione è riflessiva se coinvolge oggetti della stessa classe.
class Persona {
private String nome;
private String cognome;
private Date dataNascita;
private static int numPersone;
public Persona marito;
public Persona moglie;
public boolean siSposa(Persona p) {...}
public boolean compieAnni(Date d) {...}
}
Ereditarietà
class Triciclo extends Bicicletta {...}
Classi astratte e Interfacce
Si ricorda che sia le classi astratte che le interfacce non possono avere istanze!
Package