M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i...

24
M V C M V C Model View Controller Model View Controller

Transcript of M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i...

Page 1: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

M V CM V C

Model View ControllerModel View Controller

Page 2: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

INTRODUZIONEINTRODUZIONE È un pattern di archittetura di software che È un pattern di archittetura di software che

separa i dati della aplicazione, la interfacia del separa i dati della aplicazione, la interfacia del usuario e la logica di controllo in 3 componenti usuario e la logica di controllo in 3 componenti diversi.diversi.

Se usa di solito in aplicazioni web, dove la View è Se usa di solito in aplicazioni web, dove la View è la pagina HTML, il Controller è il codice che la pagina HTML, il Controller è il codice che fornisce i dati dinamici alla pagina e il Model fornisce i dati dinamici alla pagina e il Model contiene le classi rappresentativi della contiene le classi rappresentativi della aplicazione (come il messaggio di un foro…)aplicazione (come il messaggio di un foro…)

Page 3: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

ELEMENTI PRINCIPALI ELEMENTI PRINCIPALI (1)(1)

È È normale pensare che una applicazione ha 3 normale pensare che una applicazione ha 3 elementi principali: presentazione (IU), dominio e elementi principali: presentazione (IU), dominio e acceso a i dati. In MVC, l’elemento di acceso a i dati. In MVC, l’elemento di presentazione sta repartita in controller e view. La presentazione sta repartita in controller e view. La principale separazione si da tra presentazione e principale separazione si da tra presentazione e dominio; la separazacione tra V/C è meno chiara.dominio; la separazacione tra V/C è meno chiara.

MVC divide una applicazione in 3 zone: MVC divide una applicazione in 3 zone: procesamiento, uscita ed entrata. procesamiento, uscita ed entrata.

Per questo, utiliza le seguente abstrazioni:Per questo, utiliza le seguente abstrazioni:

Page 4: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

ELEMENTI PRINCIPALI ELEMENTI PRINCIPALI (2)(2)

Modello: questa è la rappresentazione specifica del dominio Modello: questa è la rappresentazione specifica del dominio della informazione sulla qual funziona la applicazione. Il della informazione sulla qual funziona la applicazione. Il modello è altra forma di chiamare all’elemento del dominio. modello è altra forma di chiamare all’elemento del dominio. La logica del dominio aiunge significato a i dati.La logica del dominio aiunge significato a i dati.

Vista: presenta il modello in un formato adecuato per Vista: presenta il modello in un formato adecuato per interattuare, di solito un elemento della interfacia di usuario.interattuare, di solito un elemento della interfacia di usuario.

Controllatore: risponde a eventi, di solito azzioni del usuario Controllatore: risponde a eventi, di solito azzioni del usuario e invoca cambii nello modello e probabilimente nella vista.e invoca cambii nello modello e probabilimente nella vista.

Molti applicazioni usano un mecanismo di almacenamiento Molti applicazioni usano un mecanismo di almacenamiento persistente (come può essere una DB) per almacenare i dati. persistente (come può essere una DB) per almacenare i dati. MVC non parlo direttamente di questa capa di acceso a i MVC non parlo direttamente di questa capa di acceso a i dati.dati.

Page 5: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

FLUSSO DI CONTROLLO FLUSSO DI CONTROLLO (1)(1)

Benche si possono trovare diversi implementazioni di MVC, il Benche si possono trovare diversi implementazioni di MVC, il flusso che sigue il controllo di solito è il siguente:flusso che sigue il controllo di solito è il siguente:

1.1. Il usuario interattua con la interfacia di usuario di alcuna Il usuario interattua con la interfacia di usuario di alcuna forma (per esempio, preme un tasto, collegamento).forma (per esempio, preme un tasto, collegamento).

2.2. Il controllatore riceve (per parti degli oggetti della Il controllatore riceve (per parti degli oggetti della interfacia-vista) la notificazione dell’azione richiesta per interfacia-vista) la notificazione dell’azione richiesta per l’usuario. Il controllatore gestiona l’evento che arriva, l’usuario. Il controllatore gestiona l’evento che arriva, frequentemente a traverso de in gestore di evenit (handler o frequentemente a traverso de in gestore di evenit (handler o callback).callback).

3.3. Il controllatore accede al modello, attualizandolo, Il controllatore accede al modello, attualizandolo, posibilemente modificandolo di forma adecuata alla azione posibilemente modificandolo di forma adecuata alla azione richiesta per l’usuario. I controllatori complessi stanno di richiesta per l’usuario. I controllatori complessi stanno di solito strutturati usando un pattern di comando che solito strutturati usando un pattern di comando che encapsula gli azioni e semplifica la loro estensione.encapsula gli azioni e semplifica la loro estensione.

Page 6: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

FLUSSO DI CONTROLLO FLUSSO DI CONTROLLO (2)(2)

