<?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[Allgemeine Frage zu OOP,... Ordnung muß sein]]></title><description><![CDATA[<p>Hallo<br />
Ich programmiere ganz gerne mit dem SDL in C++ oder Python<br />
Ich habe mir jeweils ganz nützliche 2D-Frameworks geschrieben, mit verschiedenen<br />
Klassen für Init, Grafik , Sound , Image/ Sprite etc. ...wie 1000 andere vor mir <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>Jetzt habe ich angefangen mir eine Kartendeck-Klasse zu erstellen.<br />
Meine <strong>Frage</strong> zum Objekt-Orientierten-Programmieren:</p>
<p>Das Kartendeck enthält ja 32 oder 52 Instanzen einer Klasse/ Struktur: KARTE<br />
Sollte man eine Instanz eines Sprites/ Images einer Karte in die Kartenklasse<br />
packen? Oder sollte die Kartenklasse nur wesentliches wie Name, Farbe, Wertigkeit beinhalten?<br />
D.h: Das Image-handling für jede einzelne Karte wird in einer anderen Klasse zB<br />
<strong>Grafics</strong> oder so behandelt? Imo eher leichter portabel, da man mit dem Memberimage sonst immer auf den SDL abhängig ist...</p>
<p>Welcher Weg ist der sinnvollere?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/224912/allgemeine-frage-zu-oop-ordnung-muß-sein</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 01:21:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224912.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Oct 2008 15:54:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 15:54:28 GMT]]></title><description><![CDATA[<p>Hallo<br />
Ich programmiere ganz gerne mit dem SDL in C++ oder Python<br />
Ich habe mir jeweils ganz nützliche 2D-Frameworks geschrieben, mit verschiedenen<br />
Klassen für Init, Grafik , Sound , Image/ Sprite etc. ...wie 1000 andere vor mir <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>Jetzt habe ich angefangen mir eine Kartendeck-Klasse zu erstellen.<br />
Meine <strong>Frage</strong> zum Objekt-Orientierten-Programmieren:</p>
<p>Das Kartendeck enthält ja 32 oder 52 Instanzen einer Klasse/ Struktur: KARTE<br />
Sollte man eine Instanz eines Sprites/ Images einer Karte in die Kartenklasse<br />
packen? Oder sollte die Kartenklasse nur wesentliches wie Name, Farbe, Wertigkeit beinhalten?<br />
D.h: Das Image-handling für jede einzelne Karte wird in einer anderen Klasse zB<br />
<strong>Grafics</strong> oder so behandelt? Imo eher leichter portabel, da man mit dem Memberimage sonst immer auf den SDL abhängig ist...</p>
<p>Welcher Weg ist der sinnvollere?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600018</guid><dc:creator><![CDATA[sdl-fan-001]]></dc:creator><pubDate>Thu, 16 Oct 2008 15:54:28 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 17:29:51 GMT]]></title><description><![CDATA[<p>die saubere methode liegt darin den kleinsten gemeinsamen brauchbaren faktor rauszufiltern den du benötigst, und den in einen tighten abstraktionslayer zu legen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600055</guid><dc:creator><![CDATA[inpimp]]></dc:creator><pubDate>Thu, 16 Oct 2008 17:29:51 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 17:50:44 GMT]]></title><description><![CDATA[<p>Dieses Problem hat mich auch schon mehrmals beschäftigt.</p>
<p>In der Vergangenheit habe ich es oft so gelöst, dass jeder Spielobjekt-Repräsentant (in deinem Fall eine Karte) ein eigenes Sprite besitzt. Ich dachte, ich wäre damit flexibler und nahm auch naiverweise an, es würde sich besser auf die Performance auswirken. Diese dürfte jedoch recht irrelevant sein, da ein Schreibvorgang/temporäres Objekt im Vergleich zu Grafikrendering kaum Rechenzeit beansprucht. Wenn es wirklich kritisch wird, kann man immer noch profilen und experimentieren.</p>
<p>Jetzt würde ich Grafik und Spieltechnik/Logik wohl eher trennen. Ein Ansatz wäre, eine Grafikverwaltungsklasse zu kreieren, der man die Aufgabe übertragen könnte, temporäre Sprites zu erstellen, um Spielelemente zu zeichnen. Die Spielelemente selber wären dann auf ein Minimum beschränkt, was sich auch gut auf den Speicherverbrauch auswirken würde. Ausserdem wären spiellogische Operationen wie Kartenmischeln etc. viel weniger schwerfällig, da wirklich nur die relevanten Daten umkopiert werden müssten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600070</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 16 Oct 2008 17:50:44 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 18:17:48 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ausserdem wären spiellogische Operationen wie Kartenmischeln etc. viel weniger schwerfällig, da wirklich nur die relevanten Daten umkopiert werden müssten.</p>
</blockquote>
<p>Das alleine klingt schon sehr sinnvoll !</p>
<p>Btw Mischen: Deswegen gefällt mir python <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>
<pre><code>meine_liste = (karte_1,....,karte_32)
random.shuffle( meine_liste )
</code></pre>
<p>OK, die funktion in C ist auch schnell geschrieben, aber kann sie auch gemischte Datentypen mischen (oder enthalten) ? <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/1600095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600095</guid><dc:creator><![CDATA[sdl-fan]]></dc:creator><pubDate>Thu, 16 Oct 2008 18:17:48 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 18:25:17 GMT]]></title><description><![CDATA[<p>Deswegen gefällt mir C++: <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>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;Karte.hpp&gt;

int main()
{
    std::vector&lt;Karte&gt; Deck;
    // hier Container befüllen

    std::random_shuffle(Deck.begin(), Deck.end());
    // Deck ist nun gemischelt
}
</code></pre>
<p>Für ausführlichere Informationen zur STL siehe <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> und die Artikel dieses Forums.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600097</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 16 Oct 2008 18:25:17 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 18:31:42 GMT]]></title><description><![CDATA[<p>sdl-fan schrieb:</p>
<blockquote>
<p>Btw Mischen: Deswegen gefällt mir python <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>
<pre><code>meine_liste = [b](karte_1,....,karte_32)[/b]
random.shuffle( meine_liste )
</code></pre>
</blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Deswegen gefällt mir C++: <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>
<pre><code class="language-cpp">std::vector&lt;Karte&gt; Deck;
    // hier Container befüllen :arrow_right: Geht in C++ nicht so einfach wie in Python

    std::random_shuffle(Deck.begin(), Deck.end());
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1600100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600100</guid><dc:creator><![CDATA[einen]]></dc:creator><pubDate>Thu, 16 Oct 2008 18:31:42 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 18:36:01 GMT]]></title><description><![CDATA[<p>einen schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// hier Container befüllen :arrow_right: Geht in C++ nicht so einfach wie in Python
</code></pre>
</blockquote>
<p>Ich meinte auch eher das <code>random_shuffle()</code> . Das Feature mit der Initialisierungsliste für Container wird übrigens im nächsten C++-Standard enthalten sein.</p>
<p>Momentan muss man noch <code>push_back()</code> benutzen, was aber nicht schlimm ist. Gerade für dieses Beispiel eignet sich eine Schleife sowieso viel mehr als eine riesenlange Initialisierungsliste.</p>
<p>Die Links zu den STL-Artikeln hier im Forum, deren Begutachtung sich auf alle Fälle lohnt:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html" rel="nofollow"><strong>1)</strong> Container</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-146604.html" rel="nofollow"><strong>2)</strong> Iteratoren und Algorithmen</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-150106.html" rel="nofollow"><strong>3)</strong> Hilfsklassen und Erweiterungen</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600103</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 16 Oct 2008 18:36:01 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 18:49:38 GMT]]></title><description><![CDATA[<p>Sry, ich will den Thread nicht überreizen, aber was ich mit dem python-Vorteil meinte war:</p>
<p>Erstelle oder Mische bitte in C/ C++ Listen, Vektoren, etc die <strong>verschiedene!</strong> datentypen <strong>gleichzeitig</strong> beinhalten <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/1600110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600110</guid><dc:creator><![CDATA[sdl-fan-002]]></dc:creator><pubDate>Thu, 16 Oct 2008 18:49:38 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 19:56:08 GMT]]></title><description><![CDATA[<p>sdl-fan-002 schrieb:</p>
<blockquote>
<p>Erstelle oder Mische bitte in C/ C++ Listen, Vektoren, etc die <strong>verschiedene!</strong> datentypen <strong>gleichzeitig</strong> beinhalten <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>Wozu braucht man das? Man muss dann trotzdem jeden Typ einzeln handhaben und Fälle unterscheiden (und: es ginge in C++ auch, z.B. mit Boost.Any). <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/1600132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600132</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 16 Oct 2008 19:56:08 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 20:54:17 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Wozu braucht man das?</p>
</blockquote>
<p>Naja, man erhält eine art dynamische struktur...</p>
<p>Btw mag ich C++ lieber als Python, aber Python ist so irre einfach und man kann kleine Ideen in 1/3 der Zeit umsetzen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600157</guid><dc:creator><![CDATA[sdl-fan-003]]></dc:creator><pubDate>Thu, 16 Oct 2008 20:54:17 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 21:06:19 GMT]]></title><description><![CDATA[<p>sdl-fan-003 schrieb:</p>
<blockquote>
<p>Btw mag ich C++ lieber als Python, aber Python ist so irre einfach und man kann kleine Ideen in 1/3 der Zeit umsetzen...</p>
</blockquote>
<p>Ja, C++ ist halt bei vielen Dingen relativ mühsam und man hat teilweise verhältnismässig lange für kleine Dinge. Das ist aber wieder eine Frage der Übung...</p>
<p>Aber zu deiner anderen Antwort: Das würde mich wirklich interessieren, nicht weil ich einen C++-vs.-Python-Flame anstrebe, sondern weil es mich tatsächlich wundert. Was meinst du mit &quot;dynamischer Struktur&quot;? Wenn einfach alle Typen vorkommen können, wie will man diese spezifisch ansprechen? Man muss ja irgendwo noch Typinformationen abspeichern, und da finde ich es eleganter, die Fälle gleich separat handzuhaben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600164</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 16 Oct 2008 21:06:19 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 21:12:23 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Man muss ja irgendwo noch Typinformationen abspeichern, und da finde ich es eleganter, die Fälle gleich separat handzuhaben.</p>
</blockquote>
<p>Das ist das wunderbare an Python: Jede Variable kann einen beliebigen Datentypen beinhalten, ohne dafür spezifisch deklariert worden zu sein.<br />
Imo reicht es die Länge der Liste zu ermitteln und dann bis zum Ende durchzuiterieren...</p>
<p>Btw Thx Nexus für (nicht nur hier) kreative und informative Antworten, dickes Lob.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600165</guid><dc:creator><![CDATA[sdl-fan-004]]></dc:creator><pubDate>Thu, 16 Oct 2008 21:12:23 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 21:20:05 GMT]]></title><description><![CDATA[<p>sdl-fan-002 schrieb:</p>
<blockquote>
<p>Erstelle oder Mische bitte in C/ C++ Listen, Vektoren, etc die <strong>verschiedene!</strong> datentypen <strong>gleichzeitig</strong> beinhalten <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 ist in c++ prinzipell auch möglich. nicht c++ ist das problem, sondern dessen 'dumb user base', die z.b. fragen stellt wie:</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Wozu braucht man das?</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1600170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600170</guid><dc:creator><![CDATA[c++fan.2008]]></dc:creator><pubDate>Thu, 16 Oct 2008 21:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 21:52:36 GMT]]></title><description><![CDATA[<p>c++fan.2008 schrieb:</p>
<blockquote>
<p>nicht c++ ist das problem, sondern dessen 'dumb user base', die z.b. fragen stellt wie:</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Wozu braucht man das?</p>
</blockquote>
</blockquote>
<p>Genau solch kritische Fragen, können manchmal das Bewußtsein anregen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600175</guid><dc:creator><![CDATA[sdl-fan-005]]></dc:creator><pubDate>Thu, 16 Oct 2008 21:52:36 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Thu, 16 Oct 2008 22:11:23 GMT]]></title><description><![CDATA[<p>sdl-fan-004 schrieb:</p>
<blockquote>
<p>Das ist das wunderbare an Python: Jede Variable kann einen beliebigen Datentypen beinhalten, ohne dafür spezifisch deklariert worden zu sein.<br />
Imo reicht es die Länge der Liste zu ermitteln und dann bis zum Ende durchzuiterieren...</p>
</blockquote>
<p>Aber beim Durchiterieren ist es ja jedes Mal anders, was man mit dem aktuellen Element macht, oder? Wäre es von daher nicht einfacher, von Anfang an jeden Typ einzeln zu behandeln?</p>
<p>Tut mir leid, ich kann es mir nicht ganz vorstellen, vielleicht bin ich als C++-Programmierer auch diesbezüglich etwas zu engstirnig. <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>sdl-fan-004 schrieb:</p>
<blockquote>
<p>Genau solch kritische Fragen, können manchmal das Bewußtsein anregen...</p>
</blockquote>
<p>Wie wahr. Aber abgesehen davon hat es sowieso keinen Wert, unregistrierten Benutzern, die nichts zum Thema beitragen und diskutierfreudige Leute als &quot;dumb users&quot; bezeichnen, auch nur irgendeine Beachtung zu schenken.</p>
<p>sdl-fan-004 schrieb:</p>
<blockquote>
<p>Btw Thx Nexus für (nicht nur hier) kreative und informative Antworten, dickes Lob.</p>
</blockquote>
<p>Ich helfe gerne, und finde es nett, wenn Leute das auch schätzen. <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/1600177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600177</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 16 Oct 2008 22:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Fri, 17 Oct 2008 05:50:14 GMT]]></title><description><![CDATA[<blockquote>
<p>Aber beim Durchiterieren ist es ja jedes Mal anders, was man mit dem aktuellen Element macht, oder? Wäre es von daher nicht einfacher, von Anfang an jeden Typ einzeln zu behandeln?</p>
</blockquote>
<p>Nicht unbedingt. Wenn sie die gleiche Schnittstelle haben (z.B Ausgabe), kannst du das ganz gut benutzen. C++ hat da ja ein ähnliches Konzept, nennt sich abstrakte Basisklasse. <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="😉"
    /> ( Jetzt sollten dir auch ein paar Anwendungsbeispiele einfallen. :))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600217</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 17 Oct 2008 05:50:14 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Fri, 17 Oct 2008 07:24:31 GMT]]></title><description><![CDATA[<p>Die Geschichte mit den verschiedenen Datentypen in einem Container ist eben einer der grundlegenden Unterschiede zwischen C++ und Python: statische vs. dynamische Typisierung. beides hat je nach Anwendungsgebiet seine Vor- und Nachteile und seine Daseinsberechtigung.</p>
<p>Bei dynamischer Typisierung kann man wirklich alles in einen Container stopfen. Dafür muss man später bei der Verarbeitung damit rechnen, dass einzelne Elemente eine benötigte Operation nicht anbieten.<br />
Bei statischer Typisierung muss alles vom gleichen Typ sein (bzw. mit polymorphen Zeigern von verwandten Typen), dafür kann man davon ausgehen dass alle Elemente die gleichen Operationen anbieten.</p>
<p>Zusammengefasst heißt das in dem Beispiel also: Flexibilität vs. Sicherheit</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600238</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 17 Oct 2008 07:24:31 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Fri, 17 Oct 2008 07:37:06 GMT]]></title><description><![CDATA[<p>sdl-fan-004 schrieb:</p>
<blockquote>
<p>[Das ist das wunderbare an Python: Jede Variable kann einen beliebigen Datentypen beinhalten, ohne dafür spezifisch deklariert worden zu sein.<br />
Imo reicht es die Länge der Liste zu ermitteln und dann bis zum Ende durchzuiterieren...</p>
</blockquote>
<p>Das nennt man &quot;Weak Typing&quot;. Bei C++ wurde bewusst auf &quot;Strong Typing&quot; gesetzt, weil es allgemein die Betriebssicherheit erhöht. Implzite Konvertierungen können z.B. ziemlich böse sein, wenn man nicht aufpasst und sich z.B. verschreibt.<br />
So ziemlich auf die Spitze wird das Strong Typing in Ada getrieben, wo man u.U. Integers nicht einander zuweisen kann.<br />
Beispiel:</p>
<pre><code>type Decibel_Type is new Float;    --Typ fuer Pegel in dB
type Frequency_Type is new Float;  --Typ fuer Frequenzen in Hz

Freq  : Frequency_Type := 0.0;     --Deklaration/Initialisierung
Level : Decibel_Type   := 10.0;    --Deklaration/Initialisierung

Freq := Level;  --Versuch einer Zuweisung, aber Frequenzen != Pegel -&gt; Error
Freq := Frequency_Type(Level); -- Typecast. Das geht, aber man muss dem Compiler extra sagen, dass man solchen Unsinn machen will
</code></pre>
<p>Man kann also z.B., wenn man es auf die Spitze treibt, für verschiedene Maßeinheiten unterschiedliche Typen definieren. Im obigen Beispiel sind beide Typen zwar Float, aber eben trotzdem nicht gleich. Warum das, trotz des höheren Schreibaufwands ein Vorteil sein kann, sollte wohl klar sein, vor allem, wenn es sich um ein Interface handelt, dass von vielen Programmierern benutzt wird.<br />
Das Typsystem von C++ ist nicht ganz so streng, aber auf jeden Fall schon mal deutlich sicherer als irgendwelche Sprachen mit völlig loser Typisierung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600243</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 17 Oct 2008 07:37:06 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Fri, 17 Oct 2008 07:55:11 GMT]]></title><description><![CDATA[<p>du sagst, das Typsystem in C++ sei nicht ganz so streng, das kann man so oder so sehen. Es ist nur nicht so einfach, einen neuen Typen zu erschaffen, der den gleichen Wertebereich hat wie ein anderer Typ. Dein Beispiel sähe in C++ etwa so aus:</p>
<pre><code class="language-cpp">struct Decibel_Type
{
  float value;
  explicit Decibel_Type(float f) : value(f) {}
  operator float() {return value; }
};
struct Frequency_Type
{
  //analog
};

Frequency_Type Freq = 0.0f;
Decibel_Type Level = 10.0f;

Freq = Level;  //Versuch einer Zuweisung, aber Frequenzen != Pegel -&gt; Error
Freq = Frequency_Type(static_cast&lt;float&gt;(Level)); // Typecast. Das geht, aber man muss dem Compiler extra sagen, dass man solchen Unsinn machen will
</code></pre>
<p>(den ganzen privtae/public-krams und andere Dinge mal außer acht gelassen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600249</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 17 Oct 2008 07:55:11 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Fri, 17 Oct 2008 08:11:12 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>[...]</p>
</blockquote>
<p>Jo, aber Dein Beispiel lässt problemlos sowas zu:</p>
<pre><code class="language-cpp">float unsinn = Freq + Level;

//oder sowas
    Frequency_Type Freq(0.0f);
    Decibel_Type Level(Freq);
</code></pre>
<p>In Ada würde auch das nicht gehen. Mal ganz zu schweigen vom Aufwand den man für Zuweisungen treiben muss. Das würden dann zig Float-Wrapper werden, und was man von POD-Wrappern zu halten hat, sollte wohl klar sein.<br />
Beispiel:</p>
<pre><code class="language-cpp">Decibel_Type level(0.0f);
    Decibel_Type inc(3.0f);

    level = level + inc; //geht nicht
</code></pre>
<p>PS: Das erinnert mich etwas an den Nachbau von OO in C. Das sind Features, die hat die Sprache einfach nicht. Man kann es nachbauen, aber das ist sehr fehleranfällig und mühsam. Kosten/Nutzen stehen nicht im gesunden Verhältnis zueinander.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600252</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 17 Oct 2008 08:11:12 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Fri, 17 Oct 2008 08:28:18 GMT]]></title><description><![CDATA[<p>Mein Beispiel war nur mal eben hingerotzt. Es gibt durchaus Möglichkeiten, die Konvertierungsoperatoren wegzulassen bzw. zu ersetzen, und arithmetische Operatoren zu implementieren ist in dem Fall bestenfalls eine Anfängerübung. Ich habe auch nicht behauptet, dass all das besonders schön oder elegant aussähe, ich wollte lediglich darauf hinaus, dass derartige Wrapper als Typsicherheits-Schutz möglich sind, aber eben nicht so schnell zu erschaffen wie in Ada.</p>
<p>Im Übrigen gabs grade für dein Beispiel (physikalische Werte) vor einiger Zeit ein Beispiel hier im Forum, wie man eine entsprechende Bibliothek aufbauen könnte:</p>
<pre><code class="language-cpp">template &lt;int length_dim, int time_dim, int weight_dim&gt;
class PhysicalUnit
{
  double value; //in kg/m/s - System
  //...
};

//Diverse Operatoren...

//typedefs für gebraeuchliche Groessen:
typedef PhysicalUnit&lt;1,0,0&gt; Length;
typedef PhysicalUnit&lt;2,0,0&gt; Area;
typedef PhysicalUnit&lt;1,0,-1&gt; Velocity;
typedef PhysicalUnit&lt;1,0,-2&gt; Acceleration;
typedef PhysicalUnit&lt;0,0,-1&gt; Frequency;
//...

struct Units
{
  const static Frequency Hz;      //Frequency(1)
  const static Length cm;         //Length(0.01)
  const static Acceleration grav; //Acceleration(9.81)
  const static Length inch;       //Length(0.0249)
};

int main()
{
  Length breite = 5 * Units::cm;
  Length laenge = 10 * Units::inch;
  Area flaeche = breite * laenge;
}
</code></pre>
<p>Damit gehen dann solch sinnfreie Rechnungen auch nicht mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600263</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 17 Oct 2008 08:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zu OOP,... Ordnung muß sein on Fri, 17 Oct 2008 08:34:18 GMT]]></title><description><![CDATA[<p>Ich habe ja auch gar nicht gesagt, dass es überhaupt nicht geht. Es ist nur sehr mühsam und produziert zusätzlichen Code. In Ada werden einfach die Typnamen verglichen. Das ist schon einfacher.<br />
Du solltest vielleicht noch auf boost.units verweisen, wenn Du da schon abguckst. <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/1600267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600267</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 17 Oct 2008 08:34:18 GMT</pubDate></item></channel></rss>