Documentazione · Struttura di un'applicazione
Classi e librerie
Documentazione storica, non aggiornata.
Nei paragrafi precedenti abbiamo definito due tipi di classi presenti nel progetto: la sessione (app) e le videate (view). Il primo tipo viene gestito autonomamente dal framework, il secondo viene usato per definire l’interfaccia utente dell’applicazione.
In un progetto Instant Developer Cloud è possibile definire anche altri tipi di classi, sia specializzate che generiche. Le classi specializzate vengono utilizzate per gestire in modo strutturato i dati del database o l’interfaccia verso le webapi, e saranno trattate nei capitoli relativi.
Le classi di codice generiche possono essere definite sia a livello di applicazione che all’interno di una libreria. Le librerie sono dei sottoinsiemi riutilizzabili di elementi del progetto; il contenuto di una libreria può essere referenziato da tutte le applicazioni del progetto ed è facilmente esportabile come pacchetto per essere incluso in altri progetti.
Una classe di codice generica è una classe JavaScript basata su prototype e può contenere proprietà di classe e metodi, sia statici che di istanza. Le proprietà, invece, sono definite solo a livello di istanza, in quanto le proprietà statiche sarebbero condivise fra tutte le sessioni del container generando effetti indesiderabili.
Per referenziare una classe definita a livello di applicazione è sufficiente usare l’oggetto App, ad esempio:
let m = new App.MyClass(app);
Se invece la classe è contenuta in una libreria, si deve anteporre anche il nome di quest’ultima. Ad esempio:
let m = new App.MyLibrary.MyClass(app);
Tipi di librerie e di classi
Sono disponibili tre diversi tipi di librerie, selezionabili dalla videata delle proprietà delle stesse:
- Applicazione: la libreria definisce le interfacce con il framework server o client. Queste librerie non contengono codice specifico ma solo le definizioni; solitamente vengono importate con i pacchetti base del progetto.
- Datamodel: questo tipo di libreria definisce l’interfaccia con un determinato tipo di database (o di sistema di memorizzazione dati). Solitamente non vengono mai modificate.
- Personalizzata: questo tipo di librerie contiene elementi e codice specifico del progetto in cui sono contenute. È il tipo di default e normalmente è quello che si desidera utilizzare nei propri progetti.
Anche le classi generiche possono essere di diversi tipi:
- Personalizzata: questo tipo di classi sono le più comuni e contengono il codice applicativo specifico del progetto in cui sono contenute.
- Stile / Tema: questo tipo di classi servono per personalizzare il tema grafico e lo stile dell’applicazione. In particolare le classi di tipo tema permettono di personalizzare a design time le proprietà del tema dell’applicazione. A tal fine, la proprietà deve avere lo stesso nome di quella del tema e la classe deve essere indicata come la classe “tema” nelle proprietà dell’applicazione.




- Elemento: le classi di tipo elemento definiscono l’interfaccia verso un elemento visuale di uno specifico tipo. Per aggiungere al progetto componenti visuali non presenti nelle librerie di tipo è necessario definire una classe di tipo Elemento all’interno di una libreria di tipo Applicazione.
- Videata: definisce la classe base di tutte le videate. Non deve essere né usata né modificata. Solitamente viene importata con i pacchetti base del progetto.
- Documento: definisce la classe base di tutti i documenti. Non deve essere né usata né modificata. Solitamente viene importata con i pacchetti base del progetto.
- Datamodel: definisce un’interfaccia verso un database. Deve essere contenuta in una libreria di tipo Datamodel. Solitamente non viene utilizzata, ma solo importata con i pacchetti base del progetto.
Proprietà e passaggio di parametri
In questo paragrafo abbiamo visto che tutti gli elementi costitutivi di un progetto Instant Developer Cloud sono classi, anche la sessione e le videate.
Ognuna di queste classi può avere proprietà specifiche, inseribili tramite i comandi dell’IDE. Può essere interessante esemplificare il miglior modo di condividere il valore delle proprietà fra le istanze di queste classi.
Proprietà di sessione (applicazione)
Le proprietà inserite a livello dell’oggetto applicazione vengono memorizzate a livello di ogni singola sessione e possono essere referenziate in tutto il codice applicativo tramite l’espressione app.<nome proprietà>.
Un esempio di proprietà che di solito si aggiunge alla sessione è l’oggetto che descrive l’utente collegato. Se ad esempio questa proprietà si chiama loggedUser e la tabella di database corrispondente ha un campo id, si potrà accedere a tale valore in tutta l’applicazione scrivendo app.loggedUser.id.
Proprietà di videata
Le proprietà di videata sono visibili all’interno del codice della videata stessa tramite l’espressione view.<nome proprietà>. Solitamente vengono passate alla videata quando questa si apre tramite le opzioni del metodo di apertura. La videata riceve i parametri nell’evento onLoad.
Proprietà di documento
Un documento è una classe speciale che rappresenta un’entità del framework ORM di Instant Developer Cloud. Le proprietà di un documento possono essere impostate nel costruttore passandole come oggetto. Ad esempio:
var p = new App.BE.Product(app, {ProductName:”Chai”});
Proprietà di classe
Le proprietà di una classe generica sono visibili all’interno del codice della classe stessa. Le proprietà possono essere impostate dopo aver costruito l’oggetto chiamando un metodo specifico.