4.4. Il controllatore delega agli oggetti de la vista, la tarea Il controllatore delega agli oggetti de la vista, la tarea di desplegare l’interfacia d’usuario. La vista riceve i di desplegare l’interfacia d’usuario. La vista riceve i dati del modello per gestire la interfacia adecuata per dati del modello per gestire la interfacia adecuata per l’usuario dove si reflessa i cambi nello modello. Il l’usuario dove si reflessa i cambi nello modello. Il modello non devo avere conoscimiento diretto sulla modello non devo avere conoscimiento diretto sulla vista. Purtroppo, il pattern Observador può essere vista. Purtroppo, il pattern Observador può essere utilizato per provedere di certa indirezione tra il utilizato per provedere di certa indirezione tra il modello e la vista permitiendo al modello notificare modello e la vista permitiendo al modello notificare agli interesati di qualce cambio. Il controllatore non agli interesati di qualce cambio. Il controllatore non pasa oggetti del dominio alla vista benche può dare la pasa oggetti del dominio alla vista benche può dare la ordine alla vista per che se attualize.ordine alla vista per che se attualize.

5.5. L’interfacia di usuario aspetta nuovi itterazioni dil L’interfacia di usuario aspetta nuovi itterazioni dil usuario, cominziando il ciclo di nuovo.usuario, cominziando il ciclo di nuovo.

Page 7: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

DIAGRAMADIAGRAMA

Page 8: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

VENTAGGI (1)VENTAGGI (1) Menore accoppiamentoMenore accoppiamento

Desacopla le viste del modelloDesacopla le viste del modello Desacopla i modelli de la forma in cui se mostrano e se Desacopla i modelli de la forma in cui se mostrano e se

introduceno i dati.introduceno i dati. Maggiore cohesiónMaggiore cohesión

