Definire metodi documentali
copia linkTrascrizione
I metodi documentali, sono il corrispettivo documentale dei Metodi di una classe nella programmazione ad oggetti: i metodi sono quindi l’interfaccia della classe, lo strumento tramite il quale dovrebbe essere possibile interagire con le proprietà della classe.
I metodi saranno disponibili in tutti gli oggetti creati (ciò che viene denominata Istanza): l’istanza di un documento è quindi un documento in memoria con le proprietà valorizzate ed in questo ambito il metodo potrà interagire con le proprietà, leggerne ed impostarne i valori.
Vengono denominati Metodi di istanze, proprio perché sono utilizzabili con istanze di documento; ne esiste un’altra categoria denominata Metodi statici in quanto sono utilizzabili senza una istanza del documento, ed ovviamente non hanno accesso alle proprietà dello stesso in quanto il documento non c’è!
Con chi ha poca familiarità con la programmazione ad oggetti, potrei dire che i metodi sono procedure applicate definite all’interno dell’oggetto e che ne alterano le proprietà. Un buon sistema di programmazione è quello di creare piccoli metodi che svolgano piccoli compiti, evitando metodi con molte istruzioni e che svolgano compiti eterogenei: più i metodi svolgeranno semplici compiti è più il codice sarà comprensibile e meglio mantenibile nel tempo.
Quando dobbiamo creare dei metodi documentali? Ogni volta che abbiamo la necessità di variare i valori delle proprietà del documento attraverso un algoritmo ricordandoci che è ininfluente dove questa necessità ci si presenta: non importa se l’operazione è richiesta dall’interfaccia utente, o da una procedure automatizzata; dovremo concepire l’algoritmo come Metodo Documentale per evitare duplicazioni di codice e di conseguenza possibilità di errori.
Prendiamo la videata Utenti: vi ricordo che il pannello elenca gli utenti che avranno accesso all’applicazione; per sicurezza la password di input (digitata dall’utente) non viene salvata sul database in chiaro, ma vogliamo criptarla con un algoritmo non reversibile: praticamente vogliamo criptiamo la password in modo tale che dalla stringa criptata non sia possibile ritornare alla password originale.
Si potrebbe pensare di creare la procedura di criptaggio dentro alla videata Utenti oppure creare una procedura globale all’applicazione: questo sarebbe un approccio sbagliato; sarebbe l’approccio che io chiamo Spaghetti programming, cioè il risultato della vostra applicazione sarà un codice intricato, ingarbugliato come un piatto di spaghetti poiché il flusso dell’applicazione salterebbe di continuo da procedure dentro a videate a procedure globali con l’utilizzo probabile di N variabili globali il tutto disperso nell’albero di progetto senza un filo logico.
Il metodo deve stare nel posto più naturale: manipoliamo qualcosa del documento Utente, quindi il metodo sarà nella struttura del documento Utente.
Albero di progetto, espandiamo il componente e cerchiamo il documento Utente => tasto destro Aggiungi Procedura per far comparire una nuova scheda nell’area di progettazione, è una scheda di Visual Code Editor (Editor di codice di Foundation): il linguaggio Foundation è C# like, un meta linguaggio che si avvicina al C#, possiamo già notarlo dallo scheletro della procedura/metodo che abbiamo aggiunto.
Public void NuovaProcedura() {
}
Con il termine Public indichiamo che Il metodo sarà Pubblico (quindi utilizzabile anche esternamente alla classe), void (il metodo non ritorna nulla) e come nome NuovaProcedura; cambiamo subito il nome: facciamo doppio clic sulla voce NuovaProcedura e digitiamo criptPassword quindi .
Posizioniamo tra le graffe di apertura e chiusura e premiamo , il codice sarà digitato in questo blocco: ricordatevi ad ogni fine token si preme (ve lo consiglio finché non avete preso dimestichezza con il Visual Code Editor).
Torniamo al codice, cosa deve fare questo metodo? Deve controllare PASSWORD INPUT e creare PASSWORD CRIPTATA.
In primis verifichiamo che ci sia qualcosa in PasswordInput quindi digitiamo istruzione condizionale: if .
Come notate nell’editor compare lo scheletro dell’istruzione dove possiamo inserire la condizione; dobbiamo controllare la lunghezza della proprietà quindi length .
Length è una funzione che richiede un parametro, mettiamo PasswordInput , posizioniamoci tra le 2 tonde di chiusura e digitiamo SPAZIO != e per finire ZERO .
Ora entriamo nel blocco true, dobbiamo valorizzare Password Criptata = .
Foundation offre una libreria chiamata SimpleCrypter che cripta o meglio crea un hash con salt (una stringa codificata che sarà irreversibile).
SimpleCrypter.hashWithSalt
PasswordInput
Se volessi inserire l’else? Dobbiamo posizionarci nella riga seguente la chiusura graffa dell'if, e digitare ELSE .
In teoria non abbiamo bisogno di ELSE nel nostro algoritmo quindi come facciamo a eliminare un blocco o una istruzione? Bisogna posizionarsi sulla riga dell’istruzione o dell’inizio blocco precisamente prima dell’icona (nel nostro caso prima dell’icona di Else) e premere sulla tastiera. (non è necessario selezionare).
Abbiamo concluso, il primo metodo documentale è stato creato e lo vediamo nella struttura dell’albero di progetto sotto a Utente: il metodo andremo ad utilizzare in seguito in altri punti di codice.
Facciamone un altro: espandiamo il documento Prezzo, dove avevamo mostrato la Master Query di caricamento per calcolare la proprietà Valida Oggi (è una proprietà Transient ed è necessaria calcolarla con una formula al caricamento).
Ora mettete il video in pausa: cercate di creare un metodo chiamato setValidaOggi: il metodo deve valorizzare la proprietà ValidaOggi nello stesso modo in cui viene valorizzata con questo calcolo: quando avrete concluso potete far ripartire il video così lo creiamo insieme e potete controllare se avete fatto correttamente.
Creiamo insieme il metodo setValidaOggi.
Public void setValidaOggi() {
If (today() >= ValidoDal and today <= ValidoAl) {
ValidaOggi = true;
}
Else {
ValidaOggi = false
}
}
Possono sembrare semplici questi primi metodi, ma aiutano a prendere confidenza con l’editor e con il concetto documentale; vi aspetto nei prossimi tutorial per altri metodi e nuove istruzioni.
I metodi saranno disponibili in tutti gli oggetti creati (ciò che viene denominata Istanza): l’istanza di un documento è quindi un documento in memoria con le proprietà valorizzate ed in questo ambito il metodo potrà interagire con le proprietà, leggerne ed impostarne i valori.
Vengono denominati Metodi di istanze, proprio perché sono utilizzabili con istanze di documento; ne esiste un’altra categoria denominata Metodi statici in quanto sono utilizzabili senza una istanza del documento, ed ovviamente non hanno accesso alle proprietà dello stesso in quanto il documento non c’è!
Con chi ha poca familiarità con la programmazione ad oggetti, potrei dire che i metodi sono procedure applicate definite all’interno dell’oggetto e che ne alterano le proprietà. Un buon sistema di programmazione è quello di creare piccoli metodi che svolgano piccoli compiti, evitando metodi con molte istruzioni e che svolgano compiti eterogenei: più i metodi svolgeranno semplici compiti è più il codice sarà comprensibile e meglio mantenibile nel tempo.
Quando dobbiamo creare dei metodi documentali? Ogni volta che abbiamo la necessità di variare i valori delle proprietà del documento attraverso un algoritmo ricordandoci che è ininfluente dove questa necessità ci si presenta: non importa se l’operazione è richiesta dall’interfaccia utente, o da una procedure automatizzata; dovremo concepire l’algoritmo come Metodo Documentale per evitare duplicazioni di codice e di conseguenza possibilità di errori.
Prendiamo la videata Utenti: vi ricordo che il pannello elenca gli utenti che avranno accesso all’applicazione; per sicurezza la password di input (digitata dall’utente) non viene salvata sul database in chiaro, ma vogliamo criptarla con un algoritmo non reversibile: praticamente vogliamo criptiamo la password in modo tale che dalla stringa criptata non sia possibile ritornare alla password originale.
Si potrebbe pensare di creare la procedura di criptaggio dentro alla videata Utenti oppure creare una procedura globale all’applicazione: questo sarebbe un approccio sbagliato; sarebbe l’approccio che io chiamo Spaghetti programming, cioè il risultato della vostra applicazione sarà un codice intricato, ingarbugliato come un piatto di spaghetti poiché il flusso dell’applicazione salterebbe di continuo da procedure dentro a videate a procedure globali con l’utilizzo probabile di N variabili globali il tutto disperso nell’albero di progetto senza un filo logico.
Il metodo deve stare nel posto più naturale: manipoliamo qualcosa del documento Utente, quindi il metodo sarà nella struttura del documento Utente.
Albero di progetto, espandiamo il componente e cerchiamo il documento Utente => tasto destro Aggiungi Procedura per far comparire una nuova scheda nell’area di progettazione, è una scheda di Visual Code Editor (Editor di codice di Foundation): il linguaggio Foundation è C# like, un meta linguaggio che si avvicina al C#, possiamo già notarlo dallo scheletro della procedura/metodo che abbiamo aggiunto.
Public void NuovaProcedura() {
}
Con il termine Public indichiamo che Il metodo sarà Pubblico (quindi utilizzabile anche esternamente alla classe), void (il metodo non ritorna nulla) e come nome NuovaProcedura; cambiamo subito il nome: facciamo doppio clic sulla voce NuovaProcedura e digitiamo criptPassword quindi
Posizioniamo tra le graffe di apertura e chiusura e premiamo
Torniamo al codice, cosa deve fare questo metodo? Deve controllare PASSWORD INPUT e creare PASSWORD CRIPTATA.
In primis verifichiamo che ci sia qualcosa in PasswordInput quindi digitiamo istruzione condizionale: if
Come notate nell’editor compare lo scheletro dell’istruzione dove possiamo inserire la condizione; dobbiamo controllare la lunghezza della proprietà quindi length
Length è una funzione che richiede un parametro, mettiamo PasswordInput
Ora entriamo nel blocco true, dobbiamo valorizzare Password Criptata
Foundation offre una libreria chiamata SimpleCrypter che cripta o meglio crea un hash con salt (una stringa codificata che sarà irreversibile).
SimpleCrypter.hashWithSalt
PasswordInput
Se volessi inserire l’else? Dobbiamo posizionarci nella riga seguente la chiusura graffa dell'if, e digitare ELSE
In teoria non abbiamo bisogno di ELSE nel nostro algoritmo quindi come facciamo a eliminare un blocco o una istruzione? Bisogna posizionarsi sulla riga dell’istruzione o dell’inizio blocco precisamente prima dell’icona (nel nostro caso prima dell’icona di Else) e premere
Abbiamo concluso, il primo metodo documentale è stato creato e lo vediamo nella struttura dell’albero di progetto sotto a Utente: il metodo andremo ad utilizzare in seguito in altri punti di codice.
Facciamone un altro: espandiamo il documento Prezzo, dove avevamo mostrato la Master Query di caricamento per calcolare la proprietà Valida Oggi (è una proprietà Transient ed è necessaria calcolarla con una formula al caricamento).
Ora mettete il video in pausa: cercate di creare un metodo chiamato setValidaOggi: il metodo deve valorizzare la proprietà ValidaOggi nello stesso modo in cui viene valorizzata con questo calcolo: quando avrete concluso potete far ripartire il video così lo creiamo insieme e potete controllare se avete fatto correttamente.
Creiamo insieme il metodo setValidaOggi.
Public void setValidaOggi() {
If (today() >= ValidoDal and today <= ValidoAl) {
ValidaOggi = true;
}
Else {
ValidaOggi = false
}
}
Possono sembrare semplici questi primi metodi, ma aiutano a prendere confidenza con l’editor e con il concetto documentale; vi aspetto nei prossimi tutorial per altri metodi e nuove istruzioni.
Ultima modifica: 19/03/2021 / Validità: da 20.5.8000