<?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[Projektaufteilung in Classes]]></title><description><![CDATA[<p>Guten Morgen.</p>
<p>Ich bin gerade dabei mein erstes mittelgroßes Projekt zu planen.<br />
Leider habe ich das Konzept von OO noch nicht ganz verstanden - so scheint es nämlich. Müsst ich sonst diese Frage hier stellen?</p>
<p>Vielleicht könnt ihr mir helfen, zu sagen in welche Klassen ich das Projekt aufteilen sollte?</p>
<p>Es geht um folgendes:</p>
<p>Nachdem man mein Programm aufgerufen hat, erscheint ein Login-Formular.<br />
Der User kann ein Haken setzen, damit die Logindaten gemerkt werden.<br />
Nun hat er ein Menü vor sich, welches die Punkte<br />
&quot;New&quot;, &quot;inbox&quot;, &quot;settings&quot;, ... beinhaltet.<br />
Klickt er auf New, kann er eine Handynummer und eine SMS eintippen.<br />
Wenn er sie absendet:<br />
a) prüft der Rechner, ob er mit dem Internet verbunden ist<br />
b) versucht er sie über ein Onlinedienst zu versenden<br />
c) ansonsten sendet er sie per GSM Moden.</p>
<p>Ich stehe gerade am Anfang, habe gerade mal die Funktionen<br />
haveInternet(), sendGSM(), postHTTP(). Der rest ist direkt in der main() Methode implementiert.</p>
<p>Trotzdem ist das &quot;gerade-mal&quot; 200Zeilen Projekt einfach nur absolut unübersichtlich.<br />
Könnt ihr mir da unter die Arme greifen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/294255/projektaufteilung-in-classes</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 23:30:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/294255.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Oct 2011 06:19:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 06:19:41 GMT]]></title><description><![CDATA[<p>Guten Morgen.</p>
<p>Ich bin gerade dabei mein erstes mittelgroßes Projekt zu planen.<br />
Leider habe ich das Konzept von OO noch nicht ganz verstanden - so scheint es nämlich. Müsst ich sonst diese Frage hier stellen?</p>
<p>Vielleicht könnt ihr mir helfen, zu sagen in welche Klassen ich das Projekt aufteilen sollte?</p>
<p>Es geht um folgendes:</p>
<p>Nachdem man mein Programm aufgerufen hat, erscheint ein Login-Formular.<br />
Der User kann ein Haken setzen, damit die Logindaten gemerkt werden.<br />
Nun hat er ein Menü vor sich, welches die Punkte<br />
&quot;New&quot;, &quot;inbox&quot;, &quot;settings&quot;, ... beinhaltet.<br />
Klickt er auf New, kann er eine Handynummer und eine SMS eintippen.<br />
Wenn er sie absendet:<br />
a) prüft der Rechner, ob er mit dem Internet verbunden ist<br />
b) versucht er sie über ein Onlinedienst zu versenden<br />
c) ansonsten sendet er sie per GSM Moden.</p>
<p>Ich stehe gerade am Anfang, habe gerade mal die Funktionen<br />
haveInternet(), sendGSM(), postHTTP(). Der rest ist direkt in der main() Methode implementiert.</p>
<p>Trotzdem ist das &quot;gerade-mal&quot; 200Zeilen Projekt einfach nur absolut unübersichtlich.<br />
Könnt ihr mir da unter die Arme greifen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133896</guid><dc:creator><![CDATA[Claaas]]></dc:creator><pubDate>Fri, 21 Oct 2011 06:19:41 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 06:35:33 GMT]]></title><description><![CDATA[<p>Vielleicht solltest du erstmal mit etwas deutlich kleinerem anfangen, wenn du noch an Grundlagen wie Aufteilung in Klassen und Klassendesign arbeitest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133903</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 21 Oct 2011 06:35:33 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 07:43:37 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a>: Ich habe mich selbst gewundert. Normalerweiße fällt mir sowas nicht schwer - ganz im Gegensatz bei diesem Projekt.</p>
<p>Ansich würde ich daraus jetzt erst eine Klasse machen, welche sich um den versand kümmert. Sollte man das nicht aber eher in noch 2 kleinere aufteilen?<br />
Statt nur class sms_send lieber via_http &amp; via_gsm.</p>
<p>Mein Problem ist einfach, dass ich nicht weiß, wie &quot;tief&quot; ich trennen soll.<br />
Theoretisch könnte man ja sogar jede methode in eine eigene classe packen (was aber zumindest hier, quatsch wäre).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133926</guid><dc:creator><![CDATA[Claaas]]></dc:creator><pubDate>Fri, 21 Oct 2011 07:43:37 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 07:56:16 GMT]]></title><description><![CDATA[<p>Wie wärs mit:</p>
<pre><code class="language-cpp">class SmsSender
{
public:
   virtual ~SmsSender(){}
   virtual bool CanSend() const = 0;
   virtual void Send(const SMS&amp; sms) = 0;
};

class HttpSmsSender : public SmsSender
{
public:
   virtual bool CanSend() const override;
   virtual void Send(const SMS&amp; sms) override;
};

class GsmSmsSender : public SmsSender
{
public:
   virtual bool CanSend() const override;
   virtual void Send(const SMS&amp; sms) override;
};

class TwoWaySmsSender : public SmsSender
{
public:
   virtual bool CanSend() const override
   {
      return httpSender_.CanSend() || gsmSender_.CanSend();
   }
   virtual void Send(const SMS&amp; sms) override
   {
      if(httpSender_.CanSend())
      {
          httpSender_.Send(sms);
      }
      else if(gsmSender_.CanSend())
      {
          gsmSender_.Send(sms);
      }
      else
      {
          throw std::runtime_error(&quot;Failed to send sms&quot;);
      }
   }
private:
   HttpSmsSender httpSender_;
   GsmSmsSender gsmSender_;
};
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133932</guid><dc:creator><![CDATA[*Q* 1]]></dc:creator><pubDate>Fri, 21 Oct 2011 07:56:16 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 08:02:22 GMT]]></title><description><![CDATA[<p>Schau Dir eifach erst nochmal die wichtigsten Grundprinzipien der OOP an (<a href="http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29" rel="nofollow">SOLID</a>). Mit am wichtigsten ist oft das Single Responsibility Principle. Jede Klasse, jede Methode hat genau eine Zuständigkeit. Damit kannst du ausgehend von einem zunächst monolithischen Design deine Klassen in immer kleinere, sinnvollere Happen zerteilen. Zum Beispiel, wirst Du sicher eine Klasse für eine Nachricht haben. Diese hat die Eigenschaften Empfänger und Inhalt. Die einzige Verantwortlichkeit der Klasse ist es die Gültigkeit einer Nachricht sicherzustellen, z.B. das der Inhalt einer SMS immer &lt; xx Zeichen sein muss (das nennt man Invarianten). Dann wirst Du eine weitere Klasse haben, die sich um den Versand dieser Nachricht kümmert. Bzw. wirst Du wahrscheinlich eine Familie von solchen Klassen haben, eine für jede Versandart. Oder aber es ist nur eine Versenderklasse die unterschiedliche Protokolle, die wiederum Klassen sind verwendet. Was das optimale Design ist, stellt sich i.d.R. erst während der Implementierung heraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133935</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Fri, 21 Oct 2011 08:02:22 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 10:19:59 GMT]]></title><description><![CDATA[<p>Claaas schrieb:</p>
<blockquote>
<p>Leider habe ich das Konzept von OO noch nicht ganz verstanden - so scheint es nämlich. Müsst ich sonst diese Frage hier stellen?</p>
<p>Vielleicht könnt ihr mir helfen, zu sagen in welche Klassen ich das Projekt aufteilen sollte?</p>
</blockquote>
<p>Beginne mit der Erweiterung deines Verständnisses ganz unten:<br />
--&gt; ohne OOP: Es gibt nur Strukturen, keine Klassen<br />
--&gt; mit OOP: Aus Strukturen kann man Klassen mit eigener Funktionalität machen</p>
<p>Auch für Strukturen muss man sich einen sinnvollen Aufbau überlegen. Für Klassen kommt dann noch der Entwurf der Funktionalität hinzu und was man mit Klassen noch alles machen kann. Das alles zuerst mit sehr einfachen Anforderungen probieren. Wäre 'C mit Klassen'. Zum Verständnis gut, hier nur oft verpönt.</p>
<p>Ansonsten bleibt das Design eines Programmes immer die Hauptaufgabe jeder Programmentwicklung und die musst du selbst leisten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133998</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Fri, 21 Oct 2011 10:19:59 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 10:24:23 GMT]]></title><description><![CDATA[<p>Dein Projekt ruft nicht &quot;Bitte bau mich objektorientiert&quot;. Also laß es und erzwinge keine Klassen, wo sich nicht hingehören.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133999</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 21 Oct 2011 10:24:23 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 10:56:38 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Dein Projekt ruft nicht &quot;Bitte bau mich objektorientiert&quot;. Also laß es und erzwinge keine Klassen, wo sich nicht hingehören.</p>
</blockquote>
<p>Welches Projekt schreit denn wirklich nach OOP?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2134010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2134010</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Fri, 21 Oct 2011 10:56:38 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 11:06:41 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Dein Projekt ruft nicht &quot;Bitte bau mich objektorientiert&quot;. Also laß es und erzwinge keine Klassen, wo sich nicht hingehören.</p>
</blockquote>
<p>Welches Projekt schreit denn wirklich nach OOP?</p>
</blockquote>
<p>Allem voran Simulationen (kein Zufall, daß diese frühe OO-Sprache Simula hieß), und auch Armeenschiebespiele wie &quot;Age of Empires&quot; oder FPS wie &quot;Counter Strike&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2134014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2134014</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 21 Oct 2011 11:06:41 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 11:15:45 GMT]]></title><description><![CDATA[<p>Gibt es einen Compiler, der <em>rufen kann</em> &quot;Das Design ist nicht optimal und dieses Design dann verbessert?&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Könnte man gebrauchen! <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2134017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2134017</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Fri, 21 Oct 2011 11:15:45 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 11:24:06 GMT]]></title><description><![CDATA[<p>berniebutt schrieb:</p>
<blockquote>
<p>Gibt es einen Compiler, der <em>rufen kann</em> &quot;Das Design ist nicht optimal und dieses Design dann verbessert?&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Könnte man gebrauchen! <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="😉"
    /></p>
</blockquote>
<p>Das kann jeder SPL-Compiler. (Schlechter Informatikerwitz, SPL steht für Suche-Problem-und-Löse.)</p>
<p>Außerdem sprach ich nicht von einem Compiler, sondern von einem Projekt, das ruft. Das ist so ein Unterschied wie zwischen objektorientierter Programmierung und objektorientierter Programmiersprache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2134020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2134020</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 21 Oct 2011 11:24:06 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 11:34:47 GMT]]></title><description><![CDATA[<p>Also meint ihr, ich brauche da keine weitere Klassen um das ganze übersichtlicher zu gestalten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2134025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2134025</guid><dc:creator><![CDATA[claaas]]></dc:creator><pubDate>Fri, 21 Oct 2011 11:34:47 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 11:46:43 GMT]]></title><description><![CDATA[<p>claaas schrieb:</p>
<blockquote>
<p>Also meint ihr, ich brauche da keine weitere Klassen um das ganze übersichtlicher zu gestalten?</p>
</blockquote>
<p>Willst du das Projekt so lassen wie es ist und nie erweitern und den Code nur noch rumgammeln lassen, dann brauchst du keine Klasse.<br />
Willst du lernen, wie man größere Projekte enwickelt oder dieses Projekt noch weiter machen, kann man ne ganze Menge Klassen machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2134031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2134031</guid><dc:creator><![CDATA[IKnow]]></dc:creator><pubDate>Fri, 21 Oct 2011 11:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 11:47:58 GMT]]></title><description><![CDATA[<p>claaas schrieb:</p>
<blockquote>
<p>Also meint ihr, ich brauche da keine weitere Klassen um das ganze übersichtlicher zu gestalten?</p>
</blockquote>
<p>Naja, bei haveInternet(), sendGSM(), postHTTP() frage ich mich, WER tuts?<br />
haveInternet(), wer hats Internet? Soll ich eine Klasse dafür bauen? Es wäre notwendig, wenn es mehrere Internethaber geben könnte und die auch verschiedene Internets haben könnten. Oder wenn es mehrere zusammenhehörende Variablen (handles) wären.</p>
<p>sendGSM(), wer sendet? Bringt's eine Erleichterung, eine Klasse GsmSender zu basteln, sind für das Sendenkönnen (mehrere) Variablen nötig außer der Zieltelefonnummer und dem SMS-Text? Kann der GsmSender so gemacht werden, daß man ihn glerichermaßen sowohl in einer Konsoleanwendung als auch in einer grafischen Anwendung benutzen kann? Wenn ja, stehen die Zeichen recht gut für so eine Klasse.</p>
<p>Aber viel wichtiger ist, daß Du nicht 200 Zeilen in eine Funktion packst! Die meisten meiner Funktionen haben 6 oder weniger Zeilen (GUI-COde nicht gewertet, der ist immer groß).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2134032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2134032</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 21 Oct 2011 11:47:58 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 13:00:46 GMT]]></title><description><![CDATA[<p>Claaas schrieb:</p>
<blockquote>
<p>Nachdem man mein Programm aufgerufen hat, erscheint ein Login-Formular.<br />
Der User kann ein Haken setzen, damit die Logindaten gemerkt werden.<br />
Nun hat er ein Menü vor sich, welches die Punkte<br />
&quot;New&quot;, &quot;inbox&quot;, &quot;settings&quot;, ... beinhaltet.<br />
Klickt er auf New, kann er eine Handynummer und eine SMS eintippen.<br />
Wenn er sie absendet:<br />
a) prüft der Rechner, ob er mit dem Internet verbunden ist<br />
b) versucht er sie über ein Onlinedienst zu versenden<br />
c) ansonsten sendet er sie per GSM Moden.</p>
<p>Ich stehe gerade am Anfang, habe gerade mal die Funktionen<br />
haveInternet(), sendGSM(), postHTTP(). Der rest ist direkt in der main() Methode implementiert.</p>
</blockquote>
<p>Wie hast du dein &quot;Login-Formular&quot; in main bekommen? Was ist das für ein GUI Framework?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2134047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2134047</guid><dc:creator><![CDATA[?=)(&#x2F;&amp;amp;%]]></dc:creator><pubDate>Fri, 21 Oct 2011 13:00:46 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 16:41:49 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>berniebutt schrieb:</p>
<blockquote>
<p>Gibt es einen Compiler, der <em>rufen kann</em> &quot;Das Design ist nicht optimal und dieses Design dann verbessert?&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Könnte man gebrauchen! <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="😉"
    /></p>
</blockquote>
<p>Das kann jeder SPL-Compiler. (Schlechter Informatikerwitz, SPL steht für Suche-Problem-und-Löse.)<br />
Außerdem sprach ich nicht von einem Compiler, sondern von einem Projekt, das ruft. Das ist so ein Unterschied wie zwischen objektorientierter Programmierung und objektorientierter Programmiersprache.</p>
</blockquote>
<p>Dann wird also auf Projektebene ein SPL = &quot;<strong>S</strong>uche Personal Trainer - zur <strong>P</strong>rogrammierung - für <strong>L</strong>au&quot; gesucht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Gibt es hier doch im Forum. Im Moment höre ich das Projekt nicht <em>rufen</em>, allenfalls den Fragesteller! Ich klinke mich dann mal aus mangels Ernsthaftigkeit zum Thema. daddeldu! :p Ich kenne auch noch so einen Witz: &quot;Da stehen sich Hardware und Software fassunglos gegenüber!&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2134097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2134097</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Fri, 21 Oct 2011 16:41:49 GMT</pubDate></item><item><title><![CDATA[Reply to Projektaufteilung in Classes on Fri, 21 Oct 2011 17:30:18 GMT]]></title><description><![CDATA[<p>Danke volkard. So werde ich es auch machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2134148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2134148</guid><dc:creator><![CDATA[claaas]]></dc:creator><pubDate>Fri, 21 Oct 2011 17:30:18 GMT</pubDate></item></channel></rss>