<?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[Übersichtlichkeit einer Klasse?]]></title><description><![CDATA[<p>Hallo Jungs...</p>
<p>ich habe eine Klasse mit bestimmten eigenschaften... der Code der klasse ist sehr viel... und eine weitere Abstraktion ist nich möglich... Wie geht ihr dann vor? leitet ihr dann die Klasse ab, und erweitert diese?</p>
<pre><code class="language-cpp">class A{

  void func1();

};

class B: public A{

 void func2();

};

class C: public B{

  void func3();

};
</code></pre>
<p>wenn ich nun nur C benutze, und A und B gemacht habe, damit C nicht alle func1-3 enthält um Code übersicht zu haben macht ihr sowas? oder ist das schwachsin? Weil wenn ich ne klasse habe mit 1000-1500 Zeilen hab ich immer das gefühl es übersichtlicher lösen zu wollen!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187683/übersichtlichkeit-einer-klasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 20:24:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187683.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Jul 2007 04:35:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Übersichtlichkeit einer Klasse? on Mon, 23 Jul 2007 04:35:19 GMT]]></title><description><![CDATA[<p>Hallo Jungs...</p>
<p>ich habe eine Klasse mit bestimmten eigenschaften... der Code der klasse ist sehr viel... und eine weitere Abstraktion ist nich möglich... Wie geht ihr dann vor? leitet ihr dann die Klasse ab, und erweitert diese?</p>
<pre><code class="language-cpp">class A{

  void func1();

};

class B: public A{

 void func2();

};

class C: public B{

  void func3();

};
</code></pre>
<p>wenn ich nun nur C benutze, und A und B gemacht habe, damit C nicht alle func1-3 enthält um Code übersicht zu haben macht ihr sowas? oder ist das schwachsin? Weil wenn ich ne klasse habe mit 1000-1500 Zeilen hab ich immer das gefühl es übersichtlicher lösen zu wollen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330484</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 23 Jul 2007 04:35:19 GMT</pubDate></item><item><title><![CDATA[Reply to Übersichtlichkeit einer Klasse? on Mon, 23 Jul 2007 06:24:49 GMT]]></title><description><![CDATA[<p>Wenns nur der Übersichtlichkeit dient finde ich ist die Idee Unsinn. Wiederspricht ja auch der OOP Idee von Klassenbeziehungen, imo.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330527</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 23 Jul 2007 06:24:49 GMT</pubDate></item><item><title><![CDATA[Reply to Übersichtlichkeit einer Klasse? on Mon, 23 Jul 2007 06:25:36 GMT]]></title><description><![CDATA[<p>d.h. du aktzeptiert dann das die klasse soviel code hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330528</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 23 Jul 2007 06:25:36 GMT</pubDate></item><item><title><![CDATA[Reply to Übersichtlichkeit einer Klasse? on Mon, 23 Jul 2007 06:27:34 GMT]]></title><description><![CDATA[<p>Ich würd mir erstmal Gedanken machen ob die Klasse überhaupt so viel Code haben <strong>muss</strong>. In der Praxis hatte ich das Problem noch nie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330531</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 23 Jul 2007 06:27:34 GMT</pubDate></item><item><title><![CDATA[Reply to Übersichtlichkeit einer Klasse? on Mon, 23 Jul 2007 07:54:23 GMT]]></title><description><![CDATA[<p>Also ich kenne einen Kollegen, der hat Vererbung gemacht, um sich &quot;Schreibarbeit&quot; zu sparen. Den habe ich erstmal aufgeklärt, das OOD damit nichts zu tun hat. Im Prinzip versuchst du hier etwas ähnliches, Aber OOD hat mit sowas herzlich wenig zu tun. Du mußt deine Klassen so gestalten, das sie fachlich korrekt sein. Wenn eine Klasse 20 Methoden hat... dann ist das erstmal so.</p>
<p>Man kann sich dann aber natürlich nachträglich Gedanken machen, ob man vielleicht nicht fachlich einen Fehler gemacht hat. Es muß aber nicht zwingend ein Fehler vorliegen, weil die Klasse so groß ist. Man kann nicht pauschal sagen: Eine Klasse ist nur dann korrekt, wenn sie nur max. 3 public und 2 protected Methoden hat. (private Methoden sind eh schnutz, die gehen niemand was an... da kann man auch 50 private Methoden haben, wenn man lustig ist)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330575</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 23 Jul 2007 07:54:23 GMT</pubDate></item><item><title><![CDATA[Reply to Übersichtlichkeit einer Klasse? on Mon, 23 Jul 2007 08:01:19 GMT]]></title><description><![CDATA[<p>Jup.<br />
Bei größeren Projekten ist es eigentlich auch normal, dass man große Klassen mit vielen Zeilen Code hat. Du musst halt immer selbst schauen, ob das was du da hast tatsächlich alles reingehört oder es nicht Dinge gibt, welche man eigentlich in eigene Klassen auslagern kann. Wenn nein, dann ist alles wunderbar.<br />
Hab auch schon Java-Klassen mit ~10000 Zeilen Code gesehen, wobei das da dann tatsächlich &quot;falsch&quot; war <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/1330579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330579</guid><dc:creator><![CDATA[nep]]></dc:creator><pubDate>Mon, 23 Jul 2007 08:01:19 GMT</pubDate></item><item><title><![CDATA[Reply to Übersichtlichkeit einer Klasse? on Mon, 23 Jul 2007 09:14:35 GMT]]></title><description><![CDATA[<p>Hallo,<br />
bei einer sehr umfangreichen Klasse würde ich Schritt für Schritt vorgehen:<br />
Als erstes, die Klasse von außen betrachten:</p>
<p>a) Was ist die Aufgabe der Klasse? Kann ich die noch kurz und knapp formulieren, ohne dass ich dauernd &quot;und&quot; benutzen muss. Welche Gründe gibt es, die eine Änderung der Klasse nötig machen würden? Wenn die Klasse mehr als eine Aufgabe hat und damit mehr als ein &quot;Cluster&quot; von Gründen weshalb sie geändert werden müsste, heißt es splitten (und das heißt in den seltesten Fällen Vererbung).</p>
<p>b) Wie wird die Klasse verwendet? Als Basisklasse? Als konkrete Klasse? Gar beides? Welche Interfaces gibt es neben dem öffentlichen? Wenn man die Interfaces nach Verwendung clustert, wieviele Cluster erhält man? Hat die Klasse mehr als ein Interface (z.B. ein öffentliches und ein protected) -&gt; aufteilen (Base + Derived). Wenn es mehrere Cluster gibt -&gt; splitten (Stichwort: &quot;Interface Segregation&quot;)</p>
<p>Jetzt auch die &quot;innere Werte&quot; der Klasse berücksichtigen:</p>
<p>Memberfunktionen bezüglich Verwendung der privaten Daten clustern. Gibt es mehrere Cluster bzw. kann ich durch kleine Änderungen mehrere unabhängig Cluster erzeugen? -&gt; splitten.</p>
<p>Der Nummer 1 Grund für zu große Klassen ist, dass eine Klasse zuviel macht (Stichwort: mangelnde Kohäsion). Die beste Kur dagegen heißt: zerschmettern und durch mehrere (kollaborierende) Klassen ersetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330641</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Mon, 23 Jul 2007 09:14:35 GMT</pubDate></item><item><title><![CDATA[Reply to Übersichtlichkeit einer Klasse? on Mon, 23 Jul 2007 10:18:14 GMT]]></title><description><![CDATA[<p>Ich hab das auch öfters, kapsele dann (fast immer) nochmal die Daten der Klasse in einzelne Klassen.<br />
Ein Beispiel, kein Paradebeispiel aber das Prinzip sollte klar werden:<br />
Angenommen, du hast eine Klasse, die Multithreading-fähig sein soll und sie benutzt einen oder mehrere Semaphoren. Wenn du mit der WinAPI arbeitest, musst du den Semaphor erstellen, jedesmal locken und unlocken und am Schluss zerstören. Anstatt die Semaphor-Aufrufe im Code zu haben, bastelt man sich eine Klasse &quot;Semaphore&quot;, die das Objekt automatisch erstellt und löscht. Dazu noch eine Klasse &quot;SemaphoreLocker&quot;, die beim Konstruktor-Aufruf den übergebenen Semaphor lockt und ihn beim Destruktor unlockt.<br />
Etwa so:</p>
<pre><code class="language-cpp">MeineKlasse::MeineKlasse() {
    // nix :)
}

MeineKlasse::~MeineKlasse() {
    // Auch nix...
}

void MeineKlasse::DoSomething() {
    SemaphoreLocker locker( sem );
    // ....
}
</code></pre>
<p>statt</p>
<pre><code class="language-cpp">MeineKlasse::MeineKlasse() {
    sem = CreateSemaphore( ... );
}

void MeineKlasse::DoSomething() {
    LockSemaphore( sem );
    // ....
    UnlockSemaphore( sem );
}

MeineKlasse::~MeineKlasse() {
    DestroySemaphore( sem );
}
</code></pre>
<p>Das sieht erstmal wenig aus, aber bei vielen solchen Objekten spart das dann doch eine _Menge_ an Code, der sich dann nur noch auf die Kern-Funktionalität beschränkt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330697</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 23 Jul 2007 10:18:14 GMT</pubDate></item><item><title><![CDATA[Reply to Übersichtlichkeit einer Klasse? on Tue, 24 Jul 2007 00:38:48 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>... und eine weitere Abstraktion ist nich möglich...</p>
</blockquote>
<p>Das halte ich für ein Gerücht!<br />
Poste mal den Code <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/1331207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331207</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 24 Jul 2007 00:38:48 GMT</pubDate></item></channel></rss>