Finora abbiamo detto che è importante definire le classi in base
all'intervista fatta con il cliente, e far sì che tali classi vengano
messe nelle corrette relazioni tra di loro. Tuttavia, è possibile che
alcune classi non siano correlate ad una particolare classe padre e che
il loro comportamento possa includere alcune operazioni tutte recanti
lo stesso nome. In tal caso esiste la possibilità di definire tali
operazioni per una classe e riutilizzarle per le altre: è proprio
quello che avviene tramite l'utilizzo delle interfacce.
Un'interfaccia è un insieme di operazioni che specifica alcuni aspetti
del comportamento di una classe; in altre parole, si può dire che
un'interfaccia rappresenta un insieme di operazioni che una classe
offre ad altre classi.
Definizione:
Un'interfaccia viene modellata allo stesso modo in cui viene modellato
il comportamento una classe e rappresenta un insieme di operazioni che
una classe offre ad altre classi.
Per modellare un'interfaccia si utilizza lo stesso modo utilizzato per
modellare una classe, con un rettangolo. La differenza consiste nel
fatto che un'interfaccia non ha attributi ma soltanto operazioni
(metodi). Un altro modo utilizzato in UML per rappresentare le
interfacce è quello che utilizza un piccolo cerchio che si unisce
tramite una linea alle classi che implementano l'interfaccia stessa.
La tastiera del computer è un tipico esempio di interfaccia
riutilizzabile. La pressione di un tasto (KeyStroke) rappresenta
un'operazione che è stata riutilizzata dalla macchina per scrivere. La
collocazione dei tasti è la stessa della macchina per scrivere, ma il
punto cruciale è che la pressione di un tasto è stata trasferita da un
sistema (i due sistemi, come si evince facilmente, nel nostro caso sono
la macchina per scrivere ed il computer) ad un altro. D'altro canto,
sulla tastiera dei computer si trovano un insieme di operazioni che non
si trovano sulla macchina per scrivere (Ctrl, Alt, PageUp, PageDown,
ecc.)
Una interfaccia è una collezione di operazioni che una classe esegue
Per distinguere le interface dalle classi, dal punto di vista UML si utilizza la scrittura interface all'inizio del nome di ogni interfaccia, come mostrato nella figura precendente.
La
relazione tra una classe ed un'interfaccia viene definita
realizzazione. Tale relazione è visualizzata nel modello da una linea
tratteggiata con un triangolo largo aperto costruito sul lato
dell'interfaccia.