<?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[Klassen?]]></title><description><![CDATA[<p>Nabend,</p>
<p>ich habe eine Bitte. Könnte mir jemand mal genau erklären wofür Klassen gut sind? Ich habe bis jetzt nur mit C gearbeitet und mein Lehrer ist irgend wie unfähig zu erklären wofür man Klassen braucht oder womit sie zu vergleichen sind.<br />
Wäre ganz nett wenn ihr es an einem Beispiel Quellcode erklären könntet via Kommentare.</p>
<p>Vielen Dank im Voraus<br />
kwest</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/140094/klassen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 22:17:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/140094.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Mar 2006 00:01:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen? on Sun, 12 Mar 2006 00:01:20 GMT]]></title><description><![CDATA[<p>Nabend,</p>
<p>ich habe eine Bitte. Könnte mir jemand mal genau erklären wofür Klassen gut sind? Ich habe bis jetzt nur mit C gearbeitet und mein Lehrer ist irgend wie unfähig zu erklären wofür man Klassen braucht oder womit sie zu vergleichen sind.<br />
Wäre ganz nett wenn ihr es an einem Beispiel Quellcode erklären könntet via Kommentare.</p>
<p>Vielen Dank im Voraus<br />
kwest</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1014305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1014305</guid><dc:creator><![CDATA[kwest]]></dc:creator><pubDate>Sun, 12 Mar 2006 00:01:20 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen? on Sun, 12 Mar 2006 00:29:44 GMT]]></title><description><![CDATA[<p>Ich probier's mal, Änderungen/Verbesserungen/Korrekturen sind wie immer sehr willkommen. <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>
<p>Klassen erleichtern einem das Objektorientierte Programmieren. Man versucht damit Objekte, die man sich in der realen Welt vorstellen kann im Programm nachzubilden, wobei man sich auf die für das Programm wichtigen Funktionen beschränkt. Man muss sich Klassen als eine Art Schablone vorstellen auf dessen Grundlage dann im Programmverlauf Objekte erzeugt werden mit eben diesen definierten Eigenschaften.</p>
<p>Man könnte z.B. eine Klasse Person schreiben, die folgendermaßen definiert ist:</p>
<pre><code class="language-cpp">class Person {
    public:
        Person(std::string _n, unsigned char _a) : Name(_n), Alter(_a) {
        }
        void setName(std::string _n) {
            this-&gt;Name = _n;
        }
        std::string getName() {
            return this-&gt;Name;
        }
        ...
    private:
        std::string   Name;
        unsigned char Alter;
};
</code></pre>
<p>Wenn es im Programm nur wichtig ist, dass eine Person einen Namen und ein Alter besitzt, dann reicht das vollkommen aus und man kann damit arbeiten, z.B.:</p>
<pre><code class="language-cpp">Person p1(&quot;Peter&quot;, 25);
Person p2(&quot;Lisa&quot;, 28);
cout &lt;&lt; p1.getName() &lt;&lt; &quot; ist &quot; &lt;&lt; p1.getAlter() &lt;&lt; &quot; Jahre alt &quot; &lt;&lt; endl;
...
</code></pre>
<p>Desweiteren kann man Vererbungshierarchien aufstellen, wo man bestimmte Typen von Objekte miteinander in Beziehung setzen kann. Desweiteren kann man unter anderem Code, den man normalerweise mehrfach schreiben würde in einer zentralen Basisklasse verwalten. Beispiel:</p>
<pre><code class="language-cpp">class Fahrzeug {
    public:
        Fahrzeug() {}
        virtual void gibGas() = 0;
        std::string getName() { ... }
        void setName(...) { ... }
};

class Auto : public Fahrzeug {
    public:
        Auto() {}
        void gibGas() {
            // Code, um auf's Gaspedal zu treten
        }
};

class Boot : public Fahrzeug {
    public:
        Boot() {}
        void gibGas() {
            // Code, um die Schraube schneller drehen zu lassen
        }
};
</code></pre>
<p>Vielleicht ist das Beispiel nicht ganz so gut gewählt, aber ein besseres fällt mir gerade nicht ein. <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="😞"
    /><br />
Die Klasse Fahrzeug definiert nun die Methoden get/setName, diese stehen genauso in den spezialisierten Klassen Auto und Boot zur Verfügung (Vermeidung von doppelter Implentierung des gleichen Codes). Außerdem definiert die Klasse Fahrzeug hier eine Methode gibGas() als rein virtuell, was soviel heißt, dass man kein Objekt dieser Klasse erstellen kann, da diese Klasse hierdurch als abstrakte Klasse gilt und zum anderen gibt die Klasse dadurch vor, dass jede Klasse, die von dieser Klasse erbt und wo später Objekte von erzeugt werden sollen diese Methode implementieren müssen.</p>
<p>hm, irgendwie ist es wohl doch schon ein wenig spät heute für mich, ich hoffe ich konnte Dir wenigstens ein bißchen helfen. <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/1014312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1014312</guid><dc:creator><![CDATA[mantiz]]></dc:creator><pubDate>Sun, 12 Mar 2006 00:29:44 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen? on Sun, 12 Mar 2006 01:33:10 GMT]]></title><description><![CDATA[<p>klassen sind integraler bestandteil der objektorientierten (OO) entwicklung.</p>
<p>bei der entwicklung von programmen wird meistens ein teil der welt abstrahiert und automatisiert. die welt besteht aus objekten. OO versucht nun genau das in einer programmiersprache widerzuspiegeln.</p>
<p>jedes objekt bringt die methoden und eigenschaften mit, die nötig sind, um mit diesem objekt zu interagieren (das ist _ein_ OO ansatz, gibt auch andere).</p>
<p>man kann das ganze auch als eine art angenehmere kapselung sehen.</p>
<p>ich will z.b. eine menge an obst in meinem programm modellieren.</p>
<p>ansatz1:</p>
<pre><code class="language-cpp">const int anzahl = 3;
string farben[anzahl];
string typ[anzahl];

int main()
{
 farben[0] = &quot;rot&quot;; farben[1] = &quot;gelb&quot;; farben[2] = &quot;orange&quot;;
 typ[0] = &quot;Apfel&quot;; typ[1] = &quot;Banane&quot;; typ[2] = &quot;Apfelsine&quot;;
}
</code></pre>
<p>funktioniert, ist aber irgendwie unschön. besonders wenn man noch mehr eigenschaften hat, sich was an einem objekt ändert, eines entfernt werden muss etc.</p>
<p>also könnte man die objekte irgendwie besser zusammenfassen</p>
<pre><code class="language-cpp">const int anzahl = 3;
pair&lt;string, string&gt; gemüse[anzahl];

int main()
{
 gemüse[0].first = &quot;rot&quot;; gemüse[0].second = &quot;Apfel&quot;;
 ...
}
</code></pre>
<p>schonmal einfacher zu handhaben, aber irgendwie nich übersichtlich. also machen wir daraus klassen!</p>
<pre><code class="language-cpp">class Gemüse
{
 string typ;
 string farbe;
};

int main()
{
 Gemüse a;
 a.typ = &quot;Apfel&quot;; a.farbe = &quot;rot&quot;;
 ...
}
</code></pre>
<p>schön übersichtlich und kann im block einfach weiterverarbeitet werden.</p>
<p>erweitert man das ganze noch um schicke konzepte wie private (methoden und variablen, auf die von aussen nicht zugegriffen werden kann) und so krams, bekommt man ein weniger fehlerträchtiges gesamtsystem, welches intuitiv zu verstehen ist.</p>
<p>fazit: man braucht klassen nicht, aber sie machen das leben schöner.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1014326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1014326</guid><dc:creator><![CDATA[klassenkasper]]></dc:creator><pubDate>Sun, 12 Mar 2006 01:33:10 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen? on Sun, 12 Mar 2006 10:18:48 GMT]]></title><description><![CDATA[<p>lies einfach ein gutes buch dazu.</p>
<p>in vielen bibliotheken steht folgendes als vorschlag:<br />
<a href="https://duckduckgo.com/?q=isbn+3827295203&amp;cppnetbooks" rel="nofollow">Objektorientierte C++-Anwendungen | ISBN: 3827295203</a><br />
Robert C. Martin: Objektorientierte c++ Anwendungen: die Booch-Methode</p>
<p>//isbn benutzt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1014374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1014374</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Sun, 12 Mar 2006 10:18:48 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen? on Sun, 12 Mar 2006 16:05:44 GMT]]></title><description><![CDATA[<p>Vielen Dank euch.<br />
Ich habe die Klassen jetzt verstanden <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="😉"
    /> und werde mich mal ransetzen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1014659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1014659</guid><dc:creator><![CDATA[kwest]]></dc:creator><pubDate>Sun, 12 Mar 2006 16:05:44 GMT</pubDate></item></channel></rss>