Ecco come implementiamo questo funcionallity
Come puoi vedere, abbiamo molte applicazioni (qui si comporta come il tuo sito web).
Moderatore, WebMaster e Membro, come mostrato nella mappatura, sarebbe meglio come un ruolo. Cosa succede se è necessario aggiungere un nuovo "Ruolo". Forse devi cambiare tutto il tuo modello.
Ogni UserApplication (sito Web utente) ha la sua data di inizio e di fine. E ogni applicazione ha il proprio ruolo. Un sito web della Banca ha bisogno di un ruolo Manager. Un sito web di salute Insurance Company ha bisogno di un ruolo di agente e così via ...
UPDATE
Capisco il login/utente (parte/tutto) relazione di composizione. Prima di continuare, vedi questo answer su Composizione contro Aggregazione.
Ma quello che non capisco è lo scopo dei UserApplication e Application classi
pensare ad applicazioni come il vostro sito web. Lavoro per una grande compagnia di assicurazione sanitaria dove abbiamo molti moduli (ogni modulo (applicazione) ha il proprio sito web). Ma alcuni utenti, non tutti, possono utilizzare ogni modulo. Spiega perché definisco UserApplication. ruolo
di ruolo in questo processo di login
Nessuno. Dà solo un ruolo a UserApplication. Posso utilizzare il modulo finanziario, che definisce i seguenti ruoli: Manager, Cliente e Altro, in cui posso svolgere il ruolo di Manager.Ma posso assegnarvi un utente temporaneo (startDate e endDate) come cliente per utilizzare il modulo finanziario.
Application financialModule = new Application();
financialModule.addRole(new Role("Manager"));
financialModule.addRole(new Role("Customer"));
financialModule.addRole(new Role("Other"));
User arthur = new User(new Login("#####", "#####"));
arthur.setFirstName("Arthur");
arthur.setLastName("Ronald");
arthur.setEnabled(true);
UserApplication financialModuleUser = new UserApplication(new Period(new Date(), null));
financialModuleUser.setUser(arthur);
financialModuleUser.addRole(financialModule.getRoleByDescription("Manager"));
financialModule.addUserApplication(financialModuleUser);
Il tuo sito web si presenta come
Website myWebsite = new Website();
myWebsite.addRole(new Role("Member"));
myWebsite.addRole(new Role("WebMaster"));
myWebsite.addRole(new Role("Moderator"));
User you = new User(new Login("#####", "#####"));
you.setFirstName("FirstName");
you.setLastName("LastName");
you.setEnabled(true);
UserApplication myWebsiteUser = new UserApplication(new Period(new Date(), null));
myWebsiteUser.setUser(you);
myWebsiteUser.addRole(myWebsite.getRoleByDescription("WebMaster"));
myWebsite.addUserApplication(myWebsiteUser);
Come si può vedere, WebMaster, Moderatore e gli sono solo ruoli definite dal tuo sito web. Nient'altro.
Una buona risorsa su UML e ORM è Java Persistenza con il libro Hibernate.
Opps, dovrei lasciare che il webmaster erediti dal moderatore, quindi non devo riscrivere la funzione delete_reg_member – Anthony