Sto costruendo un programma per uno studio legale.
Quando un membro dello staff è attivo (cioè lavora ancora presso l'azienda) ha una password per accedere al programma; Quando un membro del personale è inattivo (cioè non lavora più nello studio) perde la sua password, ma i suoi dati sono ancora registrati nel database (informazioni personali, descrizione del lavoro precedente ecc.).
Dato che uno staffer non è sempre un utente del programma, ma ogni utente è uno staffer, ho pensato di descrivere le classi come questa:
class Staffer
{
/* Fields and methods */
}
class User : Staffer
{
string password;
}
Quando aggiorno uno dei campi degli oggetti, viene aggiornato anche il database (utilizzando un gestore di eventi per l'evento PropertyChanged
).
Ho una schermata nel programma per aggiornare le informazioni di un dipendente, inclusa la sostituzione della sua password . Questa schermata aggiorna l'oggetto che rappresenta il dipendente.
Ma quale oggetto dovrebbe rappresentare il dipendente? Se, ad esempio, voglio aggiornare solo l'indirizzo, non ho motivo di creare un oggetto User
s, quindi creerò un'istanza della classe Staffer
. Ma se voglio aggiornare la sua password, ho bisogno di istanziare la classe User
per rappresentarlo. Qual è l'approccio migliore in una prospettiva OOP? Forse dovrei creare solo una classe Staffer
e inserire il campo password
lì senza User
class?