<?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[Klassenbeziehung]]></title><description><![CDATA[<p>hallo<br />
ich bin ein OOP-Anfänger und habe das folgende Problem und bin auf ihre Hilfe angewiesen. Danke<br />
ich habe 3 Klassen ine enem Programm</p>
<pre><code class="language-cpp">class A
{
  int xA;
  int funcA();
 // ....etc
}
class B
{
  int xB;
  int funcB();
  //....etc
}
class C
{
  int xC;
  int funcC();
  //....etc
}
</code></pre>
<p>die Klasse A benutzt B d.h. innerhalb der Funktion funcA() wird z.B. die Funktion funcB()aufgerufen oder die Variable xB gebraucht.<br />
Die Klasse C benutzt A und B<br />
ich habe im Internet über die Klassenbeziehungen(Aggre. Assz. und Vererb.) gelesen . ich habe das nicht ganz verstanden. aber mir geht es um die Implementierung d.h. wie werden die Objekte erzeugt und die Funktionaufrufe<br />
wie mache ich das?<br />
bitte hilft mir!<br />
vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/120330/klassenbeziehung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 07:33:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/120330.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Sep 2005 09:39:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassenbeziehung on Mon, 12 Sep 2005 09:39:00 GMT]]></title><description><![CDATA[<p>hallo<br />
ich bin ein OOP-Anfänger und habe das folgende Problem und bin auf ihre Hilfe angewiesen. Danke<br />
ich habe 3 Klassen ine enem Programm</p>
<pre><code class="language-cpp">class A
{
  int xA;
  int funcA();
 // ....etc
}
class B
{
  int xB;
  int funcB();
  //....etc
}
class C
{
  int xC;
  int funcC();
  //....etc
}
</code></pre>
<p>die Klasse A benutzt B d.h. innerhalb der Funktion funcA() wird z.B. die Funktion funcB()aufgerufen oder die Variable xB gebraucht.<br />
Die Klasse C benutzt A und B<br />
ich habe im Internet über die Klassenbeziehungen(Aggre. Assz. und Vererb.) gelesen . ich habe das nicht ganz verstanden. aber mir geht es um die Implementierung d.h. wie werden die Objekte erzeugt und die Funktionaufrufe<br />
wie mache ich das?<br />
bitte hilft mir!<br />
vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/870074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/870074</guid><dc:creator><![CDATA[citizen]]></dc:creator><pubDate>Mon, 12 Sep 2005 09:39:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenbeziehung on Mon, 12 Sep 2005 09:49:03 GMT]]></title><description><![CDATA[<p>citizen schrieb:</p>
<blockquote>
<p>ich habe im Internet über die Klassenbeziehungen(Aggre. Assz. und Vererb.) gelesen.</p>
</blockquote>
<p>eine der drei gibt's in c++ so nicht. entsprechend dürftest du gerade den plan verfolgen, etwas zu machern, das du so gar nicht machen sollst (weil kannst).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/870081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/870081</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 12 Sep 2005 09:49:03 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenbeziehung on Mon, 12 Sep 2005 10:57:13 GMT]]></title><description><![CDATA[<p>Was soll es davon nicht geben?</p>
<p>Vererbung ist klar.<br />
Bei der Aggregation ergeben mehrere Teile ein Ganzes, wobei die Einzelteile nicht von dem Gesamtobjekt abhängig sind und Assoziation ist einfach ne Beziehung.<br />
Würde man beides z.B per Zeiger machen.</p>
<p>@citizen was du meinst is evtl ne Komposition?<br />
Dann müsste Klasse A aber auch Klasse B wirklich enthalten(also net &quot;int xB;&quot; sondern &quot;B xB&quot;;), dann kannst diese Instanz von B innerhalb von A auch benutzen, das gleiche Spiel dann mit Klasse C ... .<br />
Ach ja und wenn die Methoden von außen nnutzbar sein sollen, dann musst du sie public machen, ansonsten has du keinen Zugriff</p>
]]></description><link>https://www.c-plusplus.net/forum/post/870128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/870128</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Mon, 12 Sep 2005 10:57:13 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenbeziehung on Mon, 12 Sep 2005 10:58:07 GMT]]></title><description><![CDATA[<p>Einfache Erklärung:</p>
<p>In C++ existiert die Vererbung (Klasse erbt von einer anderen), die Assoziation (ein Objekt hält sich einen Pointer auf ein anderes Objekt) und die Komposition (Objekt A beinhaltet besitzt ein Member von Typ B, dieses wird beim Erzeugen von A angelegt und beim Löschen von B zerstört.)<br />
Die Aggregation definiert eine engere Beziehung als die Assoziation, ist allerdings nicht so eng wie die Komposition (Das Objekt von Typ B kann unter Umständen nach dem Ableben von A weiterexistieren).<br />
Alle 4 Varianten lassen sich in C++ abbilden. Das Problem ist, dass die Vererbung die einzige Beziehung ist, die man eindeutig im C++-Code an einer Zeile festmachen kann.<br />
Bei allen anderen anderen Beziehungen (Assoziation, Aggregation oder Komposition) muss immer auch betrachtet werden, wie die Objekte verarbeitet werden.</p>
<p>Einzige Ausnahme hierbei gilt bei folgendem:</p>
<pre><code class="language-cpp">KlasseA ObjektA;
</code></pre>
<p>Wird eine Variable so innerhalb einer Klasse deklariert, handelt es sich um eine Komposition (feste Bindung).</p>
<p>Wird eine Variable so definiert:</p>
<p>KlasseA * ObjektA;</p>
<p>Ist es von der Implementierung des Zugriffs auf die Variable Abhängig ob es sich um eine Assoziation, Aggregation oder Komposition handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/870130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/870130</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Mon, 12 Sep 2005 10:58:07 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenbeziehung on Mon, 12 Sep 2005 12:23:47 GMT]]></title><description><![CDATA[<p>vielen Dank für das schnelle Antworten.<br />
wenn ich das richtig verstanden habe dann geht so:</p>
<pre><code class="language-cpp">class A
{
  int xA;
  int funcA();

  B* Obj_b1;    // Objekt vom Typ B-Klasse erzeugen 
  A()     // Konstruktor
  {
     Obj_b1=new B;
  }
  ~A()     // Dekonstruktor
  {
     delete Obj_b1;
  }

 // ....etc
}
</code></pre>
<p>Klasse B bleibt unverändert</p>
<pre><code class="language-cpp">class B
{
  int xB;
  int funcB();
  //....etc
}
</code></pre>
<p>und in der Klasse C zwei Objekte erzeugen</p>
<pre><code class="language-cpp">class C
{
  int xC;
  int funcC();

  A* Obj_a;   // Objekt vom Typ A-Klasse erzeugen 
  B* Obj_b2; // Objekt vom Typ B-Klasse erzeugen 
  C()     // Konstruktor
  {
     Obj_a=new A;   
     Obj_b2=new B;
  }
  ~C()     // Dekonstruktor
  {
     delete Obj_a;   
     delete Obj_b2;
  }
  //....etc
}
</code></pre>
<p>Die Frage ist: wie kann ich jetzt in der Implemtierung die Funktionsaufrufe und auf die Variablen zugreifen realisieren. etwa so:</p>
<pre><code class="language-cpp">A::funcA()
{
 Obj_b1-&gt;funcB(); // !!!!!!!!!!!!!!!!ist es richtig
  OBj_b1-&gt;xB=12;
}
</code></pre>
<p>danke schön</p>
]]></description><link>https://www.c-plusplus.net/forum/post/870198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/870198</guid><dc:creator><![CDATA[citizen]]></dc:creator><pubDate>Mon, 12 Sep 2005 12:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenbeziehung on Mon, 12 Sep 2005 12:34:58 GMT]]></title><description><![CDATA[<p>Im Prinzip ja.</p>
<p>Man sollte nur bei Pointern stets überprüfen ob sie nicht NULL sind bevor man mit ihnen arbeitet. Außerdem ist es besser Get- bwz. Set-Funktionen für den Zugriff auf Variablen anderer Klassen zu verwenden (durch dieses Vorgehen läßt sich der interne Klassenaufbau zu einem späteren Zeitpunkt besser verändern).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/870212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/870212</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Mon, 12 Sep 2005 12:34:58 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenbeziehung on Mon, 12 Sep 2005 13:04:45 GMT]]></title><description><![CDATA[<p>Mathias schrieb:</p>
<blockquote>
<p>Man sollte nur bei Pointern stets überprüfen ob sie nicht NULL sind bevor man mit ihnen arbeitet.</p>
</blockquote>
<p>falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/870239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/870239</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 12 Sep 2005 13:04:45 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenbeziehung on Mon, 12 Sep 2005 13:20:42 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a><br />
Aha du bist also derjenige, der für die Nullpointerzugriffe verantwortlich ist. ;p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/870259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/870259</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Mon, 12 Sep 2005 13:20:42 GMT</pubDate></item></channel></rss>