Ogni elemento del pattern sta altamente spezialiti nella Ogni elemento del pattern sta altamente spezialiti nella loro tarea (la vista mostrare dati al usuario, il loro tarea (la vista mostrare dati al usuario, il controllatore negli entrati e il modello nello suo oggetto di controllatore negli entrati e il modello nello suo oggetto di negozio.negozio.

Maggiore facilità per lo sviluppo de clienti ricci in molteplice dispositivi Maggiore facilità per lo sviluppo de clienti ricci in molteplice dispositivi e canalie canali

Una vista per ogni dispositivo secondo le loro Una vista per ogni dispositivo secondo le loro caratterischecaratterische

Una vista per la Web e un altra per applicazioni di Una vista per la Web e un altra per applicazioni di desktopdesktop

Page 9: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

VENTAGGI (2)VENTAGGI (2) Le viste forniscono di Maggiore flessibilità e agilitàLe viste forniscono di Maggiore flessibilità e agilità

Se può creare moltiplice viste di uno stesso modelloSe può creare moltiplice viste di uno stesso modello Se può creare, agiungere, modificare e eliminare Se può creare, agiungere, modificare e eliminare

nuovi viste dinamicamentenuovi viste dinamicamente Le viste se possono anidareLe viste se possono anidare Se può cambiare il modo in cui una vista risponde al Se può cambiare il modo in cui una vista risponde al

usuario senza cambiare la sua rappresentazione usuario senza cambiare la sua rappresentazione visualevisuale

Se può sincronizare le visteSe può sincronizare le viste Se possono concentrare in diversi aspetti del modelloSe possono concentrare in diversi aspetti del modello

Più clarità de disegnoPiù clarità de disegno Più clarità de disegnoPiù clarità de disegno Maggiore escalabilitàMaggiore escalabilità

Page 10: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

PATTERN IN MVC (1)PATTERN IN MVC (1)

Un pattern d’archittetura può contenere diversi Un pattern d’archittetura può contenere diversi pattern de disegno. Il MVC può contenere le pattern de disegno. Il MVC può contenere le seguente pattern:seguente pattern:

1.1. Observer: Per il mecanismo di publicazione e soscrizione che Observer: Per il mecanismo di publicazione e soscrizione che permette la notificazione dei cambi nel modello alle viste.permette la notificazione dei cambi nel modello alle viste.

2.2. Composite: per la creazione di viste complessi. Utilizando Composite: per la creazione di viste complessi. Utilizando queste pattern possiamo creare una gerarchia de viste e queste pattern possiamo creare una gerarchia de viste e tratare a ogni vista complessa lo stesso che a una visa tratare a ogni vista complessa lo stesso che a una visa normale.normale.

3.3. Strategy: è la relazione sulle viste e i controllatori.Utilizando Strategy: è la relazione sulle viste e i controllatori.Utilizando queste pattern possiamo cambiare dinamicamente o in queste pattern possiamo cambiare dinamicamente o in tempo di compilazione gli algoritmi del controllatore con in tempo di compilazione gli algoritmi del controllatore con in cuale risponde al suo entorno.cuale risponde al suo entorno.

Page 11: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

PATTERN IN MVC (1)PATTERN IN MVC (1)

4.4. Factory Method: per specificare la clase controllatore Factory Method: per specificare la clase controllatore predeterminada de una vista.predeterminada de una vista.

5.5. Decorador: per aiungere capacità addizionale alla vista Decorador: per aiungere capacità addizionale alla vista (per esempio scroll...)(per esempio scroll...)

6.6. Proxy: per distribuire la archittetura (Modello e Vista-Proxy: per distribuire la archittetura (Modello e Vista-Controllotore) in diversi precetti.Controllotore) in diversi precetti.

Page 12: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

B C EB C E

Boundary Control EntityBoundary Control Entity

Page 13: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

INTRODUZIONEINTRODUZIONE La maggiore parte delle classe definite durante La maggiore parte delle classe definite durante

l’analise di requerimenti rappresentano oggetti l’analise di requerimenti rappresentano oggetti sulle quali la informazione sarà conservata nella sulle quali la informazione sarà conservata nella DB del sistema.DB del sistema.

Separa logica applicativa da presentazione e da Separa logica applicativa da presentazione e da dati presentati all’utente:dati presentati all’utente:

• • Esaminare ciascun caso d’usoEsaminare ciascun caso d’uso

• “• “Coordinamento” tra modello di navigazione e Coordinamento” tra modello di navigazione e modello concettualemodello concettuale

• • Si fara’ evolvere in modello di designSi fara’ evolvere in modello di design

Page 14: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

ELEMENTI PRINCIPALI ELEMENTI PRINCIPALI (1)(1)

Tomando una archittetura in 4 nivelli, Tomando una archittetura in 4 nivelli, parliamo di 4 tipi di classe:parliamo di 4 tipi di classe: Persistent database classes (D), corrisponde a Persistent database classes (D), corrisponde a

classe della aplicazione e describe che sarà classe della aplicazione e describe che sarà conservato continuamente nella DB del sistema.conservato continuamente nella DB del sistema.

Entity classes (E), rappresentano in memoria, Entity classes (E), rappresentano in memoria, strutturi persistente per classe di DB.strutturi persistente per classe di DB.

Boundary classes (B), specificano funzioni de Boundary classes (B), specificano funzioni de interfaccia.interfaccia.

Controll classes (C), specificano funzioni Controll classes (C), specificano funzioni logiche di negozio.logiche di negozio.

Page 15: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

ELEMENTI PRINCIPALI ELEMENTI PRINCIPALI (2)(2)

Boundary classBoundary class Describe gli oggetti che rappresentano la Describe gli oggetti che rappresentano la

interfaccia tra un attore e il sistema.interfaccia tra un attore e il sistema.

Permette la demostrazione visuale o l’effetto Permette la demostrazione visuale o l’effetto sonorosonoro

A menudo persiste più avanti della eseguizione A menudo persiste più avanti della eseguizione sola del programa.sola del programa.

Page 16: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

ELEMENTI PRINCIPALI ELEMENTI PRINCIPALI (3)(3)

Control classControl class Describe gli oggetti che interceptano Describe gli oggetti che interceptano

acontecimenti di entrata di usuario e acontecimenti di entrata di usuario e controllano la eseguizione di un proceso di controllano la eseguizione di un proceso di negozio.negozio.

Rappresenta azzioni e le attività di un caso di Rappresenta azzioni e le attività di un caso di usouso

Con frecuenzia non persistono più avanti della Con frecuenzia non persistono più avanti della eseguizione del programa.eseguizione del programa.

Page 17: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

ELEMENTI PRINCIPALI ELEMENTI PRINCIPALI (4)(4)

Entity classEntity class Describe gli oggetti che rappresentano la Describe gli oggetti che rappresentano la

semántica di entità in un uso.semántica di entità in un uso.

Corresponde a una struttura di dati nella DB Corresponde a una struttura di dati nella DB del sistemadel sistema

Sempre persistono più avanti della Sempre persistono più avanti della eseguizione del programa.eseguizione del programa.

Page 18: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

ELEMENTI PRINCIPALI ELEMENTI PRINCIPALI (5)(5)

Page 19: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

FLUSSO DI CONTROLLO FLUSSO DI CONTROLLO (1)(1)

Esempio pe capire il flusso di controlloEsempio pe capire il flusso di controllo Partendo di queste analisePartendo di queste analise

Page 20: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

FLUSSO DI CONTROLLO FLUSSO DI CONTROLLO (2)(2)

Page 21: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

DIAGRAMADIAGRAMA

Actor

BoundaryPackage

ControlPackage

EntityPackage

Page 22: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

M V C & B C EM V C & B C E

Page 23: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

MVC & BCE (1)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

Page 24: M V C Model View Controller. INTRODUZIONE È un pattern di archittetura di software che separa i dati della aplicazione, la interfacia del usuario e la.

MVC & BCE (2)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.