Gli oggetti sono macchine/automi a stati finiti, in quanto caratterizzati da un numero finito di possibili stati e dalle transizioni tra di essi.
Ad esempio, una pila può essere vuota, parzialmente riempita, o piena, e passa da uno stato all'altro con l'aggiunta/rimozione di un elemento.
Gli state diagram UML sono diagrammi dinamici che permettono di descrivere automi a stati finiti, usando una notazione grafica derivata da una proposta precedente (StateChart). I principali elementi di tale notazione sono:
stato:
stato iniziale:
stato finale:
transizione:
decomposizione OR:
decomposizione AND:
Uno stato rappresenta una situazione durante la quale è verificata una condizione (che è solitamente "implicita", cioè non specificata esplicitamente, ma comunque indicata implicitamente dal nome dello stato stesso). Tale condizione può corrispondere a una situazione statica, come l'attesa di un evento esterno, o, più in generale, a una qualsiasi situazione stabile, come lo svolgimento di un'attività.
Lo stato di un oggetto è l'insieme dei valori dei suoi attributi e link in un certo istante. Uno stato è però astratto, in qunto può corrispondere a diverse, anche infinite, combinazioni di valori degli attributi/link. Ad esempio, per una pila, lo stato "parzialmente riempita" corrisponde a diversi numeri di elementi (e valori di tali elementi): esso viene comunque trattato come un unico stato perchè interessa solo sapere che si possono raggiungere e rimuovere elementi (a differenza di una pila completamente piena o vuota).
Un altro esempio è un motore, il cui stato "acceso" potrebbe corrispondere a diversi numeri di giri al minuto.
Lo stato di un oggetto ne influenza il comportamento: la stessa operazione può avere effetti/risultati diversi, se eseguita in stati diversi. Ad esempio, l'inserimento in una pila vuota o parzialmente riempita ha l'effetto di aggiungere un elemento, mentre l'inserimento in una pila piena produce un errore.
Uno stato può anche essere dinamico, dove la dinamica dell'oggetto può essere rappresentata dalla condizione verificata (es: l'elemento entra nello stato quando inizia una certa attività e lo lascia appena l'attività viene completata