JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=a392751b3d3786c7c3d57cdba344fc9bMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

[C++] Programmierstil
Gehe zu Seite 1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 01.01.2004, 14:29    Titel: [C++] Programmierstil Antworten mit Zitat

Hallo,

Hier mal eien Frage an die etwas fortgeschritteneren C++ Programmierer.
Ich bin dabei das geniale Buch "Die C++ Programmiersprache" vom guten alten Bjarne zu lesen Wink.

Bisher war ich davon überzeugt, für alles Klassen zu benutzen. Jetzt wo ich das Buch gelesen habe dachte ich, dass man doch für Klassen die sowieso nur einmal existieren sollen, welche auch nicht vererbare Eigenschaften haben, eigentlich gar keien Klassen braucht.

Im Buch nennt sich das Modulares Programmeiren, ich wollte mal fragen, was ihr von dem Stil haltet ? Es gibt ja einige Leute die ganz extrem dagegegen sind (genauso wie sie Singletons verachten)
Als Beispiel:
Code:

namespace G2D
{
   //! graphics device interface
   namespace graphics
   {
      enum eBlendMode
      {
         additive,
         multiply
      };

      void Initialize();
      void Destroy();

      void SetClearColor( cColor4 color );
      void ClearBuffer();
      void SwapBuffer();

      void SetBlendMode( eBlendMode mode );
   }
}


