MVC Model View Controller INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la logica di controllo in 3 componenti diversi. Se usa di solito in aplicazioni web, dove la View è la pagina HTML, il Controller è il codice che fornisce i dati dinamici alla pagina e il Model contiene le classi rappresentativi della aplicazione (come il messaggio di un foro…) ELEMENTI PRINCIPALI (1) È normale pensare che una applicazione ha 3 elementi principali: presentazione (IU), dominio e acceso a i dati. In MVC, l’elemento di presentazione sta repartita in controller e view. La principale separazione si da tra presentazione e dominio; la separazacione tra V/C è meno chiara. MVC divide una applicazione in 3 zone: procesamiento, uscita ed entrata. Per questo, utiliza le seguente abstrazioni: ELEMENTI PRINCIPALI (2) Modello: questa è la rappresentazione specifica del dominio della informazione sulla qual funziona la applicazione. Il modello è altra forma di chiamare all’elemento del dominio. La logica del dominio aiunge significato a i dati. Vista: presenta il modello in un formato adecuato per interattuare, di solito un elemento della interfacia di usuario. Controllatore: risponde a eventi, di solito azzioni del usuario e invoca cambii nello modello e probabilimente nella vista. Molti applicazioni usano un mecanismo di almacenamiento persistente (come può essere una DB) per almacenare i dati. MVC non parlo direttamente di questa capa di acceso a i dati. FLUSSO DI CONTROLLO (1) Benche si possono trovare diversi implementazioni di MVC, il flusso che sigue il controllo di solito è il siguente: 1. Il usuario interattua con la interfacia di usuario di alcuna forma (per esempio, preme un tasto, collegamento). 2. Il controllatore riceve (per parti degli oggetti della interfacia-vista) la notificazione dell’azione richiesta per l’usuario. Il controllatore gestiona l’evento che arriva, frequentemente a traverso de in gestore di evenit (handler o callback). 3. Il controllatore accede al modello, attualizandolo, posibilemente modificandolo di forma adecuata alla azione richiesta per l’usuario. I controllatori complessi stanno di solito strutturati usando un pattern di comando che encapsula gli azioni e semplifica la loro estensione. FLUSSO DI CONTROLLO (2) 4. Il controllatore delega agli oggetti de la vista, la tarea di desplegare l’interfacia d’usuario. La vista riceve i dati del modello per gestire la interfacia adecuata per l’usuario dove si reflessa i cambi nello modello. Il modello non devo avere conoscimiento diretto sulla vista. Purtroppo, il pattern Observador può essere utilizato per provedere di certa indirezione tra il modello e la vista permitiendo al modello notificare agli interesati di qualce cambio. Il controllatore non pasa oggetti del dominio alla vista benche può dare la ordine alla vista per che se attualize. 5. L’interfacia di usuario aspetta nuovi itterazioni dil usuario, cominziando il ciclo di nuovo. DIAGRAMA VENTAGGI (1) Menore accoppiamento Desacopla le viste del modello Desacopla i modelli de la forma in cui se mostrano e se introduceno i dati. Maggiore cohesión Ogni elemento del pattern sta altamente spezialiti nella loro tarea (la vista mostrare dati al usuario, il controllatore negli entrati e il modello nello suo oggetto di negozio. Maggiore facilità per lo sviluppo de clienti ricci in molteplice dispositivi e canali Una vista per ogni dispositivo secondo le loro caratterische Una vista per la Web e un altra per applicazioni di desktop VENTAGGI (2) Le viste forniscono di Maggiore flessibilità e agilità Se può creare moltiplice viste di uno stesso modello Se può creare, agiungere, modificare e eliminare nuovi viste dinamicamente Le viste se possono anidare Se può cambiare il modo in cui una vista risponde al usuario senza cambiare la sua rappresentazione visuale Se può sincronizare le viste Se possono concentrare in diversi aspetti del modello Più clarità de disegno Più clarità de disegno Maggiore escalabilità PATTERN IN MVC (1) Un pattern d’archittetura può contenere diversi pattern de disegno. Il MVC può contenere le seguente pattern: 1. Observer: Per il mecanismo di publicazione e soscrizione che permette la notificazione dei cambi nel modello alle viste. 2. Composite: per la creazione di viste complessi. Utilizando queste pattern possiamo creare una gerarchia de viste e tratare a ogni vista complessa lo stesso che a una visa normale. 3. Strategy: è la relazione sulle viste e i controllatori.Utilizando queste pattern possiamo cambiare dinamicamente o in tempo di compilazione gli algoritmi del controllatore con in cuale risponde al suo entorno. PATTERN IN MVC (1) 4. Factory Method: per specificare la clase controllatore predeterminada de una vista. 5. Decorador: per aiungere capacità addizionale alla vista (per esempio scroll...) 6. Proxy: per distribuire la archittetura (Modello e Vista-Controllotore) in diversi precetti. BCE Boundary Control Entity INTRODUZIONE La maggiore parte delle classe definite durante l’analise di requerimenti rappresentano oggetti sulle quali la informazione sarà conservata nella DB del sistema. Separa logica applicativa da presentazione e da dati presentati all’utente: • Esaminare ciascun caso d’uso • “Coordinamento” tra modello di navigazione e modello concettuale • Si fara’ evolvere in modello di design ELEMENTI PRINCIPALI (1) Tomando una archittetura in 4 nivelli, parliamo di 4 tipi di classe: Persistent database classes (D), corrisponde a classe della aplicazione e describe che sarà conservato continuamente nella DB del sistema. Entity classes (E), rappresentano in memoria, strutturi persistente per classe di DB. Boundary classes (B), specificano funzioni de interfaccia. Controll classes (C), specificano funzioni logiche di negozio. ELEMENTI PRINCIPALI (2) Boundary class Describe gli oggetti che rappresentano la interfaccia tra un attore e il sistema. Permette la demostrazione visuale o l’effetto sonoro A menudo persiste più avanti della eseguizione sola del programa. ELEMENTI PRINCIPALI (3) Control class Describe gli oggetti che interceptano acontecimenti di entrata di usuario e controllano la eseguizione di un proceso di negozio. Rappresenta azzioni e le attività di un caso di uso Con frecuenzia non persistono più avanti della eseguizione del programa. ELEMENTI PRINCIPALI (4) Entity class Describe gli oggetti che rappresentano la semántica di entità in un uso. Corresponde a una struttura di dati nella DB del sistema Sempre persistono più avanti della eseguizione del programa. ELEMENTI PRINCIPALI (5) FLUSSO DI CONTROLLO (1) Esempio pe capire il flusso di controllo Partendo di queste analise FLUSSO DI CONTROLLO (2) DIAGRAMA Control Package Actor Boundary Package Entity Package MVC & BCE MVC & BCE (1) Nel modello BCE, la struttura è totalmente orizzontale. Tra gli strati di Boundary ed Entity si interpone lo strato di Control. Nel modello MVC, la struttura è maggiormente interconnessa in cui i blocchi strutturali sono posti ai vertici di un triangolo i cui lati rappresentano i canali di comunicazione tra i blocchi. Nel modello BCE, lo strato di Entity rappresenta la pura ontologia dei dati. Nel modello MVC, il Model diventa un’entità attiva a tutti gli effetti MVC & BCE (2) Nel modello BCE, lo strato di Controllo opera da layer intermedio tra i livelli di Boundary e di Entity. Nel modello MVC, prevedono meccanismi di notifica diretta, alle Viste, dei cambiamenti del Modello.