<?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[Fragen zur Vererbung]]></title><description><![CDATA[<p>Guten Tag,</p>
<p>ich habe ein Problem mit der Vererbung einer Klasse und hoffe das mir jemand helfen kann.</p>
<p>Es geht um folgende Aufgabenstellung:</p>
<p>Ich habe eine Basisklasse: Bauteil</p>
<p>Diese ist definiert und implementiert. Nun soll ich eine Kindklasse: Kondensator, defnieren und implementieren.</p>
<p>gegeben sind die Konstruktoren:</p>
<pre><code class="language-cpp">Kondensator(); 
Kondensator(double nWert, string nName);
</code></pre>
<p>und die Einheit soll als feste Zeichenfolge &quot;F&quot; haben.</p>
<p>ebenfalls sind die Funktionen</p>
<pre><code class="language-cpp">void Parallel(Kondensator P1);
static Kondensator Seriell(Kondensator P1, Kondensator P2, string nName);
</code></pre>
<p>von der Klasse Bauteil ist folgendes vorhanden:</p>
<pre><code class="language-cpp">class Bauteil
{
     private:
       string Name;
     protected:
       double Wert;
       string Einheit;
     public:
       Bauteil();
       Bauteil(double nWert, string nEinheit, string nName);
       void set_Name(string nName);
       string get_Name();
       void Drucken();
};
</code></pre>
<p>und die Implementierung:</p>
<pre><code class="language-cpp">Bauteil::Bauteil()
{
  Wert = 0;
  Einheit = &quot;n.d.&quot;;
  Name = &quot;n.d.&quot;;
}

Bauteil::Bauteil(double nWert, string nEinheit, string nName)
{
    Wert = nWert;
    Einheit = nEinheit;
    Name = nName;
}
void Bauteil::set_Name(string nName) { Name = nName; }

string Bauteil::get_Name() { return Name; }

void Bauteil::Drucken()
{
    cout &lt;&lt; Name &lt;&lt; &quot;(&quot; &lt;&lt; Wert &lt;&lt; &quot; &quot; &lt;&lt; Einheit &lt;&lt; &quot;)&quot; &lt;&lt; endl;
}
</code></pre>
<p>Nun zum Problem:</p>
<p>Es soll der Klassenprototyp der Klasse Kondensator erstellt werden, sowieo die Implementierung der Konstruktoren.</p>
<p>Meine &quot;Lösung&quot;:</p>
<pre><code class="language-cpp">class Kondensator : public Bauteil
{
   privat:
     string Name;    //richtig? Da &quot;string Name&quot; der Mutterklasse ja privat?
   public:
     Kondensator();    //standardkonstruktor
     Kondensator(double nWert, string nName); //überl. Konsrukt.
     void Parallel(Kondensator P1); //methoden
     satic Kondensator Seriell(Kondensator P1, Kondensator P2, string nName);
}
</code></pre>
<p>nun die Implementierung:</p>
<pre><code class="language-cpp">Kondensator::Kondensator()
            :Bauteil(Wert, Einheit)  //richtig? diese werden ja übergeben
{
   name=&quot;n.d&quot;; //nicht definiert
   Einheit='F'; //laut aufgabenstellung soll die Einheit ja F sein
   Wert=0;    // wie vorher bereits
}

Kondensator::Kondensator(double nWert, string nName)
            :Bauteil(Wert, Einheit)  //richtig? diese werden ja übergeben
{
  Name=nName;
  Wert=nWert;
  Einheit='F';
}
</code></pre>
<p>Ist das so richtig? Wird von der Klasse Bauteil nur der &quot;protected&quot; Inhalt vererbt?</p>
<p>Ich habe zwar Übungsbeispiele und den Erlenkötter, komme aber einfach nicht vorran.</p>
<p>Vielen Dank für eventuelle Hilfe. <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/topic/289078/fragen-zur-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 08:53:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289078.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Jun 2011 10:42:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 10:42:57 GMT]]></title><description><![CDATA[<p>Guten Tag,</p>
<p>ich habe ein Problem mit der Vererbung einer Klasse und hoffe das mir jemand helfen kann.</p>
<p>Es geht um folgende Aufgabenstellung:</p>
<p>Ich habe eine Basisklasse: Bauteil</p>
<p>Diese ist definiert und implementiert. Nun soll ich eine Kindklasse: Kondensator, defnieren und implementieren.</p>
<p>gegeben sind die Konstruktoren:</p>
<pre><code class="language-cpp">Kondensator(); 
Kondensator(double nWert, string nName);
</code></pre>
<p>und die Einheit soll als feste Zeichenfolge &quot;F&quot; haben.</p>
<p>ebenfalls sind die Funktionen</p>
<pre><code class="language-cpp">void Parallel(Kondensator P1);
static Kondensator Seriell(Kondensator P1, Kondensator P2, string nName);
</code></pre>
<p>von der Klasse Bauteil ist folgendes vorhanden:</p>
<pre><code class="language-cpp">class Bauteil
{
     private:
       string Name;
     protected:
       double Wert;
       string Einheit;
     public:
       Bauteil();
       Bauteil(double nWert, string nEinheit, string nName);
       void set_Name(string nName);
       string get_Name();
       void Drucken();
};
</code></pre>
<p>und die Implementierung:</p>
<pre><code class="language-cpp">Bauteil::Bauteil()
{
  Wert = 0;
  Einheit = &quot;n.d.&quot;;
  Name = &quot;n.d.&quot;;
}

Bauteil::Bauteil(double nWert, string nEinheit, string nName)
{
    Wert = nWert;
    Einheit = nEinheit;
    Name = nName;
}
void Bauteil::set_Name(string nName) { Name = nName; }

string Bauteil::get_Name() { return Name; }

void Bauteil::Drucken()
{
    cout &lt;&lt; Name &lt;&lt; &quot;(&quot; &lt;&lt; Wert &lt;&lt; &quot; &quot; &lt;&lt; Einheit &lt;&lt; &quot;)&quot; &lt;&lt; endl;
}
</code></pre>
<p>Nun zum Problem:</p>
<p>Es soll der Klassenprototyp der Klasse Kondensator erstellt werden, sowieo die Implementierung der Konstruktoren.</p>
<p>Meine &quot;Lösung&quot;:</p>
<pre><code class="language-cpp">class Kondensator : public Bauteil
{
   privat:
     string Name;    //richtig? Da &quot;string Name&quot; der Mutterklasse ja privat?
   public:
     Kondensator();    //standardkonstruktor
     Kondensator(double nWert, string nName); //überl. Konsrukt.
     void Parallel(Kondensator P1); //methoden
     satic Kondensator Seriell(Kondensator P1, Kondensator P2, string nName);
}
</code></pre>
<p>nun die Implementierung:</p>
<pre><code class="language-cpp">Kondensator::Kondensator()
            :Bauteil(Wert, Einheit)  //richtig? diese werden ja übergeben
{
   name=&quot;n.d&quot;; //nicht definiert
   Einheit='F'; //laut aufgabenstellung soll die Einheit ja F sein
   Wert=0;    // wie vorher bereits
}

Kondensator::Kondensator(double nWert, string nName)
            :Bauteil(Wert, Einheit)  //richtig? diese werden ja übergeben
{
  Name=nName;
  Wert=nWert;
  Einheit='F';
}
</code></pre>
<p>Ist das so richtig? Wird von der Klasse Bauteil nur der &quot;protected&quot; Inhalt vererbt?</p>
<p>Ich habe zwar Übungsbeispiele und den Erlenkötter, komme aber einfach nicht vorran.</p>
<p>Vielen Dank für eventuelle Hilfe. <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/2085336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085336</guid><dc:creator><![CDATA[AntonC++]]></dc:creator><pubDate>Tue, 28 Jun 2011 10:42:57 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 11:17:58 GMT]]></title><description><![CDATA[<p>AntonC++ schrieb:</p>
<blockquote>
<p>Meine &quot;Lösung&quot;:</p>
<pre><code class="language-cpp">privat:
     string Name;    //richtig? Da &quot;string Name&quot; der Mutterklasse ja privat?
</code></pre>
</blockquote>
<p>Nein, nicht richtig. Die Elternklasse hat schon ein Namensattribut, auf das du zwar keinen direkten Zugriff hast, aber das macht nichts. Dafür sind die setter und getter da.</p>
<blockquote>
<p>nun die Implementierung:</p>
<pre><code class="language-cpp">Kondensator::Kondensator()
            :Bauteil(Wert, Einheit)  //richtig? diese werden ja übergeben
</code></pre>
</blockquote>
<p>Nein, da wird nichts übergeben. Kondensator::Kondensator() hat keine Argumente. Das sollte dir dein Compiler auch sagen, dass Wert und Einheit nicht definiert sind.</p>
<pre><code class="language-cpp">{
   name=&quot;n.d&quot;; //nicht definiert 
   Einheit='F'; //laut aufgabenstellung soll die Einheit ja F sein
   Wert=0;    // wie vorher bereits
}
</code></pre>
<p>die Attribute sind alle Teil der Elternklasse und sollten über deren Konstruktor gesetzt werden. In Kondensator hast du da keinen Zugriff drauf.</p>
<pre><code class="language-cpp">Kondensator::Kondensator(double nWert, string nName)
            :Bauteil(Wert, Einheit)  //richtig? diese werden ja übergeben
</code></pre>
<p>falsch. Bauteil hat keinen Konstruktor mit zwei Argumenten.</p>
<pre><code class="language-cpp">{
  Name=nName;
  Wert=nWert;
  Einheit='F';
}
</code></pre>
<p>siehe oben.</p>
<blockquote>
<p>Ist das so richtig? Wird von der Klasse Bauteil nur der &quot;protected&quot; Inhalt vererbt?</p>
</blockquote>
<p>Vererbt wird alles. Zugreifen kann die abgeleitete Klasse nur auf protected und public Member.</p>
<blockquote>
<p>Ich habe zwar Übungsbeispiele und den Erlenkötter, komme aber einfach nicht vorran.</p>
</blockquote>
<p>Die Übungsbeispiele bringen dir nicht viel, weil du offenbar die grundlagen noch nicht wirklich verinnerlicht hast. Lies dir die entsprechenden Kapitel im buch deiner Wahl nochmal ausführlich durch (und zwar so, dass du sie verstehst).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085344</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 28 Jun 2011 11:17:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 11:44:37 GMT]]></title><description><![CDATA[<p>Die Basisklasse übergibt mir ja alle Werte, Kondensator hat so gesehen keine &quot;Neuen&quot;.</p>
<p>Sprich, die Definition wäre</p>
<pre><code class="language-cpp">class Kondensator : public Bauteil
{
    private:
      //leer
    public:
      Kondensator();
      Kondensator(double nWert, string nName);
      void Parallel(Kondensator P1);
      static Kondensator Seriell(Kondensator P1, Kondensator P2, string nName);
}
</code></pre>
<p>Dieser Teil müsste dann so stimmen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085358</guid><dc:creator><![CDATA[AntonC++]]></dc:creator><pubDate>Tue, 28 Jun 2011 11:44:37 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 11:46:05 GMT]]></title><description><![CDATA[<p>Servus Anton,<br />
wie ich deinem Beitrag entnehme schreibst du morgen auch die Klausur in C++?<br />
Hast du nähere Infos zu den Klausurthemen?<br />
Wäre nett, wenn du antwortest.<br />
Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085359</guid><dc:creator><![CDATA[Malle3084]]></dc:creator><pubDate>Tue, 28 Jun 2011 11:46:05 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 11:50:46 GMT]]></title><description><![CDATA[<p>AntonC++ schrieb:</p>
<blockquote>
<p>Die Basisklasse übergibt mir ja alle Werte, Kondensator hat so gesehen keine &quot;Neuen&quot;.</p>
<p>Sprich, die Definition wäre</p>
<pre><code class="language-cpp">class Kondensator : public Bauteil
{
    private:
      //leer
    public:
      Kondensator();
      Kondensator(double nWert, string nName);
      void Parallel(Kondensator P1);
      static Kondensator Seriell(Kondensator P1, Kondensator P2, string nName);
}
</code></pre>
<p>Dieser Teil müsste dann so stimmen?</p>
</blockquote>
<ol>
<li>Welchen Sinn haben die leeren Konstruktoren in Kondensator und Bauteil? Defekte Bauteile willst du damit ja eher nicht simulieren</li>
<li>2 parallel oder seriell vorschaltete Kondensatoren <strong>sind</strong> kein Kondensator oder ein anders Bauteil. Da stimmt etwas mit deiner Programmlogik nicht</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2085365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085365</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 28 Jun 2011 11:50:46 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 11:58:14 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/29791">@Malle</a></p>
<blockquote>
<p>Guten Tag Herr ....,</p>
<p>vor diesem Klausurtermin habe ich kein Tutorium zu Programmieren II angeboten. Grundsätzlich empfehle ich Ihnen, die altel Klausuraufgaben als Vorbereitung zu bearbeiten. Ansonsten wird diese Klausur einen ähnlichen Aufbau wie die alten Klausuren haben.</p>
<p>Viel Erfolg!</p>
<p>Freundliche Grüße,<br />
....</p>
</blockquote>
<p>Die Konstruktoren und Methoden sind so vorgegeben, sehe den Sinn ebenfalls nicht.</p>
<p>Man soll halt den Klassenprotoyp von Kondensator aufschreiben und die Konstruktoren implementieren...</p>
<p>wäre dann die Implementierung einfach:</p>
<pre><code class="language-cpp">Kondensator::Kondensator()
{ } // ?
</code></pre>
<p>und</p>
<pre><code class="language-cpp">Kondensator::Kondensator(double nWert, string nName)
                :Bauteil(nWert, nEinheit, nName)
{ // und dann? Was muss ich an dieser Stelle beachten?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2085371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085371</guid><dc:creator><![CDATA[AntonC++]]></dc:creator><pubDate>Tue, 28 Jun 2011 11:58:14 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 12:07:44 GMT]]></title><description><![CDATA[<p>AntonC++ schrieb:</p>
<blockquote>
<p>wäre dann die Implementierung einfach:</p>
<pre><code class="language-cpp">Kondensator::Kondensator()
{ } // ?
</code></pre>
</blockquote>
<p>Dann wäre der Name und die Einheit &quot;n.d.&quot;, weil du (implizit) den default-Ctor von Bauteil aufrufst. Die Einheit soll für Kondensatoren aber grundsätzlich &quot;F&quot; sein, wenn ich die Aufgabe richtig sehe. Demzufolge solltest du den anderen Konstruktor von Bauteil bemühen.</p>
<blockquote>
<pre><code class="language-cpp">Kondensator::Kondensator(double nWert, string nName)
                :Bauteil(nWert, nEinheit, nName)
{ // und dann? Was muss ich an dieser Stelle beachten?
</code></pre>
</blockquote>
<p>Was ist nEinheit? (Hint: Wie soll die Einheit von Kondensatoren heißen?)</p>
<p>Du solltest dich <strong>wirklich</strong> nochmal intensiv mit der Thematik beschäftigen. Was du hier machst sieht arg nach rumprobieren aus, bei der Klausur hast du aber nur einen Versuch, die Aufgabe richtig zu lösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085376</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 28 Jun 2011 12:07:44 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 13:53:34 GMT]]></title><description><![CDATA[<p>Da ich das Thema nun zum gefühlten 10x gelesen habe, denk ich etwas mehr verstanden zu haben.</p>
<p>Da laut Aufgabenstellung F als Einheit deklariert werden soll und keine weiteren Attribute gerbaucht werden, wird diese im Standardkontr. geändert.</p>
<p>nun erstmal zur Klasse:</p>
<pre><code class="language-cpp">class Kondensator : public Bauteil
{
  public:
   Kondensator();
   Kondensator(double nWert, string nName);
   void Parallel(Kondensator P1);
   static Kondensator Seriell(Kondensator P1,Kondensator P2,string nName); 

  //private: wird nicht benötigt da keine neuen Attribute gebraucht
  //bitte korriegen falls ich hier ein Denkfehler habe
};
</code></pre>
<p>Nun wieder zur Implementierung:</p>
<p>da ich den Standardkontr. implementieren soll und die Einheit bei der Kindsklasse als &quot;F&quot; definiert wird, muss der Wert anders implementiert werden.<br />
Hab ich das so richtig verstanden?</p>
<pre><code class="language-cpp">Kondensator::Kondensator() //standardkontr.
            :Bauteil(nWert, nEinheit, nName) //Konstruktoraufruf
{
        //nun hat der Standardkonstr. keine Parameter
        //kann ich dann trotzdem nEinheit='F' definieren?
        //weil auf &quot;Einheit&quot; hab ich ja keinen Zugriff wegen Elternklasse
  nEinheit='F'
       //wenn falsch, bitte erläutern
}
</code></pre>
<p>selbe Spiel nun beim überladenen Konstr.</p>
<pre><code class="language-cpp">Kondensator::Kondensator(double nWert, string nName)
            :Bauteil (nWert, nEinheit, nName)
{
    //hier stellt sich die selbe Frage wie oben
    //die Parameter dürfen meines Wissens die selben Namen haben
    //aber macht es Sinn die Implementierung wie folgt zu machen?

   nWert=nWert; //?  Ein paar Tips dazu oder evtl etwas zum Nachschlagen online wäre echt hilfreich
   nName=nName;
   nEinheit='F'; //Obwohl der über.Konstr. kein derartigen Paramter hat?

}
</code></pre>
<p>Vielen Dank für die Mühe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085434</guid><dc:creator><![CDATA[AntonC++]]></dc:creator><pubDate>Tue, 28 Jun 2011 13:53:34 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 14:07:31 GMT]]></title><description><![CDATA[<p>AntonC++ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Kondensator::Kondensator(double nWert, string nName)
            :Bauteil (nWert, nEinheit, nName)
{
    //hier stellt sich die selbe Frage wie oben
    //die Parameter dürfen meines Wissens die selben Namen haben
    //aber macht es Sinn die Implementierung wie folgt zu machen?

   nWert=nWert; //?  Ein paar Tips dazu oder evtl etwas zum Nachschlagen online wäre echt hilfreich
   nName=nName;
   nEinheit='F'; //Obwohl der über.Konstr. kein derartigen Paramter hat?
              
}
</code></pre>
</blockquote>
<p>Die Zuweisungen im Konstruktor brauchst du nicht, da du die Parameter direkt an den Basisklassenkonstruktor weiterreichst. Und da jeder Konstruktor die Einheit 'F' hat, musst du diese auch direkt an den Basisklassenkonstruktor weitergeben.<br />
Also:</p>
<pre><code class="language-cpp">Kondensator::Kondensator(double nWert, string nName)
            :Bauteil (nWert, 'F', nName)
{ 
}
</code></pre>
<p>Analog, der Defaultkonstruktor. Hier musst du Dir allerdings Defaultwerte für nName und nWert überlegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085442</guid><dc:creator><![CDATA[Dudemeister]]></dc:creator><pubDate>Tue, 28 Jun 2011 14:07:31 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 14:14:12 GMT]]></title><description><![CDATA[<p>Indem ich nun den Parameter im Basiskonstruktor änder, wird nun</p>
<pre><code class="language-cpp">nEinheit = 'F'
</code></pre>
<p>? oder eher</p>
<pre><code class="language-cpp">Einheit='F'
</code></pre>
<p>weil</p>
<pre><code class="language-cpp">nEinheit=Einheit
</code></pre>
<p>eigentlich</p>
<p>sprich: da ich</p>
<pre><code class="language-cpp">(double nWert, string nName)
</code></pre>
<p>im Kondensator Konstruktor habe werden diese automatisch deklariert?</p>
<p>Und weil nEinheit fehlt muss/kann ich diese im Basiskontruktor verändern?</p>
<p>Fragen über Fragen <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>Kann mich nicht oft genug bedanken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085448</guid><dc:creator><![CDATA[AntonC++]]></dc:creator><pubDate>Tue, 28 Jun 2011 14:14:12 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 14:22:52 GMT]]></title><description><![CDATA[<p>Hmmm.... Ich versteh jetzt nicht was du genau wissen willst.<br />
An der Bauteil-Klasse musst du garnichts ändern. Ich glaube du solltest dir Klassen und Vererbung nochmal genauer anschauen. Im netz gibts genügend Beispiele und Tutorials.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085454</guid><dc:creator><![CDATA[Dudemeister]]></dc:creator><pubDate>Tue, 28 Jun 2011 14:22:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 14:30:42 GMT]]></title><description><![CDATA[<p>AntonC++ schrieb:</p>
<blockquote>
<p>Da ich das Thema nun zum gefühlten 10x gelesen habe, denk ich etwas mehr verstanden zu haben.</p>
</blockquote>
<p>zigmal lesen bringt nichts, wenn du es nur überfliegst. Das scheint aber der Fall zu sein.</p>
<p>Mal ein paar Fragen, um zu sehen wie weit du das verstanden hast:<br />
- ist das Attribut &quot;Einheit&quot; Bestandteil der Klasse &quot;Kondensator&quot;, direkt oder indirekt?<br />
- welche Möglichkeiten gibt es, das Attribut &quot;Einheit&quot; eines Baustein-Objektes zu belegen? Wenn ja, welche?<br />
- Welche Möglichkeiten gibt es innerhalb eines Kondensator-Objektes, auf die Attribute des Baustein-Elternobjektes zuzugreifen?<br />
- Welche Möglichkeiten gibt es, von außerhalb auf das Baustein-Elternobjekt (und seine Attribute) eines Kondensator-Objektes zuzugreifen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085457</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 28 Jun 2011 14:30:42 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 14:47:42 GMT]]></title><description><![CDATA[<blockquote>
<p>- ist das Attribut &quot;Einheit&quot; Bestandteil der Klasse &quot;Kondensator&quot;, direkt oder indirekt?</p>
</blockquote>
<p><strong>Einheit</strong> wurde in der Basisklasse unter <strong>protected</strong> deklariert, deswegen kann <strong>Klasse Kondensator</strong> direkt darauf zugreifen.</p>
<blockquote>
<p>- welche Möglichkeiten gibt es, das Attribut &quot;Einheit&quot; eines Baustein-Objektes zu belegen? Wenn ja, welche?</p>
</blockquote>
<p>Meinst du mit dem Baustein-Objekt eine Instanz?</p>
<p>Wenn ich das Objekt erzeuge: &quot;Bauteil T1(10,'F',K1)&quot; habe ich &quot;Einheit&quot; ja nun 'F' zugewiesen.</p>
<blockquote>
<p>- Welche Möglichkeiten gibt es innerhalb eines Kondensator-Objektes, auf die Attribute des Baustein-Elternobjektes zuzugreifen?</p>
</blockquote>
<p>Ein Kondensator Objekt wäre ja &quot;Kondensator K1(10,K1)&quot; Der Inhalt der Klammer wird den Attributen zugewiesen.</p>
<blockquote>
<p>- Welche Möglichkeiten gibt es, von außerhalb auf das Baustein-Elternobjekt (und seine Attribute) eines Kondensator-Objektes zuzugreifen?</p>
</blockquote>
<p>Heißt Außerhalb, wenn man nicht in der Klasse ist?<br />
Muss bei der Frage leider passen.<br />
Kümmer mich aber sofort drum.</p>
<p>Ich hoffe ich bin nicht zu weit von der Wahrheit entfernt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085472</guid><dc:creator><![CDATA[AntonC++]]></dc:creator><pubDate>Tue, 28 Jun 2011 14:47:42 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 18:18:59 GMT]]></title><description><![CDATA[<p>AntonC++ schrieb:</p>
<blockquote>
<blockquote>
<p>- ist das Attribut &quot;Einheit&quot; Bestandteil der Klasse &quot;Kondensator&quot;, direkt oder indirekt?</p>
</blockquote>
<p><strong>Einheit</strong> wurde in der Basisklasse unter <strong>protected</strong> deklariert, deswegen kann <strong>Klasse Kondensator</strong> direkt darauf zugreifen.</p>
</blockquote>
<p>Es geht nicht um den zugriff, sondern darum, ob es ein bestandteil der Klasse ist, d.h. ob ein Kondensator-Objekt (also eine Instanz der Klasse &quot;Kondensator&quot;) ein Attribut &quot;Einheit&quot; hat.</p>
<blockquote>
<blockquote>
<p>- welche Möglichkeiten gibt es, das Attribut &quot;Einheit&quot; eines Baustein-Objektes zu belegen? Wenn ja, welche?</p>
</blockquote>
<p>Meinst du mit dem Baustein-Objekt eine Instanz?</p>
</blockquote>
<p>Objekte sind (im Objektorientierten Sinn) Instanzen einer Klasse, ja.</p>
<blockquote>
<p>Wenn ich das Objekt erzeuge: &quot;Bauteil T1(10,'F',K1)&quot; habe ich &quot;Einheit&quot; ja nun 'F' zugewiesen.</p>
</blockquote>
<p>Hast du. Und welche Möglichkeiten hast du noch, um darauf zuzugreifen, außer über den Konstruktor?</p>
<blockquote>
<blockquote>
<p>- Welche Möglichkeiten gibt es innerhalb eines Kondensator-Objektes, auf die Attribute des Baustein-Elternobjektes zuzugreifen?</p>
</blockquote>
<p>Ein Kondensator Objekt wäre ja &quot;Kondensator K1(10,K1)&quot; Der Inhalt der Klammer wird den Attributen zugewiesen.</p>
</blockquote>
<p>Es ging in der Frage darum, wie du innerhalb des Kondensator-Objektes, also innerhalb der Methoden von Kondensator auf die Attribute der Elternklasse zugreifen kannst. Das hast du nicht beantwortet.</p>
<blockquote>
<blockquote>
<p>- Welche Möglichkeiten gibt es, von außerhalb auf das Baustein-Elternobjekt (und seine Attribute) eines Kondensator-Objektes zuzugreifen?</p>
</blockquote>
<p>Heißt Außerhalb, wenn man nicht in der Klasse ist?<br />
Muss bei der Frage leider passen.<br />
Kümmer mich aber sofort drum.</p>
</blockquote>
<p>Dann mal los <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/2085477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085477</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 28 Jun 2011 18:18:59 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 15:23:10 GMT]]></title><description><![CDATA[<p>Wenn ein Kondensator Objekt erstelle soll es ja das Attribut &quot;Einheit&quot; besitzen. Dementsprechend hat es dieses, wie entscheide ich ob dieses direkt oder indirekt ist?</p>
<blockquote>
<p>- Welche Möglichkeiten gibt es innerhalb eines Kondensator-Objektes, auf die Attribute des Baustein-Elternobjektes zuzugreifen?</p>
</blockquote>
<p>außer mit dem Konstruktor kann ich auch mit methoden auf die Attribute zugreifen</p>
<blockquote>
<p>Es ging in der Frage darum, wie du innerhalb des Kondensator-Objektes, also innerhalb der Methoden von Kondensator auf die Attribute der Elternklasse zugreifen kannst. Das hast du nicht beantwortet.</p>
</blockquote>
<p>Greife ich nicht auf die Attribute zu indem ich das Objekt erstelle und innerhalb der Klammern &quot;Werte&quot; angebe? Bei dieser Frage steh ich grad sehr auf dem Schlauch.</p>
<blockquote>
<p>- Welche Möglichkeiten gibt es, von außerhalb auf das Baustein-Elternobjekt (und seine Attribute) eines Kondensator-Objektes zuzugreifen?</p>
</blockquote>
<p>Muss zugeben das ich gerade keinen Durchblick hab...</p>
<p>Nun vielleicht eine Grundlegen Frage:</p>
<p>Ich habe die Bauteil-Klasse, diese übergibt mir ihre Daten auf meine Kondensator-Klasse.<br />
Zugriff habe ich auf protected und public, und privat nur eingeschränkt.</p>
<p>wenn ich nun meine Kondensator-Klasse erstelle, welche Attribute hat diese durch</p>
<pre><code class="language-cpp">class Kondensator : public Bauteil
</code></pre>
<p>mir is nocht nicht richtig klar, wie die Attribute sich &quot;verteilen&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085504</guid><dc:creator><![CDATA[AntonC++]]></dc:creator><pubDate>Tue, 28 Jun 2011 15:23:10 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 16:13:07 GMT]]></title><description><![CDATA[<p>Vielleicht ist es einfacher, wenn man ein anderes Beispiel bringt.</p>
<p>Wir haben die Klasse figure und wollen triangle ableiten.</p>
<pre><code class="language-cpp">class figure 
{
  private:
    string name;
    color paint;
    bool visible;
  public:
    figure(string n, color c, bool v);
    virtual ~figure();
    color get_color();
    bool get_visible();
    string get_name();
    string get_colorname();
    virtual float calc_surface() = 0; // Abstrakte Klasse durch rein
    virtual void display() = 0; // virtuelle Methoden.
};
</code></pre>
<pre><code class="language-cpp">class triangle : public figure
{
  private:
    double (a,b,c,s);
  public:
    triangle();
    triangle(string n, color c, bool v, double x, double y, double z);
    ~triangle();
    static bool is_triangle(double a, double b, double c);
    void display();
};
</code></pre>
<p>wenn ich nun den überl. Konstruktor von triangle implementier:</p>
<pre><code class="language-cpp">triangle::triangle(string n, color c, bool v, double x, double y, double z)
         :figure(n,c,v) //es werden n,c,v übernommen (von figure)
{
   a=x;
   b=y;
   c=z;
        //&quot;triangle&quot; beinhaltet diesmal alle parameter des basiskonstruktors, wieso is das bei der anderen Aufgabe nicht der Fall? 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2085532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085532</guid><dc:creator><![CDATA[AntonC++]]></dc:creator><pubDate>Tue, 28 Jun 2011 16:13:07 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zur Vererbung on Tue, 28 Jun 2011 18:37:50 GMT]]></title><description><![CDATA[<p>AntonC++ schrieb:</p>
<blockquote>
<p>Wenn ein Kondensator Objekt erstelle soll es ja das Attribut &quot;Einheit&quot; besitzen. Dementsprechend hat es dieses, wie entscheide ich ob dieses direkt oder indirekt ist?</p>
</blockquote>
<p>Mit direkt/indirekt meine ich, ob es das Attribut des ondensators ist, oder ob es ein Attribut einer Elternklasse ist. Das Attribut Einheit ist ein Attribut von Bauteil, und da Kondensator von Bauteil erbt, ist Bauteil ein Teil von Kondensator. Damit hat Kondensator indirekt über Bauteil auch ein Einheit-Attribut. Das ist eine grunlegende Eigenschaft der Vererbung: Vererbung bedeutet &quot;ist-ein&quot;-Beziehung, d.h. ein Kondensator ist ein Bauteil - und hat daher logischerweise alle Eigenschaften (Attribute) eines Bauteils.</p>
<blockquote>
<blockquote>
<p>- Welche Möglichkeiten gibt es innerhalb eines Kondensator-Objektes, auf die Attribute des Baustein-Elternobjektes zuzugreifen?</p>
</blockquote>
<p>außer mit dem Konstruktor kann ich auch mit methoden auf die Attribute zugreifen</p>
</blockquote>
<p>Du kannst mit dem Konstruktor nicht von außen auf das Objekt zugreifen. Das Objekt wird durch den Konstruktor erst erzeugt. Du kannst über die Parameter des Konstruktors aber beeinflussen, wie er die Attribute initialisiert.</p>
<blockquote>
<p>Greife ich nicht auf die Attribute zu indem ich das Objekt erstelle und innerhalb der Klammern &quot;Werte&quot; angebe? Bei dieser Frage steh ich grad sehr auf dem Schlauch.</p>
</blockquote>
<p>Mit &quot;in den Klammern Werte angeben&quot; meinst du vermutlich die Initialisierungsliste - damit initislisierst du die Attribute, d.h. legst fest wie sie erzeugt werde. Zugreifen kannst du auf die Attribute von außen über die öffentlichen Methoden, und im Kondensator kannst du auf die protected Attribute des Bauteil-Objektes zugreifen, das im jeweiligen Kondensator-Objekt &quot;eingebettet&quot; ist.</p>
<blockquote>
<blockquote>
<p>- Welche Möglichkeiten gibt es, von außerhalb auf das Baustein-Elternobjekt (und seine Attribute) eines Kondensator-Objektes zuzugreifen?</p>
</blockquote>
<p>Muss zugeben das ich gerade keinen Durchblick hab...</p>
</blockquote>
<p>Wie oben beschrieben ist ein Kondensator auch ein Bauteil, das bedeutet in C++, dass jedes Kondenator-Objekt ein bauteil-Unterobjekt besitzt. Das sollte im Buch deiner Wahl aber auch erklärt sein.</p>
<blockquote>
<p>Nun vielleicht eine Grundlegen Frage:</p>
<p>Ich habe die Bauteil-Klasse, diese übergibt mir ihre Daten auf meine Kondensator-Klasse.</p>
</blockquote>
<p>Nein, nicht so wirklich. Siehe oben...</p>
<blockquote>
<p>Zugriff habe ich auf protected und public, und privat nur eingeschränkt.</p>
</blockquote>
<p>Nein. Auf privat hast du überhat keinen Zugriff.</p>
<p>Hoffe, das macht es etwas klarer <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/2085627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085627</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 28 Jun 2011 18:37:50 GMT</pubDate></item></channel></rss>