<?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[Programmkontrolle zum Thema Klassen]]></title><description><![CDATA[<p>Hallo Leute,<br />
Seit ein paar Wochen komme ich wieder regelmäßig dazu etwas für die Programmiererei zu machen.<br />
Ich arbeite mich dabei im Netz durch ein Tutorial welche mir &quot;gut liegt&quot;.</p>
<p>Ich bin derzeit beim thema Klassen angelang und habe darin noch nicht das sichere gefühl was ich mir wünsche.<br />
Ich habe einfach mal ein kleines Programm geschrieben welchen nix weiter tun soll als zwei zahlen zu addieren (und das natürlich mit einer kalsse realisiert).</p>
<p>Ich würde mich freuen wenn ihr mir zu dem nachfolgenden Code mal eure Meinung sagen würdet und mir noch ein paar tipps geben könnten was man noch besser machen kann. Vielen Dank</p>
<p>Toni</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
using namespace std;

class summ
{
      private:
             int zahl1;
             int zahl2;
      public:
             //eingabeprozedur
             void eingabe()
             {
                  cout&lt;&lt;&quot;Bitte erste zahl eingeben:&quot;&lt;&lt;endl;
                  cin&gt;&gt;zahl1;
                  cout&lt;&lt;&quot;Bitte zweite Zahl eingaben:&quot;&lt;&lt;endl;
                  cin&gt;&gt;zahl2;
             };
             //berechnungsprozedur
             int berechnung()
             {
             int ergebnis;
             ergebnis=zahl1+zahl2;
             return ergebnis;
             };
             //ausgabeprozedur
             int ausgabe()
            {
            cout&lt;&lt;&quot;Die Summe von &quot;&lt;&lt;zahl1&lt;&lt;&quot;+&quot;&lt;&lt;zahl2&lt;&lt;&quot; ist gleich &quot;&lt;&lt;berechnung() &lt;&lt;endl; 
            };
};
int main(int argc, char *argv[])
{summ s;
    s.eingabe();
    s.berechnung();
    s.ausgabe();
    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/282400/programmkontrolle-zum-thema-klassen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 06:31:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282400.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 19 Feb 2011 16:33:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programmkontrolle zum Thema Klassen on Sat, 19 Feb 2011 16:33:43 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
Seit ein paar Wochen komme ich wieder regelmäßig dazu etwas für die Programmiererei zu machen.<br />
Ich arbeite mich dabei im Netz durch ein Tutorial welche mir &quot;gut liegt&quot;.</p>
<p>Ich bin derzeit beim thema Klassen angelang und habe darin noch nicht das sichere gefühl was ich mir wünsche.<br />
Ich habe einfach mal ein kleines Programm geschrieben welchen nix weiter tun soll als zwei zahlen zu addieren (und das natürlich mit einer kalsse realisiert).</p>
<p>Ich würde mich freuen wenn ihr mir zu dem nachfolgenden Code mal eure Meinung sagen würdet und mir noch ein paar tipps geben könnten was man noch besser machen kann. Vielen Dank</p>
<p>Toni</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
using namespace std;

class summ
{
      private:
             int zahl1;
             int zahl2;
      public:
             //eingabeprozedur
             void eingabe()
             {
                  cout&lt;&lt;&quot;Bitte erste zahl eingeben:&quot;&lt;&lt;endl;
                  cin&gt;&gt;zahl1;
                  cout&lt;&lt;&quot;Bitte zweite Zahl eingaben:&quot;&lt;&lt;endl;
                  cin&gt;&gt;zahl2;
             };
             //berechnungsprozedur
             int berechnung()
             {
             int ergebnis;
             ergebnis=zahl1+zahl2;
             return ergebnis;
             };
             //ausgabeprozedur
             int ausgabe()
            {
            cout&lt;&lt;&quot;Die Summe von &quot;&lt;&lt;zahl1&lt;&lt;&quot;+&quot;&lt;&lt;zahl2&lt;&lt;&quot; ist gleich &quot;&lt;&lt;berechnung() &lt;&lt;endl; 
            };
};
int main(int argc, char *argv[])
{summ s;
    s.eingabe();
    s.berechnung();
    s.ausgabe();
    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2023334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023334</guid><dc:creator><![CDATA[ToniThiele]]></dc:creator><pubDate>Sat, 19 Feb 2011 16:33:43 GMT</pubDate></item><item><title><![CDATA[Reply to Programmkontrolle zum Thema Klassen on Sat, 19 Feb 2011 16:45:03 GMT]]></title><description><![CDATA[<p>Hallo,<br />
das sieht auf den ersten Blick ganz ok aus, mit ein paar Schönheitsfehern.<br />
Du könntest noch eine summ.h mit den Deklarationen und eine summ.cpp mit den Methoden-Defintionen machen.<br />
Ansonsten hab ich noch ein paar Schönheitsfehler korrigiert, die Erklärungen findest du im Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class summ
{
      private:
             int zahl1;
             int zahl2;
      public:
             //eingabeprozedur
             void eingabe()
             {
                  cout &lt;&lt; &quot;Bitte erste zahl eingeben:\n&quot;;
                  cin &gt;&gt; zahl1;
                  cout &lt;&lt; &quot;Bitte zweite Zahl eingaben:\n&quot;;
                  cin &gt;&gt; zahl2;
             } //semikolon ist hier unnötig
             //berechnungsprozedur
             int berechnung()
             {
				 return zahl1+zahl2; //so gehts einfacher
             }
             //ausgabeprozedur
            void ausgabe() //sie gibt ja nichts zurück, also void
            {
                cout &lt;&lt; &quot;Die Summe von &quot; &lt;&lt; zahl1 &lt;&lt; &quot;+&quot; &lt;&lt; zahl2 &lt;&lt; &quot; ist gleich &quot; &lt;&lt; berechnung() &lt;&lt; &quot;\n&quot;;
            }
};

int main( /*Die Parameter benutzt du ja nicht*/ )
{
    summ s;
    s.eingabe();
    //s.berechnung(); hier passiert ja nichts..
    s.ausgabe();
    //system(&quot;PAUSE&quot;); das ist schlecht
    cin.get(); //so ists besser
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2023339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023339</guid><dc:creator><![CDATA[Incocnito]]></dc:creator><pubDate>Sat, 19 Feb 2011 16:45:03 GMT</pubDate></item><item><title><![CDATA[Reply to Programmkontrolle zum Thema Klassen on Sat, 19 Feb 2011 17:00:08 GMT]]></title><description><![CDATA[<p>Mal salopp gesagt: In eine Klasse sollten nur Daten und darauf angewandte Funktionen (Methoden) kommen. Die Benutzerschnittstelle für die Dateneingabe gehört dann nicht in die Klasse. Du solltest zunächst lernen, was Klassen sind und können. Ist nicht schlimm, so hat jeder einmal angefangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023345</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Sat, 19 Feb 2011 17:00:08 GMT</pubDate></item><item><title><![CDATA[Reply to Programmkontrolle zum Thema Klassen on Sat, 19 Feb 2011 17:00:27 GMT]]></title><description><![CDATA[<p>Dank für die Schnelle Antwort.<br />
ich fang mal unten an.<br />
In der Mainfunktion sehe ich leider erst jetzt das ich s.berechnung einsparen könnte.<br />
es wird ja schließlich in der Ausgabeprozedur aufgerufen.</p>
<p>Das system(&quot;PAUSE&quot;); hat die IDE (Dev C++ portable) eingeworfen.<br />
ich habe sonst immer mit cin&lt;&lt;z; auf eine unbenutzte variable gewarten. (sonst ist das fenster einfach zugegangen)<br />
die alternative hast du ja angemerkt.</p>
<p>Was die Deklarationen und Methoden betrifft:</p>
<p>ist das so gemeint das ich alles was in private: steht in summ.h<br />
und was in public: steht in summ.cpp fassen soll und das an der stelle einbinden?<br />
Könnte ich nicht auch die ganze klasse in eine summ.h einlagern und dann einfach oben mit einbinden?</p>
<p>Mfg</p>
<p>Toni</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023346</guid><dc:creator><![CDATA[ToniThiele]]></dc:creator><pubDate>Sat, 19 Feb 2011 17:00:27 GMT</pubDate></item><item><title><![CDATA[Reply to Programmkontrolle zum Thema Klassen on Sat, 19 Feb 2011 17:33:47 GMT]]></title><description><![CDATA[<p>ToniThiele schrieb:</p>
<blockquote>
<p>Was die Deklarationen und Methoden betrifft:</p>
<p>ist das so gemeint das ich alles was in private: steht in summ.h<br />
und was in public: steht in summ.cpp fassen soll und das an der stelle einbinden?<br />
Könnte ich nicht auch die ganze klasse in eine summ.h einlagern und dann einfach oben mit einbinden?</p>
</blockquote>
<p>Nein, so ist das nicht gemeint, sondern so:<br />
- Deklarationen (Bekanntmachungen) kommen in die Header-Datei.<br />
- Definitionen kommen dann in die cpp-Datei.</p>
<p>Header</p>
<pre><code class="language-cpp">#ifndef SUMM_H
#define SUMM_H

class summ
{
      private:
             int zahl1;
             int zahl2;
      public:
             summ(int,int);
             int berechnung();
};

#endif
</code></pre>
<p>cpp</p>
<pre><code class="language-cpp">#include &quot;summ.h&quot;

summ::summ(int z1, int z2) : zahl1(z1), zahl2(z2)
{
}

int summ::berechnung()
{
    return zahl1+zahl2;
}
</code></pre>
<p>main</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;summ.h&quot;

int main()
{
    summ s(5,7);
    std::cout &lt;&lt; s.berechnung();   

    std::cin.get();
    return 0;
}
</code></pre>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023363</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 19 Feb 2011 17:33:47 GMT</pubDate></item><item><title><![CDATA[Reply to Programmkontrolle zum Thema Klassen on Sat, 19 Feb 2011 18:23:45 GMT]]></title><description><![CDATA[<p>Ich hab noch eine kleine sache die mich verwirrt.<br />
Wieso nehmen wir nicht weiter die variablen zahl1 &amp; zahl2 ?<br />
Da ich denke das du einen guten grund dafür hast das so es so machst und nicht anders hab ich noch die bitte das du mal genau schreibst was die zeitle tut.<br />
Ich nehme an hier erfolgt die zuweisung zwischen z1 und zahl1 ...<br />
Ich seh aber trotzdem nicht durch. und warum summ:summ?</p>
<p>sorry für die doofen fragen.</p>
<pre><code class="language-cpp">#include &quot;summ.h&quot;

summ::summ(int z1, int z2) : zahl1(z1), zahl2(z2)
//Kannst du mal beschreiben was diese Zeile macht...?

{
}

int summ::berechnung()
{
    return zahl1+zahl2;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2023370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023370</guid><dc:creator><![CDATA[ToniThiele]]></dc:creator><pubDate>Sat, 19 Feb 2011 18:23:45 GMT</pubDate></item><item><title><![CDATA[Reply to Programmkontrolle zum Thema Klassen on Sat, 19 Feb 2011 18:56:06 GMT]]></title><description><![CDATA[<p>Huhu,<br />
also ich werde mal versuchen, dir ein paar Dinge zu erklären:</p>
<p>- Jede Klasse hat einen Konstruktor, falls du selbst keinen angibst, generiert der Compiler einen, den sog. Standardkonstrukor (er erwartet keine Parameter).</p>
<p>- Ein Konstruktor hat kein Rückgabedatentyp, sondern beginnt direkt mit dem Namen (Name = Klassenname), gefolgt von der Parameterliste.</p>
<p>- In meinem Beispiel habe ich nun einen Konstruktor definiert, der 2 Parameter erwartet ... 2 Integer-Variablen</p>
<pre><code class="language-cpp">summ(int,int); // Deklaration --&gt; Dem Compiler etwas bekannt machen.

summ::summ(int z1, int z2) : zahl1(z1), zahl2(z2) // Definition --&gt; definieren, was die Methode machen soll.
{
}
</code></pre>
<p>- Den <strong>::</strong>, den du da siehst, ist der sog. Scope-Operator. Er spezifiziert die Zugehörigkeit.</p>
<pre><code class="language-cpp">// Zugehörigkeit::Attribut/Methode
summ::summ(inz z1, int z2) ... // Der Konstruktor heißt summ und gehört zu der Klasse summ.
</code></pre>
<p>- Nun hat die Klasse <em>summ</em> ja 2 Attribute, zahl1 und zahl2, die du natürlich initialisieren solltest, sonst haben sie irgendeinen Wert.</p>
<pre><code class="language-cpp">// Der Konstruktor wird aufgerufen, und der Parameter z1 ist 5, und z2 ist 7.
// Mit diesen 2 Paramtern initialierst du nun die Attriubte (zahl1 und zahl2), mittels der Initialisierungsliste.
summ s(5,7);
</code></pre>
<p>- Die Initialisierungsliste wird mit dem <em>einfachen Doppeltpunkt</em> eingeleitet.</p>
<pre><code class="language-cpp">... : zahl1(z1), zahl2(z2) // Initialisierung findet hier statt: zahl1 erhält den Wert von z1, und zahl2 erhält den Wert von z2.
</code></pre>
<p>- Jetzt denkst du vielleicht, wieso <em>so kompliziert</em> und nicht einfach:</p>
<pre><code class="language-cpp">summ::summ(int z1, int z2) // Nun findet hier nur noch die Definition der Attribute statt.
{
    zahl1 = z1; // Zuweisung
    zahl2 = z2; // Zuweisung
}
</code></pre>
<p>Zwischen der Initialisierungsliste und dieser Variante gibt es aber gravierdene Unterschiede. Hier initialisierst du nämlich nicht deine Attribute, sondern definierst sie und weist ihnen danach etwas zu, d.h. du benötigst 2 Operationen.<br />
Mittels der Initialisierungsliste brauchst du nur 1 Operation, nämliche die Initialisierung, die Definition+Zuweisung in einem Rutsch macht.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023388</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 19 Feb 2011 18:56:06 GMT</pubDate></item><item><title><![CDATA[Reply to Programmkontrolle zum Thema Klassen on Sat, 19 Feb 2011 19:05:21 GMT]]></title><description><![CDATA[<p>Hi,<br />
das nenn ich mal ne ausführliche erläuterung.</p>
<p>So macht das ganze natürlich sinn. Werd aber trotzdem noch e bisschen üben müssen um das ganz zu verinnerlichen.</p>
<p>Vielen dank für die Hilfe.</p>
<p>Mfg</p>
<p>Toni</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023393</guid><dc:creator><![CDATA[ToniThiele]]></dc:creator><pubDate>Sat, 19 Feb 2011 19:05:21 GMT</pubDate></item></channel></rss>