<?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[Designproblem]]></title><description><![CDATA[<p>Hi, ich habe ein Designproblem, über welches ich mir jetzt schon seit längerer Zeit den Kopf zerbreche.</p>
<p>Die Situation ist folgende:</p>
<p>Es geht darum, in einem Strategiespiel die Karte zu verwalten und anzuzeigen. Dazu habe ich eine abstrakte Basisklasse Map, von welcher verschiedene Map-Arten abgeleitet sind / sein können. Darunter ist eine Klasse LayeredMap, welche aus verschiedenen Schichten besteht (Sie enthält Objekte von verschiedenen Unterklassen der Klasse MapLayer).<br />
Des weiteren gibt es eine Klasse MapObject, welche die Darstellung einer Karte auf dem Bildschirm repräsentiert. Es soll möglich sein, mehrere MapObjects zu der selben Karte gleichzeitig zu haben.</p>
<p>Nun ist es so, dass die Art, wie ein bestimmter Kartentyp angezeigt wird, auch variieren kann und möglichst einfach neue Möglichkeiten hinzugefügt werden sollen. Deswegen habe ich eine abstrakte Klasse MapDrawer eingeführt, deren Unterklassen dann konkrete Map-Typen auf konkrete Art zeichnen können sollen. Dabei soll sowohl der Map-Typ als auch die Zeichenart variieren. Der MapDrawer, der die Layered-Maps nun zeichnet, hat wieder eine Liste von Objekten, abgeleitet von LayerDrawer, welche je ein einzelnes Layer zeichnen können, damit man möglichst einfach ein neues Layer zu der LayeredMap hinzufügen kann. Außerdem gibt es noch eine Abstrakte Basisklasse MapAccessor, welche die Umrechnung der Bildschirm in Map-Koordinaten für verschiedene Draw Modi übernimmt. Auch hiervon enthällt das MapObjekt eines.</p>
<p>Soweit, so gut, dies erscheint mir irgendwie recht kompliziert, geht das einfacher?</p>
<p>Aber das eigendliche Problem ist, wie stelle ich jetzt sicher (möglichst ohne noch mehr verschiedene Klassen), dass ein MapObject nur zueinanderpassende Maps, MapDrawer und MapAccessor enthalten kann? Hierbei wird die Situation dadurch verkompliziert, dass es verschiedene MapDrawer für jede Unterklasse Map gibt, dann aber MapAccessor, die nur von der Art von MapDrawer abhängen, nicht aber von der Map (ein bestimmter MapAccessor kann mit mehreren MapDrawern, die zu verschiedenen Unterklassen von Map gehören, zusammenarbeiten, oft aber nicht mit allen MapDrawern einer Unterklasse von Map).</p>
<p>Ich hoffe, ich habe mich halbwegs verständlich ausgedrückt.</p>
<p>Ich bin für jeden Ratschlag dankbar, jede Idee ist mir willkommen!</p>
<p>Vielen Dank schon mal im Voraus, Niko</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/124235/designproblem</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 11:18:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124235.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 25 Oct 2005 19:18:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 19:18:36 GMT]]></title><description><![CDATA[<p>Hi, ich habe ein Designproblem, über welches ich mir jetzt schon seit längerer Zeit den Kopf zerbreche.</p>
<p>Die Situation ist folgende:</p>
<p>Es geht darum, in einem Strategiespiel die Karte zu verwalten und anzuzeigen. Dazu habe ich eine abstrakte Basisklasse Map, von welcher verschiedene Map-Arten abgeleitet sind / sein können. Darunter ist eine Klasse LayeredMap, welche aus verschiedenen Schichten besteht (Sie enthält Objekte von verschiedenen Unterklassen der Klasse MapLayer).<br />
Des weiteren gibt es eine Klasse MapObject, welche die Darstellung einer Karte auf dem Bildschirm repräsentiert. Es soll möglich sein, mehrere MapObjects zu der selben Karte gleichzeitig zu haben.</p>
<p>Nun ist es so, dass die Art, wie ein bestimmter Kartentyp angezeigt wird, auch variieren kann und möglichst einfach neue Möglichkeiten hinzugefügt werden sollen. Deswegen habe ich eine abstrakte Klasse MapDrawer eingeführt, deren Unterklassen dann konkrete Map-Typen auf konkrete Art zeichnen können sollen. Dabei soll sowohl der Map-Typ als auch die Zeichenart variieren. Der MapDrawer, der die Layered-Maps nun zeichnet, hat wieder eine Liste von Objekten, abgeleitet von LayerDrawer, welche je ein einzelnes Layer zeichnen können, damit man möglichst einfach ein neues Layer zu der LayeredMap hinzufügen kann. Außerdem gibt es noch eine Abstrakte Basisklasse MapAccessor, welche die Umrechnung der Bildschirm in Map-Koordinaten für verschiedene Draw Modi übernimmt. Auch hiervon enthällt das MapObjekt eines.</p>
<p>Soweit, so gut, dies erscheint mir irgendwie recht kompliziert, geht das einfacher?</p>
<p>Aber das eigendliche Problem ist, wie stelle ich jetzt sicher (möglichst ohne noch mehr verschiedene Klassen), dass ein MapObject nur zueinanderpassende Maps, MapDrawer und MapAccessor enthalten kann? Hierbei wird die Situation dadurch verkompliziert, dass es verschiedene MapDrawer für jede Unterklasse Map gibt, dann aber MapAccessor, die nur von der Art von MapDrawer abhängen, nicht aber von der Map (ein bestimmter MapAccessor kann mit mehreren MapDrawern, die zu verschiedenen Unterklassen von Map gehören, zusammenarbeiten, oft aber nicht mit allen MapDrawern einer Unterklasse von Map).</p>
<p>Ich hoffe, ich habe mich halbwegs verständlich ausgedrückt.</p>
<p>Ich bin für jeden Ratschlag dankbar, jede Idee ist mir willkommen!</p>
<p>Vielen Dank schon mal im Voraus, Niko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900651</guid><dc:creator><![CDATA[Sir Niko]]></dc:creator><pubDate>Tue, 25 Oct 2005 19:18:36 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 19:35:13 GMT]]></title><description><![CDATA[<p>Sir Niko schrieb:</p>
<blockquote>
<p>Soweit, so gut, dies erscheint mir irgendwie recht kompliziert, geht das einfacher?</p>
</blockquote>
<p>Jep, ich würde sagen du machst es dir zu kompliziert. Für mich hört sich das dannach an als würdest du jedes bisschen Code in deinem Programm in eine Klasse stecken wollen. Bedenke dabei aber das es Sinn der Klassen ist, das man sie in anderen Programmen wiederverwenden kann. Das scheint mir bei deinen ganzen Klassen nicht der Fall.</p>
<p>Mal ne Frage am Rande: Programmierst du das alles in der Konsole, oder benutzt du die WinApi (oder ähnlich) oder DirectX/OpenGl?</p>
<p>(Warum frage ich: Wenn du mit der WinApi programmierst (wie ich), kann man sich eigentlich das Programmieren mit Klassen auf einen Minmum abgewöhnen, da die WinApi eigentlich für C programmiert ist ...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900659</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Tue, 25 Oct 2005 19:35:13 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 20:28:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">(Warum frage ich: Wenn du mit der WinApi programmierst (wie ich), kann man sich eigentlich das Programmieren mit Klassen auf einen Minmum abgewöhnen, da die WinApi eigentlich für C programmiert ist ...)
</code></pre>
<p>Das ist doch nicht dein Ernst <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 />
Die WinApi, die in C geschrieben ist, ist dafür programmiert, dass man sie aus jeder beliebigen Sprache aus nutzen kann.</p>
<p>Ob man &quot;mit Klassen&quot; programmiert, ist eine Stil- und Design-Frage. Mein Tipp: wenn C++, dann auch das Klassenkonzept nutzen und nahe am OOP-Paradigma bleiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900698</guid><dc:creator><![CDATA[richie]]></dc:creator><pubDate>Tue, 25 Oct 2005 20:28:15 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 20:34:29 GMT]]></title><description><![CDATA[<blockquote>
<p>Bedenke dabei aber das es Sinn der Klassen ist, das man sie in anderen Programmen wiederverwenden kann.</p>
</blockquote>
<p>Das stimmt auch nicht immer. Es ist Gang und Gebe, dass man in Programmen hin und wieder Klassen schreibt, die nicht so einfach in einem anderen Programm wiederverwendet werden können. Es geht auch darum, dass man leicht lesbaren (der menschlichen Denkweise nahen) und wartbaren Code schreibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900704</guid><dc:creator><![CDATA[richie]]></dc:creator><pubDate>Tue, 25 Oct 2005 20:34:29 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 20:38:49 GMT]]></title><description><![CDATA[<blockquote>
<p>Die WinApi, die in C geschrieben ist, ist dafür programmiert, dass man sie aus jeder beliebigen Sprache aus nutzen kann.</p>
</blockquote>
<p>Das ist definitiv falsch. Die WinApi funktioniert unter Python/Perl/... nicht, sie muss erst von den Machern der Sprache angepasst werden. Sie funktioniert mit C++, da C++ eine erweiterung zu C ist. Man kann natürlich mit Klassen arbeiten, aber es biettet sich nicht in so vielen Fällen an, als wenn man mit reinem C++ auf der Konsole programmieren würde. Sieh die mal Qt an, das ist eine C++ Api. (Allerdings merkt man die Unterschiede eher bei den chars &lt;-&gt; strings). Bevor du jetzt argumentierst, dass man sowas trozdem machen (mit Klassen unter der WinApi programmieren), möchte ich dich darauf hinweisen, das das meine persönliche Erfahrung ist. Wenn das bei dir anders ist, bitte sehr ... (Ich will hier wirklich keinen Flamewar verursachen)</p>
<blockquote>
<p>Ob man &quot;mit Klassen&quot; programmiert, ist eine Stil- und Design-Frage.</p>
</blockquote>
<p>Da stimme ich dir zu, aber ich finde es bietet sich bei der WinApi nicht so oft an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900706</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Tue, 25 Oct 2005 20:38:49 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 20:43:46 GMT]]></title><description><![CDATA[<p>flammenvogel schrieb:</p>
<blockquote>
<blockquote>
<p>Die WinApi, die in C geschrieben ist, ist dafür programmiert, dass man sie aus jeder beliebigen Sprache aus nutzen kann.</p>
</blockquote>
<p>Das ist definitiv falsch. Die WinApi funktioniert unter Python/Perl/... nicht, sie muss erst von den Machern der Sprache angepasst werden. Sie funktioniert mit C++, da C++ eine erweiterung zu C ist. Man kann natürlich mit Klassen arbeiten, aber es biettet sich nicht in so vielen Fällen an, als wenn man mit reinem C++ auf der Konsole programmieren würde. Sieh die mal Qt an, das ist eine C++ Api. (Allerdings merkt man die Unterschiede eher bei den chars &lt;-&gt; strings). Bevor du jetzt argumentierst, dass man sowas trozdem machen (mit Klassen unter der WinApi programmieren), möchte ich dich darauf hinweisen, das das meine persönliche Erfahrung ist. Wenn das bei dir anders ist, bitte sehr ... (Ich will hier wirklich keinen Flamewar verursachen)</p>
<blockquote>
<p>Ob man &quot;mit Klassen&quot; programmiert, ist eine Stil- und Design-Frage.</p>
</blockquote>
<p>Da stimme ich dir zu, aber ich finde es bietet sich bei der WinApi nicht so oft an.</p>
</blockquote>
<p>Deswegen gibts auch kaum irgendwelche FrameWorks die die WinApi kapseln, ausser<br />
vielleicht... MFC, Qt, GTK+, wxWidget,...usw. Das es hier ein eigenes Unter-Forum<br />
für GUI-Toolkits gibt ist wahrscheinlich reiner Zufall. <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/900715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900715</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Tue, 25 Oct 2005 20:43:46 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 20:53:05 GMT]]></title><description><![CDATA[<p>Was du sagst stimmt einfach nicht. Du hast nicht viel Erfahrung mit C++ und OOP. Das ist nicht böse gemeint aber man hört es dir an. Das ist ja auch keine Schande. Ich sagte, die WinApi <strong>kann</strong> man aus jeder beliebigen aus nutzen. Perl und Python laufen in einem Interpreter und wenn dieser WinApi-aufrufe unterstützt geht es problemlos. Dein Beitrag hörte sich so als müsse man C benutzen.</p>
<blockquote>
<p>Bevor du jetzt argumentierst, dass man sowas trozdem machen (mit Klassen unter der WinApi programmieren), möchte ich dich darauf hinweisen, das das meine persönliche Erfahrung ist</p>
</blockquote>
<p>Du hast eben nicht viel Erfahrung. Warum nutzt man WinApi in einem C++ Programm: Weil man ein bisschen Oberfläche haben will und das Programm schlank haben will. Und guter Stil ist es dann Oberfläche und Programmlogik getrennt zu halten. Und warum sollte man dann die Programmlogik nicht mit Klassen gestalten? Noch besser wäre die WinApi-Funnktionalität, die man benötigt zu wrappen.</p>
<p>Wenn man sehr viel mit Oberflächen macht würde man so wieso auf eine gute C++ Gui-Bibliothek zurückgreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900720</guid><dc:creator><![CDATA[richie]]></dc:creator><pubDate>Tue, 25 Oct 2005 20:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 21:23:05 GMT]]></title><description><![CDATA[<p>flammenvogel schrieb:</p>
<blockquote>
<p>Bedenke dabei aber das es Sinn der Klassen ist, das man sie in anderen Programmen wiederverwenden kann. Das scheint mir bei deinen ganzen Klassen nicht der Fall.</p>
</blockquote>
<p>Äh, sicher? Hast du das irgendwo gelesen oder sprichst du aus Erfahrung?<br />
Weil das nicht zwangsläufig der Fall ist, eher im Gegenteil: zwar sollten die meisten Klassen Klassen wiederverwenden aber die wenigsten Klassen eignen sich zur Wiederverwendung...</p>
<p>flammenvogel schrieb:</p>
<blockquote>
<p>(Warum frage ich: Wenn du mit der WinApi programmierst (wie ich), kann man sich eigentlich das Programmieren mit Klassen auf einen Minmum abgewöhnen, da die WinApi eigentlich für C programmiert ist ...)</p>
</blockquote>
<p>Könntest du kurz darlegen wie du auf diese Nicht-Folgerung kommst? Dass in C++ geschriebene Programme uU leichter oder mit weniger Aufwand mittels C++ Bibliotheken als mittels C-Bibliotheken zu erstellen sein können heißt noch lange nicht dass selbige Programme besser/schneller/was-auch-immer in C geschrieben werden können...</p>
<p>flammenvogel schrieb:</p>
<blockquote>
<p>(Ich will hier wirklich keinen Flamewar verursachen)</p>
</blockquote>
<p>Newbie-Bashing ist auch nicht viel toller <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="😉"
    /> SCNR</p>
<p>richie schrieb:</p>
<blockquote>
<p>Ob man &quot;mit Klassen&quot; programmiert, ist eine Stil- und Design-Frage. Mein Tipp: wenn C++, dann auch das Klassenkonzept nutzen und nahe am OOP-Paradigma bleiben.</p>
</blockquote>
<p>Ach ja? Dir ist klar dass C++ eine Multi-Paradigmensprache ist und dass C++ &quot;OOP-Paradigma&quot;-technisch gesehen nicht unbedingt der Stein der Weisen ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900738</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 25 Oct 2005 21:23:05 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 21:27:26 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a>:</p>
<p>Ich lerne gerne dazu: kläre mich auf wann man unter C++ auf OOP verzichten sollte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900743</guid><dc:creator><![CDATA[richie]]></dc:creator><pubDate>Tue, 25 Oct 2005 21:27:26 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 21:34:09 GMT]]></title><description><![CDATA[<p>Dann frage ich mich allerdings was ich seit Jahren mache. Kann sein das du das so siehst. Aber die WinApi ist nun mal in C geschrieben. Das merkt man vorallem an den C typischen Funktionsaufrufen. Ich habe mehre Projekt. In mehren habe ich die Probleme anfangs versucht mit Klassen zu implementieren, ich habe es in den meisten Fällen wieder rückgängig gemacht, weil man einfach durch den Code nicht durchsteigen konnte. Ein Beispiel für Probleme mit Klassen und WinApi: Versuche mal ein WinApi Programm zu schreiben wo die Fenster in einer Klasse verwaltet werden. Das geht zwar ist aber sehr komplex, da die Klasse static sein muss..., das macht aus meiner Sicht eine Implementierung in einer Klasse sinnlos, da man das Fenster dann halt nur einmal erstellen kann. Ich habe eine Negative Erfahrung mit WinApi und Klassen gemacht, weil man einfach alles wrappen muss. Und ich im Programm dann bei den Funktionsaufrufen einen C-Style habe und einen objektorientierten. Daher neige ich zu WinApi Programmen ohne Klassen. Verstehe es oder las es bleiben, das ist meine Meinung. Wenn du ne Objektorientierte GUI Erstellung haben willst, dann nimm Qt! Au0erdem unterstützten Perl/Python die WinApi nicht (es gibt eventuell C-Module, die die WinApi wrappen). Das hat aber aus meiner Sicht nichts mehr mit der WinApi zutun. Das wäre (für mich) so, als wäre der Benutzer Teil meines Programms, weil er Aktionen mit meinem Programm ausführt. Man muss aus meiner Sicht da unterscheiden. Allerdings ist das alles nichts anderes als eine Subjektive Meinung, wenn du das anders siehst (was natürlich dein gutes Recht ist), dann ist das so. (Das ist mein letzter Beitrag zum Thema weil, der Thread sich nicht mit der objektorientiert Programmierung der WinApi beschäftigt, sondern mit einem anderem Problem und ich diesen Thread nicht weiter zuflooden will...)</p>
<blockquote>
<p>Ich lerne gerne dazu: kläre mich auf wann man unter C++ auf OOP verzichten sollte?</p>
</blockquote>
<p>Würdest du das oben so machen??? Mir ist das zu kompliziert, da schreibe ich lieber für jede Aufgabe eine Funktion, und packe das alles in ein Programm. Obwohl man sicher auch einige Sachen an dem Problem gut mit Klassen lösen könnte, alles ist aus meiner Sicht übertrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900744</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Tue, 25 Oct 2005 21:34:09 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 21:45:36 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5167">@flammenvogel</a></p>
<p>Du hast angefangen diesen Thread vom Thema zu entfernen. Du wolltest jemanden, der richtigerweise ein Problem in C++ mit dem Klassenkonzept lösen wollte, mangels Wissen, schlechten Programmier-Stil einreden. Das gehört sich nicht in einem C++ Unterforum.</p>
<p>Du beweisst, dass du C++ und OOP nicht beherrschst. Deswegen meidest du es. Selbstverständlich ist die WinAPI eine in C geschriebene API. Sonst wäre es nicht so <strong>einfach</strong> möglich sie aus anderen Sprachen zu nutzen (beispielsweise Delphi, Pascal, Assembler ...). Ich sage nicht, dass Perl und Python WinAPI unterstützen. Ich sage nur, dass es problemlos möglich <strong>wäre</strong>.</p>
<p>Und was meinst du was QT macht? Das was du nicht hinkriegst. Die Windows-API mit C++ wrappen.</p>
<p>Ebenfalls sagte ich dass es guter Stil ist, Programmlogik und Oberfläche zu trennen. Wenn man es schon nicht hinkriegst die WinAPI zu wrappen, dann kann man oder sollte man die Programmlogik in einem C++ entsprechenden Stil lösen, wenn man C++ nutzen will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900750</guid><dc:creator><![CDATA[richie]]></dc:creator><pubDate>Tue, 25 Oct 2005 21:45:36 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 21:48:27 GMT]]></title><description><![CDATA[<p>@Sir Niko, damit das ganze nicht völlig OT dreht:<br />
Du scheinst dir schon einige Gedanken dazu gemacht zu haben... hast du ein Klassendiagramm? Noch viel wichtiger, eine Art Design-Rationale?</p>
<p>Programmierst du eine Lib für das Spiel die du wiederverwenden möchtest (bis zu einem gewissen Grade eine gute Idee) oder betreibst du komplexe Generalisierung &quot;für den Fall dass, irgendwann, irgendwie, <em>vielleicht</em>&quot; könnte ich das alles ja mal brauchen?</p>
<p>In Sachen Komplexität sind die paar Klassen denke ich nicht allzu schwerwiegend, was mich persönlich allerdings 'stört':</p>
<p>Wenn du (s.o.) kein Lib baust und deine MapLayer keine Abhängigkeiten untereinander haben, brauchst du wirklich eine LayeredMap? Reicht ein 'layered maps' nicht aus?<br />
Wozu brauchst du überhaupt verschiedene Arten von Maps - geht es nur um das &quot;könnte, eventuell&quot;?<br />
Vielleicht wäre es insgesamt nicht schlecht wenn du diesen Gedanken von 'essentiell verschiedenen' ein wenig erläutern könntest!? Welche Arten von Maps neben LayeredMap schweben dir vor, warum können es nicht schlicht verschiedene Tiles(?)/Objekte auf der Map sein?</p>
<p>Was mir allerdings als erstes aufgefallen ist ist dein <em>MapObject</em>, welches du in den Vordergrund rücken zu scheinst.<br />
Ist es nicht eher so dass das <em>Map</em>-Object das Hauptsächliche ist? Dass eine Map, wie du selbst sagst, verschiedene <em>MapObject</em>s haben kann aber nicht umgekehrt? Dass das <em>MapObject</em> eher <em>MapPresentation</em> o.ä.(tm) heißen sollte (&quot;FooObject&quot; ist allerhöchstens für Variablen nicht nichtssagend..)?</p>
<p>Was deine Konsistenzprobleme angeht: wenn es bei der Zusammenstellung um mehr geht als von einem Level/Map-File zu laden solltest du dich evtl. etwas ausführlicher zu deinem Vorhaben äußern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900751</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 25 Oct 2005 21:48:27 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 21:55:06 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a>:<br />
Könntest du bitte dennoch meine Frage beantworten? Es würde mich sehr interessieren:</p>
<p>richie schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a>:<br />
Ich lerne gerne dazu: kläre mich auf wann man unter C++ auf OOP verzichten sollte?</p>
</blockquote>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900753</guid><dc:creator><![CDATA[richie]]></dc:creator><pubDate>Tue, 25 Oct 2005 21:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 21:59:37 GMT]]></title><description><![CDATA[<p>richie schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a>:</p>
<p>Ich lerne gerne dazu: kläre mich auf wann man unter C++ auf OOP verzichten sollte?</p>
</blockquote>
<p>Hehe.. sorry.. wollte damit nicht ausdrücken dass du auf OOP verzichten sollst <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="😉"
    /><br />
Nur dass, wie gesagt, C++ nicht das Musterbeispiel bezüglich OOP darstellt und nicht zwangsläufig auf OOP beschränkt ist...<br />
Lies den Post nochmal.</p>
<p>edit: nochmal, ich programmiere selbst Objektorientiert, widerspreche flammenvogel absolut, aber C++ ist eine Multiparadigmensprache.<br />
Aber dogmatisch OOP muss auch nicht sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900754</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 25 Oct 2005 21:59:37 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 22:06:09 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a>:<br />
Das weiss ich. C++ wollte schon immer abwärtskompatibel zu C bleiben, und schleppt es daher als Untermenge mit sich. Die Standard-Bibliothek ist auch ein gutes Beispiel, dass OOP eher in einem geringen Maße genutzt wird (Kaum Vereerbung). Aber dennoch ist sie bis zu einem gewissen Grad OO. Meine Aussage, die du zitierst hast, ist demgegenüber kein Widerspruch.<br />
Ausserdem betrachte ich OOP nicht unbedingt als ein Sprachenfeature. Hin und wieder muss auch mal plain C benutzen und auch da versuche ich das Problem OO zu lösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900758</guid><dc:creator><![CDATA[richie]]></dc:creator><pubDate>Tue, 25 Oct 2005 22:06:09 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 22:15:57 GMT]]></title><description><![CDATA[<p>richie schrieb:</p>
<blockquote>
<p>Die Standard-Bibliothek ist auch ein gutes Beispiel, dass OOP eher in einem geringen Maße genutzt wird (Kaum Vereerbung).</p>
</blockquote>
<p>Obwohl ich Generics manchmal doch schon sehr vermisse finde ich &quot;die STL&quot; (die du wahrscheinlich meinst) nicht schlecht. Nicht alles muss ein <em>AlgorithmObject</em> o.ä. sein. Nicht alles muss ein Objekt sein. Freie Funktionen sind toll. Und auch Objekte müssen nicht zwangsläufig in einer gigantischen Vererbungshierarchie stecken...</p>
<p>richie schrieb:</p>
<blockquote>
<p>Aber dennoch ist sie bis zu einem gewissen Grad OO. Meine Aussage, die du zitierst hast, ist demgegenüber kein Widerspruch.</p>
</blockquote>
<p>Wollte ich damit auch nicht ausdrücken. Hatte sich aber angehört wie C++ -&gt; OOP, zwangsläufig <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>richie schrieb:</p>
<blockquote>
<p>Ausserdem betrachte ich OOP nicht unbedingt als ein Sprachenfeature. Hin und wieder muss auch mal plain C benutzen und auch da versuche ich das Problem OO zu lösen.</p>
</blockquote>
<p>Wollte ich damit ebenfalls nicht ausdrücken. OOP wird eben mehr oder weniger von einer Sprache unterstützt oder nicht - aber du musst zugeben dass &quot;selbst C++&quot; nicht wirklich der Gral der OOP ist, oder!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900762</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 25 Oct 2005 22:15:57 GMT</pubDate></item><item><title><![CDATA[Reply to Designproblem on Tue, 25 Oct 2005 22:50:40 GMT]]></title><description><![CDATA[<p>Warum vermüllt ihr hier eigentlich den Thread?! Das hat doch gar nichts mit der Fragestellung zu tun. Wenn das ein Moderator hier ließt sollte er den Thread auf jeden Fall splitten oder die Offtopic-Beiträge löschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900770</guid><dc:creator><![CDATA[:die:]]></dc:creator><pubDate>Tue, 25 Oct 2005 22:50:40 GMT</pubDate></item></channel></rss>