{"id":251,"date":"2009-10-15T16:53:03","date_gmt":"2009-10-15T15:53:03","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=251"},"modified":"2010-09-06T19:40:00","modified_gmt":"2010-09-06T17:40:00","slug":"l004-mvc-model-view-controller","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/l004-mvc-model-view-controller\/","title":{"rendered":"L#004 &#8211; MVC &#8211; Model View Controller"},"content":{"rendered":"<p>MVC (Model View Controller) \u00e8 un pattern architetturale molto diffuso nella programmazione orientata agli oggetti, legato tra i tanti linguaggi anche ad Objective-C. Il modello MVC assegna agli oggetti di una applicazione uno di questi tre ruoli: <strong>MODEL<\/strong> (modello), <strong>VIEW<\/strong> (vista) o <strong>CONTROLLER<\/strong> (controllore). Il pattern definisce per\u00f2 non solo i loro ruoli, ma anche il modo con cui questi comunicano tra loro. Ogni oggetto \u00e8 separato dall&#8217;altro da dei &#8220;confini astratti&#8221; e comunica con gli oggetti di un altro tipo attraverso questi stessi confini.<br \/>\nMVC \u00e8 indispensabile per il design di applicazioni Cocoa e i benefici dell&#8217;adozione di questo schema sono molteplici.<!--more--><\/p>\n<p>Gli oggetti creati secondo questo modello, infatti, sono pi\u00f9 <strong>riusabili<\/strong> e le interfacce tendono ad essere pi\u00f9 <strong>definite<\/strong>. Le applicazioni basate secondo questo schema sono inoltre pi\u00f9 facilmente <strong>estendibili<\/strong> rispetto alle altre. Considerate inoltre che molte tecnologie e architetture Cocoa, cos\u00ec come quanto vedremo per la programmazione per iPhone, sono basate su MVC ed \u00e8 richiesto quindi che i vostri oggetti personalizzati seguano uno di questi tre ruoli.<\/p>\n<p><center><\/p>\n<div style=\"width: 450px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" title=\"MVC - Model View Controller\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/10\/model_view_controller.jpg\" alt=\"MVC - Model View Controller\" width=\"440\" height=\"125\" \/><\/p>\n<p class=\"wp-caption-text\">MVC &#8211; Model View Controller<\/p>\n<\/div>\n<p style=\"text-align: center;\">\n<p><\/center><\/p>\n<p>Dallo schema qui sopra si intuisce il funzionamento alla base di questo modello, potete vedere come gli oggetti coinvolti comunicano tra loro e allo stesso tempo siano indipendenti l&#8217;uno dall&#8217;altro.<\/p>\n<p>Quindi in definitiva abbiamo:<\/p>\n<ul>\n<li>il <strong>model<\/strong> (o modello) fornisce i metodi per accedere ai dati utili all&#8217;applicazione;<\/li>\n<li>la <strong>view<\/strong> (o vista) visualizza i dati contenuti nel model e si occupa dell&#8217;interazione con gli utenti;<\/li>\n<li>il <strong>controller<\/strong> (o controllore) riceve i comandi dell&#8217;utente (in genere attraverso la view) e li attua modificando lo stato degli altri due componenti<\/li>\n<\/ul>\n<p>La logica del programma (gestita dal controller), interfaccia utente (gestita dalla view) e i dati insieme alle propriet\u00e0 (gestiti dal model) sono quindi separati tra loro e gestibili in modo del tutto indipendente. <\/p>\n<p>Potete quindi intuire facilmente la potenza di questo modello di programmazione che permette, ad esempio, di modificare completamente una view senza intaccare il resto del programma. Non ci resta che addentrarci in questo mondo e scoprirne le sue infinite potenzialit\u00e0.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MVC (Model View Controller) \u00e8 un pattern architetturale molto diffuso nella programmazione orientata agli oggetti, legato tra&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[9],"tags":[22,5,17],"class_list":["post-251","post","type-post","status-publish","format-standard","hentry","category-guide-teoriche","tag-mvc","tag-objective-c","tag-teoria"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=251"}],"version-history":[{"count":13,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/251\/revisions"}],"predecessor-version":[{"id":4325,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/251\/revisions\/4325"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}