Generalmente nelle applicazioni Enterprise come ERP o ERM, CRM, BP ecc. vediamo due cose molto, una di esse è Ruolo e l'altra è Utente. Quello che succede è che nel mondo reale abbiamo alcune persone come Udienze dell'Organizzazione e anche noi abbiamo alcuni ruoli che ogni persona fa il suo dovere in quel ruolo. In realtà ogni persona ha le sue informazioni nel suo file, dipende dal ruolo che ha. Nota che una persona può avere più di un ruolo.
La domanda è: come possiamo modellare questo argomento come punto di vista OO (Object Oriented)?
Un modo è che abbiamo una gerarchia di ereditarietà degli utenti che ognuno ha i propri dati e i propri comportamenti (ad esempio in una clinica abbiamo un medico, un paziente e un segretario che tutti sono derivati dall'utente). ha una lista di ruoli. In questo caso i ruoli sono più probabili a Enum e non hanno alcun comportamento e il loro uso principale è il controllo degli accessi.
Il problema di questo metodo è che se una persona reale desidera avere ruoli diversi e questo problema è completamente dinamico, la modellazione di questo non sarebbe chiara.
Il secondo metodo è che abbiamo un utente e una gerarchia ereditaria di ruoli che ogni ruolo ha il proprio dovere. Assegniamo questo ruolo agli utenti. In realtà vediamo i ruoli nel programma e il principale operante per noi sono i ruoli.
Il problema di questo metodo è che per alcuni ruoli è necessario che gli utenti abbiano altre informazioni personali (ad esempio sul medico, il campo di studi dovrebbe essere definito) e non è chiaro dove dovremmo conservare questi dati.
Il terzo metodo che non è ovvio per noi è una combinazione dei due metodi sopra.