<?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[Überprüfung von objektorientiertem Code]]></title><description><![CDATA[<p>Hey <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="🙂"
    /><br />
Ich bin mit meinem C++ Buch fertig geworden, und wollte jetzt<br />
erstmal OOP richtig üben.<br />
Ein Freund gab mir den Tipp, eine Bibliothek zu programmieren.<br />
Das ist tatsächlich eine gute Übung. Könntet ihr bitte mal in den Code<br />
reinschaun, und sagen, was man noch verbessern könnte ( Performance, Übersicht usw. ) oder wie ich die<br />
Bibliothek noch erweitern könnte?<br />
Der Code besteht aus einer Basisklasse Buch und einer<br />
abgeleiteten Klasse Comic. Hier mal der Code...</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using std::cout;
using std::endl;
using std::cin;using std::string;

class Buch
{
private:
   string titel;   
   string autor;
   unsigned int seiten;
   double preis;
public:
   Buch();
   Buch( string titel, string autor, unsigned int seiten, double preis );
   void printbuch();
   ~Buch();
   void set_titel( string titel );
   void set_autor( string autor );
   void set_seiten( unsigned seiten );
   void set_preis( double preis );
   string get_titel();
   string get_autor();
   unsigned get_seiten();
   double get_preis();
};

class Comic : Buch
{
private:
   bool farbe;
   bool witzig;
public:
   Comic();
   Comic( string titel, string autor, unsigned int seiten, double preis, bool farbe, bool witzig );
   void printcomic();
   ~Comic();
   void testfarbe( bool farbe );
   void testwitzig( bool witzig );
};

int main() 
{
   Buch buch1( &quot;C++ von A bis Z&quot;, &quot;Juergen Wolf&quot;, 1000, 39.99 );
   buch1.printbuch();
   Buch buch2;
   buch2.printbuch();
   Comic comic1( &quot;Goofy&quot;, &quot;Goofy2&quot;, 53, 10.33, 1, 1 );
   comic1.printcomic();
   Comic comic2;
   comic2.printcomic();
   cin.get();
   return 0;
}

Buch::Buch() 
{
   titel = &quot;Unbekannt&quot;;
   autor = &quot;Unbekannt&quot;;
   seiten = 0;
   preis = 0;
}

Buch::Buch( string titel, string autor, unsigned int seiten, double preis )
{
   this-&gt;titel = titel;
   this-&gt;autor = autor;
   this-&gt;seiten = seiten;
   this-&gt;preis = preis;
}

void Buch::printbuch()
{
   cout &lt;&lt; &quot;Titel: &quot; &lt;&lt; titel &lt;&lt; endl;
   cout &lt;&lt; &quot;Autor: &quot; &lt;&lt; autor &lt;&lt; endl;
   cout &lt;&lt; &quot;Seiten: &quot; &lt;&lt; seiten &lt;&lt; endl;
   cout &lt;&lt; &quot;Preis: &quot; &lt;&lt; preis &lt;&lt; endl;
   cout &lt;&lt; endl;
}

Buch::~Buch()
{
   cout &lt;&lt; titel &lt;&lt; &quot; wurde aus der Bibliothek geschmissen!&quot; &lt;&lt; endl;
}

void Buch::set_titel( string titel ) 
{
   this-&gt;titel = titel;
}

void Buch::set_autor( string autor )
{
   this-&gt;autor = autor;
}

void Buch::set_seiten( unsigned seiten )
{
   this-&gt;seiten = seiten;
}
void Buch::set_preis( double preis )
{
   this-&gt;preis = preis;
}

string Buch::get_titel()
{
   return titel;
}

string Buch::get_autor()
{
   return autor;
}

unsigned Buch::get_seiten()
{
   return seiten;
}

double Buch::get_preis()
{
   return preis;
}

Comic::Comic()
{
   set_titel( &quot;Unbekannt&quot; );
   set_autor( &quot;Unbekannt&quot; );
   set_seiten( 0 );
   set_preis( 0 );
   farbe = 0;
   witzig = 0;
}

Comic::Comic( string titel, string autor, unsigned int seiten, double preis, bool farbe, bool witzig )
{
   set_titel( titel );
   set_autor( autor );
   set_seiten( seiten );
   set_preis( preis );
   this-&gt;farbe = farbe;
   this-&gt;witzig = witzig;
}

void Comic::printcomic()
{
   cout &lt;&lt; &quot;Titel: &quot; &lt;&lt; get_titel() &lt;&lt; endl;
   cout &lt;&lt; &quot;Autor: &quot; &lt;&lt; get_autor() &lt;&lt; endl;
   cout &lt;&lt; &quot;Seiten: &quot; &lt;&lt; get_seiten() &lt;&lt; endl;
   cout &lt;&lt; &quot;Preis: &quot; &lt;&lt; get_preis() &lt;&lt; endl;
   cout &lt;&lt; &quot;Farbe: &quot;; this-&gt;testfarbe(farbe);
   cout &lt;&lt; endl;
   cout &lt;&lt; &quot;Witzig: &quot;; this-&gt;testwitzig(witzig);
   cout &lt;&lt; endl &lt;&lt; endl;
}

Comic::~Comic()
{
   cout &lt;&lt; get_titel() &lt;&lt; &quot; wurde aus der Bibliothek verschmissen! &quot; &lt;&lt; endl;
}

void Comic::testfarbe( bool farbe ) // 1 = Farbe
{
   if( farbe )
      cout &lt;&lt; &quot;vorhanden&quot;; 
   else if( !farbe )
      cout &lt;&lt; &quot;nicht vorhanden&quot;;
}

void Comic::testwitzig( bool witzig ) // 1 = witzig
{
   if( witzig )
      cout &lt;&lt; &quot;witzig&quot;; 
   else if( !farbe )
      cout &lt;&lt; &quot;nicht witzig&quot;;
}
</code></pre>
<p>Sagt einfach, was euch auffällt, egal welche Art von Fehlern ihr entdeckt.<br />
Wäre sehr nett. Liebe Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217563/überprüfung-von-objektorientiertem-code</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 07:47:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217563.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Jul 2008 19:30:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 12 Jan 2011 19:58:55 GMT]]></title><description><![CDATA[<p>Hey <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="🙂"
    /><br />
Ich bin mit meinem C++ Buch fertig geworden, und wollte jetzt<br />
erstmal OOP richtig üben.<br />
Ein Freund gab mir den Tipp, eine Bibliothek zu programmieren.<br />
Das ist tatsächlich eine gute Übung. Könntet ihr bitte mal in den Code<br />
reinschaun, und sagen, was man noch verbessern könnte ( Performance, Übersicht usw. ) oder wie ich die<br />
Bibliothek noch erweitern könnte?<br />
Der Code besteht aus einer Basisklasse Buch und einer<br />
abgeleiteten Klasse Comic. Hier mal der Code...</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using std::cout;
using std::endl;
using std::cin;using std::string;

class Buch
{
private:
   string titel;   
   string autor;
   unsigned int seiten;
   double preis;
public:
   Buch();
   Buch( string titel, string autor, unsigned int seiten, double preis );
   void printbuch();
   ~Buch();
   void set_titel( string titel );
   void set_autor( string autor );
   void set_seiten( unsigned seiten );
   void set_preis( double preis );
   string get_titel();
   string get_autor();
   unsigned get_seiten();
   double get_preis();
};

class Comic : Buch
{
private:
   bool farbe;
   bool witzig;
public:
   Comic();
   Comic( string titel, string autor, unsigned int seiten, double preis, bool farbe, bool witzig );
   void printcomic();
   ~Comic();
   void testfarbe( bool farbe );
   void testwitzig( bool witzig );
};

int main() 
{
   Buch buch1( &quot;C++ von A bis Z&quot;, &quot;Juergen Wolf&quot;, 1000, 39.99 );
   buch1.printbuch();
   Buch buch2;
   buch2.printbuch();
   Comic comic1( &quot;Goofy&quot;, &quot;Goofy2&quot;, 53, 10.33, 1, 1 );
   comic1.printcomic();
   Comic comic2;
   comic2.printcomic();
   cin.get();
   return 0;
}

Buch::Buch() 
{
   titel = &quot;Unbekannt&quot;;
   autor = &quot;Unbekannt&quot;;
   seiten = 0;
   preis = 0;
}

Buch::Buch( string titel, string autor, unsigned int seiten, double preis )
{
   this-&gt;titel = titel;
   this-&gt;autor = autor;
   this-&gt;seiten = seiten;
   this-&gt;preis = preis;
}

void Buch::printbuch()
{
   cout &lt;&lt; &quot;Titel: &quot; &lt;&lt; titel &lt;&lt; endl;
   cout &lt;&lt; &quot;Autor: &quot; &lt;&lt; autor &lt;&lt; endl;
   cout &lt;&lt; &quot;Seiten: &quot; &lt;&lt; seiten &lt;&lt; endl;
   cout &lt;&lt; &quot;Preis: &quot; &lt;&lt; preis &lt;&lt; endl;
   cout &lt;&lt; endl;
}

Buch::~Buch()
{
   cout &lt;&lt; titel &lt;&lt; &quot; wurde aus der Bibliothek geschmissen!&quot; &lt;&lt; endl;
}

void Buch::set_titel( string titel ) 
{
   this-&gt;titel = titel;
}

void Buch::set_autor( string autor )
{
   this-&gt;autor = autor;
}

void Buch::set_seiten( unsigned seiten )
{
   this-&gt;seiten = seiten;
}
void Buch::set_preis( double preis )
{
   this-&gt;preis = preis;
}

string Buch::get_titel()
{
   return titel;
}

string Buch::get_autor()
{
   return autor;
}

unsigned Buch::get_seiten()
{
   return seiten;
}

double Buch::get_preis()
{
   return preis;
}

Comic::Comic()
{
   set_titel( &quot;Unbekannt&quot; );
   set_autor( &quot;Unbekannt&quot; );
   set_seiten( 0 );
   set_preis( 0 );
   farbe = 0;
   witzig = 0;
}

Comic::Comic( string titel, string autor, unsigned int seiten, double preis, bool farbe, bool witzig )
{
   set_titel( titel );
   set_autor( autor );
   set_seiten( seiten );
   set_preis( preis );
   this-&gt;farbe = farbe;
   this-&gt;witzig = witzig;
}

void Comic::printcomic()
{
   cout &lt;&lt; &quot;Titel: &quot; &lt;&lt; get_titel() &lt;&lt; endl;
   cout &lt;&lt; &quot;Autor: &quot; &lt;&lt; get_autor() &lt;&lt; endl;
   cout &lt;&lt; &quot;Seiten: &quot; &lt;&lt; get_seiten() &lt;&lt; endl;
   cout &lt;&lt; &quot;Preis: &quot; &lt;&lt; get_preis() &lt;&lt; endl;
   cout &lt;&lt; &quot;Farbe: &quot;; this-&gt;testfarbe(farbe);
   cout &lt;&lt; endl;
   cout &lt;&lt; &quot;Witzig: &quot;; this-&gt;testwitzig(witzig);
   cout &lt;&lt; endl &lt;&lt; endl;
}

Comic::~Comic()
{
   cout &lt;&lt; get_titel() &lt;&lt; &quot; wurde aus der Bibliothek verschmissen! &quot; &lt;&lt; endl;
}

void Comic::testfarbe( bool farbe ) // 1 = Farbe
{
   if( farbe )
      cout &lt;&lt; &quot;vorhanden&quot;; 
   else if( !farbe )
      cout &lt;&lt; &quot;nicht vorhanden&quot;;
}

void Comic::testwitzig( bool witzig ) // 1 = witzig
{
   if( witzig )
      cout &lt;&lt; &quot;witzig&quot;; 
   else if( !farbe )
      cout &lt;&lt; &quot;nicht witzig&quot;;
}
</code></pre>
<p>Sagt einfach, was euch auffällt, egal welche Art von Fehlern ihr entdeckt.<br />
Wäre sehr nett. Liebe Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543738</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 12 Jan 2011 19:58:55 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Tue, 08 Jul 2008 19:59:39 GMT]]></title><description><![CDATA[<p>Ich glaube er hat &quot;Bibliothek&quot; nicht so wörtlich gemeint. <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>
<p>Aber man kann auch so eine Bibliothek schreiben. <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>- in ne lib gehört (im Header) keine using!<br />
- initialisierungsliten (nachschlagen)<br />
- getter/setter inline</p>
<p>So Sachen:</p>
<pre><code class="language-cpp">void Comic::testwitzig( bool witzig ) // 1 = witzig
{
   if( witzig )
      cout &lt;&lt; &quot;witzig&quot;;
   else if( !farbe )
      cout &lt;&lt; &quot;nicht witzig&quot;;
}
</code></pre>
<p>mach besser:</p>
<pre><code class="language-cpp">bool Comic::is_witzig ()const{return witzig;}
</code></pre>
<p>Hmm. Ansonsten wirst du, denke ich vieles anderst machen,wenn du ein wenig mehr Übung hast,aber mach nur mal ein grösseres Projekt, dann kommt das besser, wenn du merkst, was du anderst machen solltest, oder was hald nicht so gut geht, als das wir dir &quot;vorschreiben&quot;. <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/1543759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543759</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 08 Jul 2008 19:59:39 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Tue, 08 Jul 2008 20:20:19 GMT]]></title><description><![CDATA[<p>Habe ich es übersehen? Sehe keinen Copy-Constructor und Assign-Operator in der Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543775</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Tue, 08 Jul 2008 20:20:19 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Tue, 08 Jul 2008 20:41:29 GMT]]></title><description><![CDATA[<p>Erhard Henkes schrieb:</p>
<blockquote>
<p>Habe ich es übersehen? Sehe keinen Copy-Constructor und Assign-Operator in der Klasse.</p>
</blockquote>
<p>Ist ja auch nicht nötig.</p>
<p>Wäre aber ein Thema, dass er (wahrscheinlich) doch auch nochmal genauer anschauen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543794</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 08 Jul 2008 20:41:29 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Tue, 08 Jul 2008 20:49:12 GMT]]></title><description><![CDATA[<p>Da wird es doch erst spannend. <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/1543799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543799</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Tue, 08 Jul 2008 20:49:12 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 05:23:34 GMT]]></title><description><![CDATA[<p>Erstmal Danke für die Antworten.</p>
<p>drakon schrieb:</p>
<blockquote>
<p>Ich glaube er hat &quot;Bibliothek&quot; nicht so wörtlich gemeint. <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>
<p>Aber man kann auch so eine Bibliothek schreiben. <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>- in ne lib gehört (im Header) keine using!<br />
- initialisierungsliten (nachschlagen)<br />
- getter/setter inline</p>
<p>So Sachen:</p>
<pre><code class="language-cpp">void Comic::testwitzig( bool witzig ) // 1 = witzig
{
   if( witzig )
      cout &lt;&lt; &quot;witzig&quot;;
   else if( !farbe )
      cout &lt;&lt; &quot;nicht witzig&quot;;
}
</code></pre>
<p>mach besser:</p>
<pre><code class="language-cpp">bool Comic::is_witzig ()const{return witzig;}
</code></pre>
<p>Hmm. Ansonsten wirst du, denke ich vieles anderst machen,wenn du ein wenig mehr Übung hast,aber mach nur mal ein grösseres Projekt, dann kommt das besser, wenn du merkst, was du anderst machen solltest, oder was hald nicht so gut geht, als das wir dir &quot;vorschreiben&quot;. <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>Also mit Bibliothek meine<br />
ich natürlich nicht eine Programmbibliothek oder so etwas in der Art,<br />
sondern der Code an sich soll eine Bibliothek darstellen. <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>Dieser Code</p>
<pre><code class="language-cpp">void Comic::testwitzig( bool witzig ) // 1 = witzig
{
   if( witzig )
      cout &lt;&lt; &quot;witzig&quot;;
   else if( !farbe )
      cout &lt;&lt; &quot;nicht witzig&quot;;
}
</code></pre>
<p>Ist ja dazu gedacht, auszugeben ob es jetzt witzig ist oder nicht. Den rufe ich<br />
bei der Ausgabe von einem Comic auf.</p>
<pre><code class="language-cpp">bool Comic::is_witzig ()const{return witzig;}
</code></pre>
<p>Gibt ja nur witzig zurück.</p>
<p>Wozu dient das const in diesem Fall?<br />
Einen Kopierkonstruktor werde ich noch einfügen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543882</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 09 Jul 2008 05:23:34 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 05:29:01 GMT]]></title><description><![CDATA[<p>Dieses</p>
<pre><code class="language-cpp">const
</code></pre>
<p>dient in dem Fall dazu das explizit gesagt wird &quot;Diese Methode hat keinerlei Rechte Member der Klasse zu ändern&quot; solltest du trotzdem mit der Methode versuchen einen Member zu ändern, wird dich dein Compiler höfflich darauf hinweisen dass, das was du probieren willst nicht erlaubt ist <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/1543883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543883</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 09 Jul 2008 05:29:01 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 06:22:09 GMT]]></title><description><![CDATA[<p>Bei diesem Code musst du aufpassen, denn wenn der Fall eintrifft, dass <code>witzig</code> falsch und <code>farbe</code> wahr ist, wird nichts ausgegeben. Ist das deine Absicht? Wenn ja, würde ich einen passenderen Bezeichner suchen oder zwei einzelne Funktionen machen, weil die Farbe nicht unbedingt mit der Witzigkeit zusammenhängt.</p>
<pre><code class="language-cpp">void Comic::testwitzig( bool witzig ) // 1 = witzig 
{ 
   if( witzig ) 
      cout &lt;&lt; &quot;witzig&quot;; 
   else if( !farbe ) 
      cout &lt;&lt; &quot;nicht witzig&quot;; 
}
</code></pre>
<p>Ansonsten würde ich die Bezeichner vereinheitlichen. Also entweder du schreibst immer <code>set_titel</code> , <code>test_witzig</code> (wobei ich hier auch zu <code>is_witzig</code> raten würde) - also immer mit Unterstrich zwischen den Wörterteilen, oder gleich <code>SetTitel</code> , <code>IsWitzig</code> , <code>GetSeiten</code> .</p>
<p>Und dass du beim Konstruktor eine Initialisierungsliste verwenden solltest, wurde schon gesagt. Im Weiteren würde ich die Parameter nicht gleich wie die Member nennen, da du so schnell den Überblick verlierst und immer <code>this-&gt;</code> verwenden musst. Mach doch z.B. die Member wie bisher (z.B. <code>autor</code> ) und die Parameter werden dann entsprechend gekennzeichnet (z.B. <code>new_autor</code> ).</p>
<p>Was ich mir bei Vererbung auch überlegen würde, wäre, die privaten Member <code>protected</code> zu machen, dann kannst du von der abgeleiteten Klasse auch ohne Schnittstellen auf die Member der Basisklasse zugreifen.</p>
<p>Und noch zum <code>const</code> : Grundsätzlich kannst du es überall dort verwenden, wo du nichts am Objekt änderst. Also beispielsweise bei den Getter-Methoden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543903</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 09 Jul 2008 06:22:09 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 12 Jan 2011 19:59:11 GMT]]></title><description><![CDATA[<p>Unregistrierter schrieb:</p>
<blockquote>
<p>Dieser Code</p>
<pre><code class="language-cpp">void Comic::testwitzig( bool witzig ) // 1 = witzig
{
   if( witzig )
      cout &lt;&lt; &quot;witzig&quot;;
   else if( !farbe )
      cout &lt;&lt; &quot;nicht witzig&quot;;
}
</code></pre>
<p>Ist ja dazu gedacht, auszugeben ob es jetzt witzig ist oder nicht. Den rufe ich<br />
bei der Ausgabe von einem Comic auf.</p>
</blockquote>
<p>Dies ist kein guter Ansatz. Du bindest dich damit zu sehr an die Oberfläche (Hier Konsole). Was ist wenn du mal auf eine UI wechselst? Willst du dann die Klasse Comic jedesmal ändern?</p>
<p>Was hat ein &quot;Comic&quot; mit der Ausgabe zu tun? Richtig: Nichts.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543944</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 12 Jan 2011 19:59:11 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 11:29:03 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Bei diesem Code musst du aufpassen, denn wenn der Fall eintrifft, dass <code>witzig</code> falsch und <code>farbe</code> wahr ist, wird nichts ausgegeben. Ist das deine Absicht? Wenn ja, würde ich einen passenderen Bezeichner suchen oder zwei einzelne Funktionen machen, weil die Farbe nicht unbedingt mit der Witzigkeit zusammenhängt.</p>
<pre><code class="language-cpp">void Comic::testwitzig( bool witzig ) // 1 = witzig 
{ 
   if( witzig ) 
      cout &lt;&lt; &quot;witzig&quot;; 
   else if( !farbe ) 
      cout &lt;&lt; &quot;nicht witzig&quot;; 
}
</code></pre>
<p>Ansonsten würde ich die Bezeichner vereinheitlichen. Also entweder du schreibst immer <code>set_titel</code> , <code>test_witzig</code> (wobei ich hier auch zu <code>is_witzig</code> raten würde) - also immer mit Unterstrich zwischen den Wörterteilen, oder gleich <code>SetTitel</code> , <code>IsWitzig</code> , <code>GetSeiten</code> .</p>
<p>Und dass du beim Konstruktor eine Initialisierungsliste verwenden solltest, wurde schon gesagt. Im Weiteren würde ich die Parameter nicht gleich wie die Member nennen, da du so schnell den Überblick verlierst und immer <code>this-&gt;</code> verwenden musst. Mach doch z.B. die Member wie bisher (z.B. <code>autor</code> ) und die Parameter werden dann entsprechend gekennzeichnet (z.B. <code>new_autor</code> ).</p>
<p>Was ich mir bei Vererbung auch überlegen würde, wäre, die privaten Member <code>protected</code> zu machen, dann kannst du von der abgeleiteten Klasse auch ohne Schnittstellen auf die Member der Basisklasse zugreifen.</p>
<p>Und noch zum <code>const</code> : Grundsätzlich kannst du es überall dort verwenden, wo du nichts am Objekt änderst. Also beispielsweise bei den Getter-Methoden.</p>
</blockquote>
<p>Ups, jetzt fällt es mir erst auf. Es muss natürlich</p>
<pre><code class="language-cpp">else if( !witzig)
</code></pre>
<p>heißen, für Farbe habe ich ja eine eigene Methode gebaut.</p>
<p>Danke für die guten Tipps, werde ich mir merken <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/1544116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544116</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 09 Jul 2008 11:29:03 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 14:02:24 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>- getter/setter inline</p>
</blockquote>
<p>Kann eine Funktion denn tatsächlich für &quot;nicht-friend-zugreifende&quot; inline sein wenn in ihr auf private members zugegriffen wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544331</guid><dc:creator><![CDATA[-.]]></dc:creator><pubDate>Wed, 09 Jul 2008 14:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 12 Jan 2011 19:59:27 GMT]]></title><description><![CDATA[<p>Unregistrierter schrieb:</p>
<blockquote>
<p>Ups, jetzt fällt es mir erst auf. Es muss natürlich</p>
<pre><code class="language-cpp">else if( !witzig)
</code></pre>
<p>heißen, für Farbe habe ich ja eine eigene Methode gebaut.</p>
<p>Danke für die guten Tipps, werde ich mir merken <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>Das dachte ich mir, dass da was falsches passiert. <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>
<p>Wobei auch diese überprüfung unsinnig wäre. Da kannst du doch einfach ein else machen.<br />
Was aber auch noch nicht gut ist, wie asc bereits gesagt hat, wenn du jetzt eine Bibliothek schreibst (allgmein, nicht unbeding eine für Bücher), dann darf so etwas da gar nicht rein. Die Ausgabe hat ja nichts damit zu tun, ob es jetzt witzig ist, oder nicht. Du kannst natürlich den &lt;&lt; - Operator überladen und dann eine Funktion schreiben, die dir alles auf einen std::ostream ausgibt, dann kannst du das nämlich wirklich einfach in eine Datei oder auf die Konsole ausgeben.</p>
<p>Zum Beispiel so:</p>
<pre><code class="language-cpp">ostream&amp; Buch::operator &lt;&lt; (std::ostream&amp; os, Buch const&amp; buch)
{
    if(buch.witzig)
        os &lt;&lt; &quot;witzig&quot;;
...
}
</code></pre>
<p>Schau dir dazu einfach Operatorenüberladung an und wegen dem std::ostream musst du dich hald ein wenig mit der Standardbibliothek anfreunden. <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/1544333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544333</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 12 Jan 2011 19:59:27 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 14:06:52 GMT]]></title><description><![CDATA[<p>-. schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>- getter/setter inline</p>
</blockquote>
<p>Kann eine Funktion denn tatsächlich für &quot;nicht-friend-zugreifende&quot; inline sein wenn in ihr auf private members zugegriffen wird?</p>
</blockquote>
<p>inline hat nichts mit dem Datenzugriff zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544336</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 09 Jul 2008 14:06:52 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 12 Jan 2011 19:59:40 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Unregistrierter schrieb:</p>
<blockquote>
<p>Ups, jetzt fällt es mir erst auf. Es muss natürlich</p>
<pre><code class="language-cpp">else if( !witzig)
</code></pre>
<p>heißen, für Farbe habe ich ja eine eigene Methode gebaut.</p>
<p>Danke für die guten Tipps, werde ich mir merken <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>Das dachte ich mir, dass da was falsches passiert. <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>
<p>Wobei auch diese überprüfung unsinnig wäre. Da kannst du doch einfach ein else machen.<br />
Was aber auch noch nicht gut ist, wie asc bereits gesagt hat, wenn du jetzt eine Bibliothek schreibst (allgmein, nicht unbeding eine für Bücher), dann darf so etwas da gar nicht rein. Die Ausgabe hat ja nichts damit zu tun, ob es jetzt witzig ist, oder nicht. Du kannst natürlich den &lt;&lt; - Operator überladen und dann eine Funktion schreiben, die dir alles auf einen std::ostream ausgibt, dann kannst du das nämlich wirklich einfach in eine Datei oder auf die Konsole ausgeben.</p>
<p>Zum Beispiel so:</p>
<pre><code class="language-cpp">ostream&amp; Buch::operator &lt;&lt; (std::ostream&amp; os, Buch const&amp; buch)
{
    if(buch.witzig)
        os &lt;&lt; &quot;witzig&quot;;
...
}
</code></pre>
<p>Schau dir dazu einfach Operatorenüberladung an und wegen dem std::ostream musst du dich hald ein wenig mit der Standardbibliothek anfreunden. <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 verstehe ich nicht ganz. Wenn ich einen Comic erstelle, dann kann ich ja festlegen, ob er witzig ist (1 = Witzig).<br />
Ist doch egal, ob ich dazu eine Funktion schreibe,<br />
die den Bool in eine Ausgabe umwandelt, oder ob ich dafür den<br />
ostream Operator überlade <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="😕"
    /><br />
Und warum lege ich mich damit auf die Console fest?<br />
Die anderen Funktionen benutzen auch cout <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="😕"
    /></p>
<pre><code class="language-cpp">else if( !witzig)
</code></pre>
<p>Stimmt, da hätte ein else gereicht, danke für den Tipp <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/1544344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544344</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 12 Jan 2011 19:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 12 Jan 2011 19:59:51 GMT]]></title><description><![CDATA[<p>Unregistrierter schrieb:</p>
<blockquote>
<p>Das verstehe ich nicht ganz. Wenn ich einen Comic erstelle, dann kann ich ja festlegen, ob er witzig ist (1 = Witzig).<br />
Ist doch egal, ob ich dazu eine Funktion schreibe,<br />
die den Bool in eine Ausgabe umwandelt, oder ob ich dafür den<br />
ostream Operator überlade <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="😕"
    /><br />
Und warum lege ich mich damit auf die Console fest?<br />
Die anderen Funktionen benutzen auch cout <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="😕"
    /></p>
</blockquote>
<p>Also du kannst dann so etwas schreiben:</p>
<pre><code class="language-cpp">Buch b;
std::cout &lt;&lt; &quot;Das von ihnen gewaehlte Buch hat folgende Beschreibung: &quot; &lt;&lt; b;

std::ofstream out (&quot;buch.txt&quot;);
out &lt;&lt; b;
</code></pre>
<p>Du solltest dann die Informatinonen in der Funktion so formatieren, wie du es haben willst. (Natürlich nicht nur ob es witzig ist, sonder auch noch Name, Titel usw.)<br />
Und das tolle ist,dass du das gleiche auch mit Files (oder anderen ostreams) machen kannst, ohne dir zu überlegen, wie du das jetzt (jedesmal) genau formatieren willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544350</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 12 Jan 2011 19:59:51 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 14:41:14 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">if( witzig )
      cout &lt;&lt; &quot;witzig&quot;;
   else if( !witzig )
      cout &lt;&lt; &quot;nicht witzig&quot;;
</code></pre>
<p>Aber um das kommt man bei deiner Methode ja auch nicht drum herum?<br />
Ich erkläre nochmal genau was ich damit bezwecke.<br />
Also mit dieser Methode gebe ich ja den Comic aus...</p>
<pre><code class="language-cpp">void Comic::printcomic()
{
   cout &lt;&lt; &quot;Titel: &quot; &lt;&lt; get_titel() &lt;&lt; endl;
   cout &lt;&lt; &quot;Autor: &quot; &lt;&lt; get_autor() &lt;&lt; endl;
   cout &lt;&lt; &quot;Seiten: &quot; &lt;&lt; get_seiten() &lt;&lt; endl;
   cout &lt;&lt; &quot;Preis: &quot; &lt;&lt; get_preis() &lt;&lt; endl;
   cout &lt;&lt; &quot;Farbe: &quot;; this-&gt;testfarbe(farbe);
   cout &lt;&lt; endl;
   cout &lt;&lt; &quot;Witzig: &quot;; this-&gt;testwitzig(witzig);
   cout &lt;&lt; endl &lt;&lt; endl;
}
</code></pre>
<p>Damit will ich alle Eigenschaften ausgeben, also auch ob es Farben hat und ob es witzig ist. Aber ich kann ja nicht einfach schreiben</p>
<pre><code class="language-cpp">cout &lt;&lt; farbe
</code></pre>
<p>bzw</p>
<pre><code class="language-cpp">cout &lt;&lt; witzig
</code></pre>
<p>denn da farbe und witzig bools sind, würde das 0 oder 1 ausgeben. Darum habe ich diese Methode geschrieben, die dann witzig ausgibt, wenn witzig &quot;eingeschaltet&quot; ist. Wenn ich &lt;&lt; überlade, dann würde das doch auch 0 oder 1 ausgeben, wenn man diese Methode weglässt. Sorry, ich stehe irgendwie auf der Leitung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544358</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 09 Jul 2008 14:41:14 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 15:20:10 GMT]]></title><description><![CDATA[<p>Klar geht das, aber es tut nicht das, was manche erwarten würden. <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>
<p>Das hier wohl schon eher:</p>
<pre><code class="language-cpp">class buch
{
public:
	buch(bool w, int f, std::string n, int s, float p):
		witzig(w),
		  farbe (f),
		  name(n),
		  seiten(s),
		  preis(p){}

		//Beachte hier, dass du du die values bekommst. get sollte nichts ausgen, sondern nur
		//etwas ZURÜCKGEBEN. Also den erwarteten Wert.
		std::string get_titel () const {return name;}
		float		get_preis () const {return preis;}
		//..
private:
	bool witzig;
	int farbe;
	std::string name;
	int seiten;
	float preis;
	//..

	friend std::ostream&amp; operator &lt;&lt; (std::ostream&amp; os, buch const&amp; b);
};

std::ostream&amp; operator &lt;&lt; (std::ostream&amp; os, buch const&amp; b)
{
	b.witzig?os &lt;&lt; &quot;witzig\n&quot;:os &lt;&lt; &quot;nicht witzig\n&quot; ;
	os &lt;&lt; &quot;Farbe: &quot; &lt;&lt; b.farbe &lt;&lt; &quot;\n&quot;;
	os &lt;&lt; &quot;Name: &quot; &lt;&lt; b.name &lt;&lt; &quot;\n&quot;;
	os &lt;&lt; &quot;Seiten: &quot; &lt;&lt; b.seiten &lt;&lt; &quot;\n&quot;;
	os &lt;&lt; &quot;Preis: &quot; &lt;&lt; b.preis &lt;&lt; &quot;\n&quot;;
	//..
	return os;
}
</code></pre>
<pre><code class="language-cpp">buch c (true, 5, &quot;hmm&quot;,10000,0.99f);
std::cout &lt;&lt; &quot;Ihr gewaehltes Buch: \n&quot; &lt;&lt; c;
</code></pre>
<p>btw:</p>
<blockquote>
<p>value?anweisung1:anweisung2;</p>
</blockquote>
<p>Nennt sich ternärer Operator. Wenn value wahr ist, mache anweisung1, sonst anweisung2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544383</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 09 Jul 2008 15:20:10 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 18:18:08 GMT]]></title><description><![CDATA[<p>jo stimmt, den &lt;&lt; Operator zu überladen, wäre hier schon sinnvoll.<br />
Aber da ich die Bücher sowieso nur auf der Console ausgeben will, rentiert es sich nicht, den Code zu ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544510</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 09 Jul 2008 18:18:08 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 18:24:26 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>btw:<br />
Zitat:</p>
<pre><code class="language-cpp">value?anweisung1:anweisung2;
</code></pre>
<p>Nennt sich ternärer Operator. Wenn value wahr ist, mache anweisung1, sonst anweisung2.</p>
</blockquote>
<p>und ist immer wieder herrlich unübersichtlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<pre><code class="language-cpp">b.witzig?os &lt;&lt; &quot;witzig\n&quot;:os &lt;&lt; &quot;nicht witzig\n&quot; ;
</code></pre>
<p>vs.</p>
<pre><code class="language-cpp">if (b.witzig)
   os &lt;&lt; &quot;witzig\n&quot;;
else os &lt;&lt; &quot;nicht witzig\n&quot;;
</code></pre>
<p>oder:</p>
<pre><code class="language-cpp">if (!b.witzig)
   os &lt;&lt; &quot;nicht &quot;;
os &lt;&lt; &quot;witzig\n&quot;;
</code></pre>
<p>aber ich würd wo das normale if bevorzugen ^^</p>
<p>bb</p>
<p>edit:</p>
<p>ach so - warum int farbe?<br />
willst du die anzahl verwendeten farben speichern?<br />
so, wie ich die klasse ma verstanden (überflogen) hatte, sollte das heißen, ob sie schwarz/weiß sind oder in farbe... aber das is ja eher nebensächlich</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544513</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 09 Jul 2008 18:24:26 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 18:24:35 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<blockquote>
<p>value?anweisung1:anweisung2;</p>
</blockquote>
<p>Nennt sich ternärer Operator. Wenn value wahr ist, mache anweisung1, sonst anweisung2.</p>
</blockquote>
<p>Nö, Anweisungen dürfen da nicht stehen, nur Ausdrücke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544516</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 09 Jul 2008 18:24:35 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 18:30:09 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<blockquote>
<p>value?anweisung1:anweisung2;</p>
</blockquote>
<p>Nennt sich ternärer Operator. Wenn value wahr ist, mache anweisung1, sonst anweisung2.</p>
</blockquote>
<p>Nö, Anweisungen dürfen da nicht stehen, nur Ausdrücke.</p>
</blockquote>
<p>das halte ich für falsch...</p>
<pre><code class="language-cpp">bool tu_ichs_oder_nicht (true);
tu_ichs_oder_nicht ? object-&gt;function (&quot;ausdruck&quot;):object-&gt;other_function (&quot;ausdruck&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1544522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544522</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 09 Jul 2008 18:30:09 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 18:49:50 GMT]]></title><description><![CDATA[<p>was willst du uns sagen? dass da nur ausdrücke (expressions) stehen dürfen? dann ergibt aber nichts mehr wirklich sinn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544529</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Wed, 09 Jul 2008 18:49:50 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 19:02:23 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>ach so - warum int farbe?<br />
willst du die anzahl verwendeten farben speichern?<br />
so, wie ich die klasse ma verstanden (überflogen) hatte, sollte das heißen, ob sie schwarz/weiß sind oder in farbe... aber das is ja eher nebensächlich</p>
</blockquote>
<p>Es soll anzeigen, ob es schwarz oder weiß ist. In meinem Code ist das auch ein bool. Das Problem war, dass ich die abgeleitete Klasse noch erweitern wollte, mir sind aber nur die Eigenschaften Farbe und witzig eingefallen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1544533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544533</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 09 Jul 2008 19:02:23 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 12 Jan 2011 20:00:07 GMT]]></title><description><![CDATA[<p>Unregistrierter schrieb:</p>
<blockquote>
<p>jo stimmt, den &lt;&lt; Operator zu überladen, wäre hier schon sinnvoll.<br />
Aber da ich die Bücher sowieso nur auf der Console ausgeben will, rentiert es sich nicht, den Code zu ändern.</p>
</blockquote>
<p>Gerade diese Denkweise wird dir schnell zum Kreuz. Vom OO Design Standpunkt (und um den ging es dir ja u.a. auch im ersten Posting) sollten die Klassen die Daten halten nichts mit den Klassen zu tun haben, die diese Daten ausgeben. Das sorgt dafür, dass auch 3 Monate später, wenn man seine Bilbiothek zu Übungszwecken mal in eine GUI Anwendung packen will, nicht den ganzen Code umschreiben muss, der nur für die Daten zuständig ist, sondern diesen einfach wiederverwenden kann - ein Kernaspekt von gutem OO Design.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544535</guid><dc:creator><![CDATA[Mehlvogel]]></dc:creator><pubDate>Wed, 12 Jan 2011 20:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 09 Jul 2008 19:19:11 GMT]]></title><description><![CDATA[<p>Aber wenn ich den ostream Operator überlade, kann ich das doch<br />
auch nicht in eine GUI Anwendung packen, da es ja iostream ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544540</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 09 Jul 2008 19:19:11 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung von objektorientiertem Code on Wed, 12 Jan 2011 20:00:20 GMT]]></title><description><![CDATA[<p>Unregistrierter schrieb:</p>
<blockquote>
<p>Aber wenn ich den ostream Operator überlade, kann ich das doch<br />
auch nicht in eine GUI Anwendung packen, da es ja iostream ist.</p>
</blockquote>
<p>iostream gehört zur Standardbibliothek und ist somit eigentlich überall verfügbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544544</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 12 Jan 2011 20:00:20 GMT</pubDate></item></channel></rss>