So sieht das (vereinfachte) Interface für das Grafik Device aus (es soll keien mehreren austauschbaren Devices geben, also brauch ich auch keien Abstraktion.

In der zugehörigen Cpp Datei kann man dann private Variablen deklarieren. So kriegt die "außenwelt" noch nichtmal mit, welche Datentypen (hier z.b. sdl) benutzt werden.

So braucht man sich auch nicht mehr so viele Gedanken darüber machen, wie/wo man die Instanzen erzeugt und wie man sie verteilt.
Natürlich ist ein komplexes Klassensystem eleganter, aber für eine kleine Engine sollte das oben doch vollkommen ausreichen...

Man soll sich bekanntlich ja nicht über Programmierstil streiten, ber was haltet ihr davon ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 01.01.2004, 15:05    Titel: Antworten mit Zitat

Ist, finde ich, eigentlich eine gute Idee. Wenn man auf Kon- und Destruktor verzichten kann ist das doch ganz sauber.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MadMax82
Mini JLI'ler



Anmeldedatum: 31.12.2003
Beiträge: 9

Medaillen: Keine

BeitragVerfasst am: 01.01.2004, 17:49    Titel: Antworten mit Zitat

Finde ich lustig das du in zwei Foren exact den selben thread postes.Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 01.01.2004, 18:14    Titel: Antworten mit Zitat

Das nennt man Crossposting... und ist bei den meisten Leuten verhasst(was ich persönlich nicht nachvollziehen kann da man auf diese Weise mehr Leute ansprechen kann).
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 01.01.2004, 19:01    Titel: Antworten mit Zitat

stimmt.
ZFX udn JLI sind ganz andere Leute, warum soll ich nicht in 2 Foren die gleiche Frage stellen. Zumal dass ja nicht wirklich ein normale Frage sondern eher eine Meinugnsumfrage ist, also kann man mehr Leute ansprechen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MadMax82
Mini JLI'ler



Anmeldedatum: 31.12.2003
Beiträge: 9

Medaillen: Keine

BeitragVerfasst am: 01.01.2004, 19:12    Titel: Antworten mit Zitat

He das war kein Kritik. Ich dachte vorhin beim lesen nur das ich den Text doch irgendwo her kenne. Und fand das dan eben irgendwie amüsant.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 01.01.2004, 21:54    Titel: Antworten mit Zitat

An und für sich keine schlechte Idee. Aber an und für sich spricht auch AFAIK nix gegen Klassen.
Ich verwende meistens Klassen (z.B. für DirectDraw), die ich dann als Referenz an andere Klassen weiterreichen kann. Ich habe z.B. eine Fontklasse zur Textausgabe, etc... (und eben allem, was dazu gehört). Dieser Klasse übergebe ich gleich die "offizielle" DirectDraw-Klasse, damit sie gleich mit dieser die Buchstaben zeichnen kann Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
LordHoto
JLI'ler


Alter: 35
Anmeldedatum: 27.03.2003
Beiträge: 137
Wohnort: Gelnhausen
Medaillen: Keine

BeitragVerfasst am: 01.01.2004, 22:12    Titel: Antworten mit Zitat

bei OOP kommt mir nur eins in den sinn : 25 Klassenableitungen später...

MFG

LordHoto
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 01.01.2004, 22:19    Titel: Antworten mit Zitat

LordHoto hat Folgendes geschrieben:
bei OOP kommt mir nur eins in den sinn : 25 Klassenableitungen später...

MFG

LordHoto

Öhm...das verstehe ich jetzt nicht ganz... Rolling Eyes
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
LordHoto
JLI'ler


Alter: 35
Anmeldedatum: 27.03.2003
Beiträge: 137
Wohnort: Gelnhausen
Medaillen: Keine

BeitragVerfasst am: 01.01.2004, 22:38    Titel: Antworten mit Zitat

wenn du klassen sagt kommt mir OOP in sinn und bei OOP geht es stark um klassenableitungen!

MFG

LordHoto
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mazze
JLI'ler


Alter: 39
Anmeldedatum: 02.01.2004
Beiträge: 145

Medaillen: Keine

BeitragVerfasst am: 02.01.2004, 02:34    Titel: Antworten mit Zitat

Joa hab mir auch schon mal überlegt ob man sich so etwas realisieren ließe,aber mit Klassen lässt sich eigentlich auch ganz nett modular Programmieren...
aber verkehrt finde ich es nicht Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 02.01.2004, 09:41    Titel: Antworten mit Zitat

Servus Mazze Wink

Also auf OOP verzichten kann ich nicht. Doch für Klassen die Sowieso nur ein einziges mal existieren dürfen, und auch keine Ableitungen brauchen ist das eigentlich eine ganz einfache Lösung.

>>bei OOP kommt mir nur eins in den sinn : 25 Klassenableitungen später...

Also das kann ich überhaupt nicht nachvollziehen. Natürlich geht es bei OOP um Klassenbeziehungen, aber wenn du 25 Klassen hast die abgeleitet sind... möchtest du die etwa alle mdoular schreiben obwohl das durch OOP viel übersichtlicher/einfacher gelingen würde ?? Gerade für das Szene/Resorucen Managment verwende ich sehr gerne OOP, und natürlich überall wo man feste Typen braucht (cColor3/cColor4/cVector2/cMatrix3/cRectangle), diese müssen vielleicht nicht ableitbar sein, aber mehrere Instanzen braucht man allemal. außerdem kann man die Operatoren recht fix überladen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 02.01.2004, 10:25    Titel: Antworten mit Zitat

Zitat:
>>bei OOP kommt mir nur eins in den sinn : 25 Klassenableitungen später...


Wenn dir das passiert, bist du ein schlechter Designer. Punkt. :P Ich bau mein ganzes Programm aus Klassen auf und die einzigsten Klassen, die ableitbar sind, sind IEntity und TSingleton<>.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 02.01.2004, 11:54    Titel: Antworten mit Zitat

Stimmt. so ähnlich sah das bei mir auch aus. nur dass ich aufgehört habe Singletons zu benutzen (ausnahme Konsole/Log).
Für die letzte version der Engine hatte ich nen ganzen UML Diagramm für die Klassenbeziehungen. Das hat auch ganz gut geklappt, war gut erweiterbar, übersichtlich. Doch war das für die kleine Engine, die sowieso nur ich benutze ein zu großes Geschütz.
Darum bin ich jetzt auf diese einfache Alternative umgestiegen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 02.01.2004, 12:27    Titel: Antworten mit Zitat

@LordHoto: Was gibt es an Klassenableitungen auszusetzen?

Ich bau den "Engineteil" des Programmes nur aus Klassen zusammen. D.h. die Teile, die ich in irgendwelchen anderen Programmen so wie sie sind übernehmen kann, sind in einer Klasse verpackt(z.B. DD, DXA, DI und alle möglichen anderen Engines, wie z.B. eine Geometrieengine)
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum