MVC, avagy a model-view-controller

Az MVC az ún. szerkezeti minták közé tartozik. A szerkezeti minta egy olyan rendezőelv, amely a teljes program szerkezetét befolyásolja.

Lássunk szerkezeti mintákra egy analógiát.

Képzeljük el a ruhásszekrényünket, ez lesz a programunk. A program rengeteg egységből (szaknyelven objektumból) áll, ahogyan a ruhásszekrény is rengeteg ruhát tud tartalmazni. A ruhásszerkrényt sokféleképpen rendezhetjük, kezdve onnan, hogy mindent össze-vissza pakolunk benne, éppen oda, ahova fér, egészen addig, míg valamilyen konkrét rendezőelv szerint határozzuk meg azt, hogy mi hova fog kerülni: pl. külön a nadrágok, külön a pólók, külön a zoknik, vagy lehetséges természetesen úgy is rendezni, hogy külön a piros ruhadarabok, külön a fehérek, külön a feketék és a zöldek. Mindkét elrendezésnek lehetnek előnyei is, hátrányai is, de a lényeg, hogy bármelyiket is használjuk, megkönnyíti egy ruhadarab megtalálását, kicserélését egy másikra…

A programot is lehetséges megírni különösebb belső struktúra nélkül (ez a spagetti-kód – az elnevezés onnan származik, hogy ha egy tál spagettiben megfogunk egy szálat, akkor jön vele az összes többi, azaz nincsenek benne külön, független részek, amiket külön lehetne kezelni, ahogyan a szekrény egy-egy polcát tudnánk).
Egy program elemeibe is lehet struktúrát vinni, ezeket határozzuk meg a szerkezeti mintákkal.

Az egyik ezek közül a model-view-controller, amely három „polcot” határoz meg a programunk alkotóelemeinek.



A model (modell) rész az, amely az adataink és a köztük lévő kapcsolat leírásával foglalkozik. A példa kedvéért mondhatjuk azt, hogy egy Excel-táblázat adatai tartoznak ebbe a részbe.

A view (nézet) rész az, amely különféle szempontokból megjeleníti a model adatait, tehát az adatokból tud táblázatot rajzolni, de tud kördiagramot, oszlopdiagramot, és mindenféle egyebet is rajzolni. A táblázatos megjelenítési forma, a kördiagram és oszlopdiagram egy-egy view.

A controller (vezérlő) pedig az a része a programnak, ami azzal foglalkozik, hogy kezelje a felhasználótól származó műveletet, és ez alapján megváltoztassa a model adatait. Pl. jobbklikk menüben lévő paranccsal töröljük a sort, aminek hatására a táblázatból is, a kördiagramból is és az oszlopdiagramból is törlődnek a sorhoz tartozó adatok.

Egy program részegységeinek csoportosításakor jól járunk, ha olyan részeket hozunk létre, melyek nem függnek kölcsönösen egymástól – mindenki mindenkitől. Minél több kapcsolatot meg tudunk spórolni, annál egyszerűbb dolgunk lesz a program változtatásakor.
A modelt nem kell megváltoztatni sem akkor, ha a view változik, sem akkor, ha a controller, amivel összességében munkát spórolunk.

Ha szeretnél megtanulni programozni, és mélységeiben érteni az MVC-t, töltsd ki Alkalmas vagy-e programozónak? tesztünket!

A 2. rész a Vastagkliens és vékonykliens témájáról szólt.

Az 1. részben a Karakterkódolásokat tettük rendbe.

Az MVC egy elég haladó téma, amit igyekeztem közérthetően elővezetni.
A teljes mélységében való megértéshez szükséged van az általános programozási tudnivalókra (1-11. fejezet), az objektum-orientált programozás tudnivalóira (12-23. fejezet).
Ha megismerkednél a ezekkel a részekkel, segítünk:
Az első lépés, hogy kitöltsd a tesztünket,
Ha sikerül legalább 55%-ra kitöltened, ajándékként két hétig és az első 5 fejezetig belekóstolhatsz az oktatási rendszerünkbe.