Sto tentando di incapsulare diverse funzionalità su un utente in una singola classe. Sebbene l'uso principale di questa classe sia quello di inizializzarlo una volta e non dover mai richiamare alcuna variabile, vorrei che questa classe fosse scalabile per essere chiamata più volte. Anche se inserendo questo in una classe mi sento come se fossi troppo complicato o rompere gli standard OOP.
Al momento sto utilizzando attualmente questi tipi di chiamate correnti attraverso il codice VBA:
username = GetUsername()
o
IF userHasSecurity(GetUsername(), "WhatUserHasAccessTo") = true THEN
Quello che spero di farlo sostituirlo (rispettivamente) con:
Set UserID = New Username
UserID.GetUserName
o
IF UserID.HasModuleAccess("WhatUserHasAccessTo") = true THEN
Oltre a questa modifica, ho una funzione che restituisce informazioni Active Directory
e inoltre verifica se l'input dei nomi utente esiste in Active Directory
Il diagramma delle classi è come tale
Private UserName As String
Private FirstName As String
Private MiddleInitial As String
Private LastName As String
Private Sub class_Initialize()
Private Function findCurrentUsername() As String
Private Function doesUsernameExist(usernameToCheck As String) As Boolean
Public Property Get GetUserName() As String
Public Property Let setUsername(newUsername As String)
Public Property Get getFirstName() As String
Private Property Let setFirstName(newFirstName As String)
Public Property Get getLastName() As String
Private Property Let setLastName(newLastName As String)
Public Property Get getMiddleInitial() As String
Private Property Let setMiddleInitial(newMiddleInitial As String)
Private Function findNameDetails()
Public Property Get getFullName() As String
Public Function HasModuleAccess(moduleName As String, Optional appName As String) As Boolean
Public Function getUserActiveDirectoryGroups() As DAO.Recordset
Si tratta più di una cosa basata sull'esecuzione (funzioni standalone contro classe) o c'è qualcosa da guadagnare? Questo rompe gli standard OOP e sto usando le classi in modo errato?