Gå til innhold

MVC - skjønner det ikke helt


Anbefalte innlegg

Hei

 

Jeg prøver å forstå MVC (Model-View-Controller). Men sliter litt.... Det er fremdeles litt for mye magi for meg.

 

Har noen tips om bra linker/forklaringer?

 

Hvis noen har lyst til å se hva jeg sliter med, last ned her. Det er ikke mye kode, men hvordan får jeg JComboBoxen til å oppdatere seg?

Endret av anderlin
Lenke til kommentar
Videoannonse
Annonse
Model View Controller patternet går ut på at du har en kontroller som tar imot input fra bruker, f.ex hvis du hadde hatt tatt imot tallverdier via et tastatur, hadde du hatt en keylistener i en key-kontroller som hadde tatt imot verdien. Så sender kontrolleren verdien til modellen, som fyrer av en Model Changed Event som tas imot av viewet, som da oppdateres. [url="http://ootips.org/mvc-pattern.html"]MVC-Pattern[/url]
[code]
Litt ASCII Art :) (den så bedre ut der jeg bøffa'n fra)
                 +------------+
                |   Model    |
                +------------+
               /\ .          /\
               / .            \
              / .              \
             / .                \
            / \/                 \
     +------------+ <------ +------------+
     |    View    |         | Controller |
     +------------+ ......> +------------+
[/code]

For meg så virker det som du har hoppet over det essensielle i MVC ved å la modellen ta imot input fra bruker, som f.ex sliding og interaksjon med combobox.

Det virker heller ikke som du har laget egne view-klasser, som vil typisk si hvordan dataene skal presenteres, men heller bare brukt swings view uten å endre på dem. Det man kan bruke view til, er f.ex å vise ikoner istedenfor tall.

Når det gjelder at du ikke får oppdatert comboboxen, ville jeg tippe at du ikke utfører riktig kall (stateChanged) (eller stopper den eventen som ble sendt ut) for at viewet skal oppdateres.

Koden så grei nok ut, men kommentarer om hva du prøver å gjøre hadde gjort seg! - Lærte du ikke det i Menneske-Maskin Interaksjon
:p

Diplomoppaven kaller!
-Stig,
Lenke til kommentar

Takk for langt svar! Linken var veldig fin, og inneholdt enda flere gode linker. Skal se på dem nå.

 

Det virker heller ikke som du har laget egne view-klasser

 

Jeg brukte bare swing direkte, tenkte det ikke ville påvirke prinsippet å lage egne view-klasser. Men jeg skal prøve det, kanskje tar jeg helt feil.

 

For meg så virker det som du har hoppet over det essensielle i MVC ved å la modellen ta imot input fra bruker

 

Her skjønte jeg ikke hva du mente. Man kan da flytte på sliderene mine?

 

Når det gjelder at du ikke får oppdatert comboboxen, ville jeg tippe at du ikke utfører riktig kall (stateChanged) (eller stopper den eventen som ble sendt ut) for at viewet skal oppdateres.

 

Det er nok her problemet ligger, for dette skjønte jeg ikke. Skal se om linkene jeg fikk gjør meg klokere.

 

Koden så grei nok ut, men kommentarer om hva du prøver å gjøre hadde gjort seg! - Lærte du ikke det i Menneske-Maskin Interaksjon

 

Skal sette på noen kommentarer. Det er forresten MMI-eksamen jeg øver til nå, men det skjønte du kanskje.

 

Igjen takk for langt svar!

Endret av anderlin
Lenke til kommentar
Det virker heller ikke som du har laget egne view-klasser

Jeg brukte bare swing direkte, tenkte det ikke ville påvirke prinsippet å lage egne view-klasser. Men jeg skal prøve det, kanskje tar jeg helt feil.

En egen view klasse er det ikke så farlig at du implementerer, for du trenger ikke forandre på sliderne. Men for øvelsens skyld kan du jo prøve å erstatte tallene i komboboxen med et sett med ikoner.

For meg så virker det som du har hoppet over det essensielle i MVC ved å la modellen ta imot input fra bruker

Her skjønte jeg ikke hva du mente. Man kan da flytte på sliderene mine?

Jeg ville anbefale deg å lage en egen controller klasse som lytter etter at brukeren drar i sliderne eller bytter objekt i comboboxen.

Det er en fordel å skille den delen som har med modellen å gjøre og den delen som har med brukerinteraksjon å gjøre.

 

Lykke til på MMI examen! :thumbup:

-Stig,

Endret av Rolf_OLE
Lenke til kommentar
Jeg ville anbefale deg å lage en egen controller klasse som lytter etter at brukeren drar i sliderne eller bytter objekt i comboboxen.

Skal dette være en klasse som gjør følgende:

1. Legger seg til som lytter i modellen

2. Setter selectedItem i JComboBox når stateChanged blir avfyrt

3. Evt filtrerer etter ønske etc.

 

Eller har jeg misforstått...

 

Er veldig takknemlig for all hjelpen!

Lenke til kommentar

Skal dette være en klasse som gjør følgende:

      1. Legger seg til som lytter i modellen

      2. Setter selectedItem i JComboBox når stateChanged blir avfyrt

      3. Evt filtrerer etter ønske etc.

På sett og vis riktig

Kontrolleren skal IKKE lytte til modellen, derimot skal modellen lytte til hva kontrolleren har å si.

Modellen skal ikke ta imot noen informasjon fra brukeren, den skal først sendes via kontrolleren.

 

Egentlig har de fleste swing komponenter (sånn jeg har skjønt det) inndelt i en kontroller, modell og et view. Men som regel trenger man ikke bry seg om dette.

Kontrolleren tar imot informasjon fra brukeren, f.ex sliding eller seleksjon av objekter, modellen lagrer informasjonen, og viewet presenterer det.

 

En grunn til at du kunne ha bruk for å segregere kontroll og view hadde vært hvis du ville gjøre sånn at når du økte en verdi med en slider, så ville verdien synke i modellen, eller at verdien skulle øke med 10 for hver enkelt verdi du forandret med slideren.

 

Håper dette ga litt klarhet (og at ingen java-guruer der ute mener at jeg er helt på jordet) :ermm:

 

Ps... noen som har en jobb til meg? ;)

 

-Stig,

Lenke til kommentar
  • 2 måneder senere...
Litt ASCII Art :) (den så bedre ut der jeg bøffa'n fra)
                 +------------+
                |   Model    |
                +------------+
               /\ .          /\
               / .            \
              / .              \
             / .                \
            / \/                 \
     +------------+ <------ +------------+
     |    View    |         | Controller |
     +------------+ ......> +------------+

For en tid tilbake skrev jeg en artikkel om MVC modellen. Artikkelen tar for seg JavaServer Pages som underliggende teknologi, men prinsippet er jo det samme.

 

Sitat fra artikkelen:

 

Model-View-Controller arkitekturen benyttes for å dele et program inn i tre separate deler:

 


  •  
  • En controller - som sjekker for input og styrer hvilke deler av programmet som skal kjøres og hva som skal sendes tilbake til brukeren (les: Hvilke nettsider (JSP-sider) som skal kjøres
     
  • En Modell - som inneholder data som beskriver systemet
     
  • Et View - som fungerer som et presentasjonslag for data (modellen)
     

 

Hele artikkelen ligger her : JSP, Model 2 (MVC)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...