Progettare una pagina su un modello di dati: Model View

L’oggetto di quest’articolo, prosecuzione del precedente in cui abbiamo iniziato la costruzione dell’applicazione con il metodo  MVC Ajax.BeginForm(), è la costruzione della pagina parziale (Partial View) che contiene la risposta all’input dell’utente attraverso l’utilizzo di un View Model (modello per la vista).
L’utente potrà selezionare la data di partenza e di arrivo oltre che il numero di posti letto richiesto. A seguito di questa selezione verranno proposte tutte le tipologie di stanze disponibili, indicando il numero minimo e massimo di persone in stanza, suddiviso eventualmente fra adulti e bambini. Dovrà essere aggiunto anche la possibilità per ogni tipologia di stanza di ospitare dei bebè (culla aggiunta). Per ultimo ci sarà anche la possibilità di variare il prezzo in base al trattamento.

Disegno Model View
In una programmazione orientata agli oggetti, ogni informazione che viene gestita è incapsulata in oggetti (istanze di classe). Tipicamente un oggetto contiene metodi che definiscono il suo comportamento in base a particolari input. Il View Model, o Modello della vista, incapsula “solamente” le informazioni attraverso le proprietà di una classe che la vista si aspetta come prima riga di codice grazie al marcatore “@model“.
Per gestire le informazioni del nostro sistema di booking on line definiamo la classe che ha il compito di farci da View Model:

Le classi che la compongono sono:

Questa classe include tutte le informazioni “di testata” per la tipologia di stanza.

Questa classe definisce il prezzo in base agli occupanti e alla loro composizione. Attraverso la lista CostBySupplements definisce anche il costo dei supplementi per quella particolare composizione:

Questa composizione di oggetti per il View Model permette molta flessibilità. L’unico limite è che nella solita stanza gli occupanti devono scegliere il solito trattamento.
A seguito di queste definizione è possibile ora immaginare un metodo di un’apposita classe che abbia lo scopo di fornire le risposte all’input dell’utente. Tipicamente questo “livello” di oggetti è indicato come Business Logic Layer (livello di logica Business) e a tale nomenclatura ci uniformiamo:

Struttura codice

 

 

Seguendo questo logica, ci uniformiano anche nel nome stesso della classe: public class AvailabilityBLL

Il metodo, nome a parte, dovrà avere in input i dati che l’utente ha “comunicato” al server: data arrivo, data partenza e numero di persone. La sua risposta sarà una “lista” di AvailabilityResponse.

Poiché i dati della risposta non sono per ora veramente gestiti, sottolineeremo la provvisorietà del metodo con la parola test nel nome stesso:

La visibilità è marcata come privata perché questo metodo,in questa fase di debug, farà da supporto a quello reale e MAI vorremmo che entri realmente in gioco per dimenticanze dettate dalla fretta dello sviluppo. Fatte queste premesse il codice BLL diventa:

A questo punto, per poter testare la nostra vista, implementiamo il metodo di supporto con dati fittizi ma realistici usando solo due combinazione che coprano però tutti i casi possibili, anche per l’impaginazione di test oggetto dei prossimi articoli:

Impostati questi valori per il test, il controller diventa:

Dove la “partial view” avrà quindi il riferimento alla classe direttamente nel modello:
@model IEnumerable<BookingSystem.Models.AvailabilityResponse>

A seguire l’implementazione grafica funzionale della vista.

(565)

Articoli correlati:

Tagged under:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

× Supporto Live

Al momento siamo offline. Potete contattarci via email..