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.