Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [UML]Paradigma MVC

  1. #1
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510

    [UML]Paradigma MVC

    Non ho capito una cosa del paradigma model-view-controller.
    Model sono i dati e view le viste (quindi ad esempio i text field, ecc...).
    Controller a meno di necessità particolari dovrebbe essere l' unica classe che scrive il programmatore.
    Quindi se io uso un framework come Cocoa in Objective-C (o awt e swing in Java), le classi view ci sono già perché sono ad esempio JFrame e queste, le classi model ci sono già perché sono ad esempio le arraylist, per cui il programmatore si ritrova a scrivere solo le classi controller.
    Quindi qual'è il vantaggio rispetto al non usare il paradigma MVC?
    Uno dei vantaggi dell' MVC è quello di poter rendere delle parti del codice indipendenti dall' interfaccia grafica, quindi riutilizzabili.Ma visto che quando programmo scrivo solo le classi controller, e che le classi controller usano le classi view e le classi model, cosa posso riutilizzare del mio codice? Al momento non riesco a riutilizzare niente perché se all' interno della classe controller voglio utilizzare un altro framework in cui le classi view cambiano, devo riscrivere tutto.

    PS: Come linguaggio ho scelto UML perché si tratta di progettazione senza utilizzare un linguaggio specifico.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: [UML]Paradigma MVC

    Originariamente inviato da Who am I
    Non ho capito una cosa del paradigma model-view-controller.
    Model sono i dati e view le viste (quindi ad esempio i text field, ecc...).
    Controller a meno di necessità particolari dovrebbe essere l' unica classe che scrive il programmatore.
    Quindi se io uso un framework come Cocoa in Objective-C (o awt e swing in Java), le classi view ci sono già perché sono ad esempio JFrame e queste, le classi model ci sono già perché sono ad esempio le arraylist, per cui il programmatore si ritrova a scrivere solo le classi controller.
    Quindi qual'è il vantaggio rispetto al non usare il paradigma MVC?
    Uno dei vantaggi dell' MVC è quello di poter rendere delle parti del codice indipendenti dall' interfaccia grafica, quindi riutilizzabili.Ma visto che quando programmo scrivo solo le classi controller, e che le classi controller usano le classi view e le classi model, cosa posso riutilizzare del mio codice? Al momento non riesco a riutilizzare niente perché se all' interno della classe controller voglio utilizzare un altro framework in cui le classi view cambiano, devo riscrivere tutto.

    PS: Come linguaggio ho scelto UML perché si tratta di progettazione senza utilizzare un linguaggio specifico.
    ti dico solo che in java hai fatto un piccolo errorino, perché i dati non sono il model.
    prendi ad esempio JTable, hai un TableModel che al suo interno mantiene i dati (in un array), ma le funzionalità offerte dal modello sono diverse (e le vedi guardando le API).
    RTFM Read That F*** Manual!!!

  3. #3
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510

    Re: Re: [UML]Paradigma MVC

    Originariamente inviato da valia
    ti dico solo che in java hai fatto un piccolo errorino, perché i dati non sono il model.
    prendi ad esempio JTable, hai un TableModel che al suo interno mantiene i dati (in un array), ma le funzionalità offerte dal modello sono diverse (e le vedi guardando le API).
    Da quel che so la classe che gestisce i dati è sempre model in MVC, TableMode siccome gestisce entrambe penso sia model ma anche view.Puoi spiegarti meglio?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    No, il model MANTIENE i dati. Non li gestisce in senso stretto, non li crea, non li distrugge.
    E' il controller a crearli su richiesta dell'utente, è il controller a fornirli al model, c'è solo la notifica di un update (implementato in java come generazione di un evento).

    Guarda un po' qui
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    Il controller riceve la richiesta, elabora i risultati ed deve fornire una risposta "visuale". Il controller non si occupa di fornire la risposta visuale (che aggiungerebbe complessità a quanto già deve fare) perciò si limita a popolare una classe che contiene i risultati e passarla ad un altra classe che si occuperà di tradurli in una vista.

    la classe che contiene i risultati è il model, la classe che si occuperà di popolare una vista con quei dati è la view.

    senza scendere nei dettagli delle varie implementazioni (che cambiano molto l'una dall'altra) generalmente per ogni possibile richiesta al sistema ci saranno tre classi:

    un controller: accetta input elabora risultati memorizzandoli nel model
    un model: classe priva di logica che contiene i risultati da visualizzare
    una view: classe richiamata dal controller che riceverà in input il model e fornirà i risultati in maniera visiva.

    tutte e tre vanno sviluppate.

    EDIT:
    mi permetto di aggiungere che lo scopo di mvc non è quello di rendere il codice riutilizzabile ma quello di spalmare la complessita su almeno due attori distinti (controller e view). Se vuoi del codice riutilizzabile devi refattorizzare nell'ambito del controller (la parte dell'elaborazione) in ulteriori classi (generalmente dette di business) ma un controller nella sua interezza non è agnostico al 100% della view... si separa da essa solo in termini di responsabilità.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ecco perché non sono riuscita a spiegarlo così??
    RTFM Read That F*** Manual!!!

  7. #7
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    naaa, mi capita una volta su venti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.