<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[MVC - Verbesserungsvorschläge?]]></title><description><![CDATA[<p>Hallo</p>
<p>Hoffe das ist jetzt richtig hier.<br />
Habe eine &quot;Dialog&quot;-klasse gebaut, mit entsprechendem View und so weiter, und wollt euch mal bitten das anzuschauen, ob das gut ist. Weil funktionieren tuts, aber vielleicht ist Design nicht schön. Vor allem mit dem Callback bin ich unsicher.</p>
<pre><code class="language-cpp">//.h
class FormulaDlg
:   public pat::Singleton&lt; FormulaDlg &gt;
{
public:
    std::string get_formula( const ViewFactory&amp; view_factory ) const;
    static void process( std::string input );
private:
    static std::string m_formula;
};

//.cpp
std::string FormulaDlg::m_formula = &quot;&quot;;

void FormulaDlg::process( std::string input )
{
    m_formula = input;
}

std::string FormulaDlg::get_formula( const ViewFactory&amp; view_factory ) const
{
    FormulaDlgView* formula_view = view_factory.create_formuladlg();
    formula_view-&gt;show( FormulaDlg::instance().process );
    delete formula_view;
    return m_formula;
}
</code></pre>
<pre><code class="language-cpp">//.h
class CLIFormulaDlgView
:   public FormulaDlgView
{
public:
    CLIFormulaDlgView()
	{}
	virtual ~CLIFormulaDlgView() {}
	virtual void show( void callback( std::string input ) ) const;
};

//.cpp
void CLIFormulaDlgView::show( void callback( std::string input ) ) const
{
    std::cout &lt;&lt; &quot;Enter a formula please:&quot; &lt;&lt; std::endl;
    std::string line;
    getline( std::cin, line );
    callback( line );
}
</code></pre>
<pre><code class="language-cpp">//Aufruf in der main()
std::string formula = FormulaDlg::instance().get_formula( CLIViewFactory::instance() );
</code></pre>
<p>Wäre also für jegliche Tipps dankbar.<br />
Und eine Frage hab ich auch noch: Was ist denn nun das Model und was der Controller? Weil hab ja beides in der Klasse FormulaDlg. Sollte man das trennen?</p>
<p>Vielen Dank schonmal<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/170963/mvc-verbesserungsvorschläge</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jul 2026 11:17:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170963.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 21 Jan 2007 13:43:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MVC - Verbesserungsvorschläge? on Sun, 21 Jan 2007 13:43:15 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Hoffe das ist jetzt richtig hier.<br />
Habe eine &quot;Dialog&quot;-klasse gebaut, mit entsprechendem View und so weiter, und wollt euch mal bitten das anzuschauen, ob das gut ist. Weil funktionieren tuts, aber vielleicht ist Design nicht schön. Vor allem mit dem Callback bin ich unsicher.</p>
<pre><code class="language-cpp">//.h
class FormulaDlg
:   public pat::Singleton&lt; FormulaDlg &gt;
{
public:
    std::string get_formula( const ViewFactory&amp; view_factory ) const;
    static void process( std::string input );
private:
    static std::string m_formula;
};

//.cpp
std::string FormulaDlg::m_formula = &quot;&quot;;

void FormulaDlg::process( std::string input )
{
    m_formula = input;
}

std::string FormulaDlg::get_formula( const ViewFactory&amp; view_factory ) const
{
    FormulaDlgView* formula_view = view_factory.create_formuladlg();
    formula_view-&gt;show( FormulaDlg::instance().process );
    delete formula_view;
    return m_formula;
}
</code></pre>
<pre><code class="language-cpp">//.h
class CLIFormulaDlgView
:   public FormulaDlgView
{
public:
    CLIFormulaDlgView()
	{}
	virtual ~CLIFormulaDlgView() {}
	virtual void show( void callback( std::string input ) ) const;
};

//.cpp
void CLIFormulaDlgView::show( void callback( std::string input ) ) const
{
    std::cout &lt;&lt; &quot;Enter a formula please:&quot; &lt;&lt; std::endl;
    std::string line;
    getline( std::cin, line );
    callback( line );
}
</code></pre>
<pre><code class="language-cpp">//Aufruf in der main()
std::string formula = FormulaDlg::instance().get_formula( CLIViewFactory::instance() );
</code></pre>
<p>Wäre also für jegliche Tipps dankbar.<br />
Und eine Frage hab ich auch noch: Was ist denn nun das Model und was der Controller? Weil hab ja beides in der Klasse FormulaDlg. Sollte man das trennen?</p>
<p>Vielen Dank schonmal<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1213722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1213722</guid><dc:creator><![CDATA[Nonconf]]></dc:creator><pubDate>Sun, 21 Jan 2007 13:43:15 GMT</pubDate></item><item><title><![CDATA[Reply to MVC - Verbesserungsvorschläge? on Tue, 23 Jan 2007 13:23:13 GMT]]></title><description><![CDATA[<p>*push*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215208</guid><dc:creator><![CDATA[nonconf]]></dc:creator><pubDate>Tue, 23 Jan 2007 13:23:13 GMT</pubDate></item><item><title><![CDATA[Reply to MVC - Verbesserungsvorschläge? on Tue, 30 Jan 2007 16:36:17 GMT]]></title><description><![CDATA[<p>*push* <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1219988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1219988</guid><dc:creator><![CDATA[nonconf]]></dc:creator><pubDate>Tue, 30 Jan 2007 16:36:17 GMT</pubDate></item><item><title><![CDATA[Reply to MVC - Verbesserungsvorschläge? on Tue, 30 Jan 2007 16:46:04 GMT]]></title><description><![CDATA[<p>Oh man, du armer. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>OK, ich versuche mal den Code zu analysieren... so wie ich das sehe, ist da nichts von MVC zu sehen. Eigentlich sehe ich da nur Views. Alleine die Namen (...Dlg, ...View) sollten dich hier stutzig machen.</p>
<p>Ein Model im MVC-Sinne gibt es in deinem Bsp. nicht. Klar, irgendwo kommt formula vom Typ String zurück. Das sind zwar Daten, aber der Sinn und Zweck von MVC hat das nichts zu tun.</p>
<p>Naja, hoffe ich konnte dir helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1219997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1219997</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 30 Jan 2007 16:46:04 GMT</pubDate></item><item><title><![CDATA[Reply to MVC - Verbesserungsvorschläge? on Tue, 30 Jan 2007 16:54:20 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Oh man, du armer. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Oh, ich bin doch nicht unsichtbar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<blockquote>
<p>OK, ich versuche mal den Code zu analysieren... so wie ich das sehe, ist da nichts von MVC zu sehen. Eigentlich sehe ich da nur Views. Alleine die Namen (...Dlg, ...View) sollten dich hier stutzig machen.</p>
</blockquote>
<p>Warum ist das kein MVC? Was stimmt nicht mit den Namen?<br />
Dachte der Dlg wär das Model und das View halt die &quot;graphische&quot; Repräsentation...is dem nicht so?</p>
<blockquote>
<p>Ein Model im MVC-Sinne gibt es in deinem Bsp. nicht. Klar, irgendwo kommt formula vom Typ String zurück. Das sind zwar Daten, aber der Sinn und Zweck von MVC hat das nichts zu tun.</p>
</blockquote>
<p>Was ist denn falsch?</p>
<blockquote>
<p>Naja, hoffe ich konnte dir helfen.</p>
</blockquote>
<p>Naja, ein bisschen, danke. Jetzt weis ich schonmal, dass ich aufm Holzweg bin.<br />
Hast du nen Link zu ner guten Implementation vom MVC Pattern? Oder kannst dus mir vielleicht erklären was ich falsch mach? Wär echt nett <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220008</guid><dc:creator><![CDATA[Nonconf]]></dc:creator><pubDate>Tue, 30 Jan 2007 16:54:20 GMT</pubDate></item><item><title><![CDATA[Reply to MVC - Verbesserungsvorschläge? on Tue, 30 Jan 2007 18:26:33 GMT]]></title><description><![CDATA[<p><a href="http://home.earthlink.net/~huston2/dp/patterns.html" rel="nofollow">http://home.earthlink.net/~huston2/dp/patterns.html</a></p>
<p>Ich vermisse auch irgendwie das Control Element in deinen Code. Artchi hat Recht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220076</guid><dc:creator><![CDATA[Prof84]]></dc:creator><pubDate>Tue, 30 Jan 2007 18:26:33 GMT</pubDate></item><item><title><![CDATA[Reply to MVC - Verbesserungsvorschläge? on Tue, 30 Jan 2007 18:51:35 GMT]]></title><description><![CDATA[<p>Hmmm, auf der Seite find ich kein MVC, oder heisst das da anders?<br />
Hier ist mein Controller:</p>
<pre><code class="language-cpp">void Controller::run( const ViewFactory&amp; view_factory )
{
    for(;;)
    {
        switch( CmdDlg::instance().get_cmd( view_factory ) )
        {
            case CmdDlg::calc:
            {
                std::string formula = FormulaDlg::instance().get_formula( view_factory );

                // Do something with formula

                break;
            }
            case CmdDlg::end:
            {
                std::cout &lt;&lt; &quot;Closing&quot; &lt;&lt; std::endl;
                return;
            }
        }
    }
}
</code></pre>
<p>Das Artchi recht hat hilft mir nicht wirklich weiter.<br />
Wär für konkrete Tipps wirklich denkbar dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220085</guid><dc:creator><![CDATA[Nonconf]]></dc:creator><pubDate>Tue, 30 Jan 2007 18:51:35 GMT</pubDate></item><item><title><![CDATA[Reply to MVC - Verbesserungsvorschläge? on Tue, 30 Jan 2007 21:45:47 GMT]]></title><description><![CDATA[<p>Es bringt nichts, wenn du uns hier deine Implementierungen zeigst. MVC ist ein Pattern, also ein Konzept oder Idee. Diese lassen sich immer unterschiedlich implementieren. Wichtig ist nur, das du das MVC verstehst, aber das sieht absolut nicht so aus.</p>
<p>Weißt du überhaupt wo der Sinn des ganzen steckt? Der Sinn ist ganz einfach: die View (Darstellung) und das Model (Daten) sollen von einander unterschiedlich austauschbar sein. Ein beliebtes Beispiel ist ein Homepage-Designer bzw. -Editor. Du kennst sicherlich Programme wie NVU? (obwohl ein Browser auch als Beispiel herhalten kann) Das Model ist ein String-Typ. Die Daten darin sind erstmal unwichtig. Vorzugsweise ist es gültiger HTML-Code. So, und die View (das ist der Clou am ModelView-Pattern!) ist beliebig austauschbar. NVU hat mind. 2 View: einen ASCII-View und einen HTML-Renderer. Als dritte View gibts noch so einen HTML-Tag-View. Aber wichtig bei der Sache ist: alle drei Views greifen auf das EINE Model zu!!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> Das Model ist immer ein und der selbe String, aber die Views können beliebig ausgetauscht werden, weil die Views auf das Model zugreifen.</p>
<p>Das Konzept ist auf alle anderen Anwendungsbereiche übertragbar: Musik-Software. Die Sounddaten (Hz-Samples) liegen Binär vor. Jetzt kann man dazu eine Textview programmieren (der User kann die Samples als Hz-Zahlen anschauen) und eine grafische View (Hz-Kurve).</p>
<p>Der Controller kann manchmal weggelassen werden, weil er z.B. schon in der View mit drin ist. Das wird z.B. im Java Swing so gehandhabt. Du kannst den Controller auch extra designen.</p>
<p>Wichtig ist, das du dir Interfaces für das Model baust, so das die Views einheitlich auf das Interface zugreifen können. Wie du das machst, ist dir überlassen, da das MVC nur ein Pattern ist.</p>
<p>Hier noch ein Bild, um die Beziehungen zu zeigen:<br />
<a href="http://java.sun.com/blueprints/patterns/images/mvc-structure-generic.gif" rel="nofollow">http://java.sun.com/blueprints/patterns/images/mvc-structure-generic.gif</a></p>
<p>Schau mal hier:<br />
<a href="http://csis.pace.edu/~bergin/mvc/gauge.jpg" rel="nofollow">http://csis.pace.edu/~bergin/mvc/gauge.jpg</a><br />
Vier Views! Eine Temperatur! Die Temperatur kann sowohl als Fahrenheit, in Celsius, als Slider und als Termometer dargestellt werden. Aber alle 4 Views greifen auf eine Model-Instanz zu. Und wenn man als Benutzer an einer View was ändert (z.B. den Slider bewegt), ändern sich alle anderen 3 Views mit, weil der Controller alle Views über Änderungen informiert.</p>
<p>Achja, dein FormulaDlg hat mit MVC nichts zu tun. Das Ding ist einfach nur ein notwendiges Übel. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> CLIFormulaDlgView ist dann schon eher ein View des MVC. Aber eigentlich ist ja das Eingabefeld und Ausgabefeld der Formel die View. Und die Formel, ist das Model.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220213</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 30 Jan 2007 21:45:47 GMT</pubDate></item><item><title><![CDATA[Reply to MVC - Verbesserungsvorschläge? on Tue, 30 Jan 2007 21:52:09 GMT]]></title><description><![CDATA[<p><a href="http://www.schule.de/schulen/oszhdl/gymnasium/faecher/informatik/ooa-ood/mvc_0.htm" rel="nofollow">http://www.schule.de/schulen/oszhdl/gymnasium/faecher/informatik/ooa-ood/mvc_0.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220219</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 30 Jan 2007 21:52:09 GMT</pubDate></item><item><title><![CDATA[Reply to MVC - Verbesserungsvorschläge? on Wed, 31 Jan 2007 13:29:20 GMT]]></title><description><![CDATA[<p>Ach so langsam versteh ich. Danke.<br />
Irgendwie ist das in Marcus Bäckmanns Buch komisch beschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220483</guid><dc:creator><![CDATA[Nonconf]]></dc:creator><pubDate>Wed, 31 Jan 2007 13:29:20 GMT</pubDate></item><item><title><![CDATA[Reply to MVC - Verbesserungsvorschläge? on Wed, 31 Jan 2007 13:59:08 GMT]]></title><description><![CDATA[<p>sag das nicht so laut, ich hab gehoert der ist hier irgendwie mit dem admin verwandt oder so...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220506</guid><dc:creator><![CDATA[rapso@work]]></dc:creator><pubDate>Wed, 31 Jan 2007 13:59:08 GMT</pubDate></item></channel></rss>