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
|
Verfasst am: 01.01.2004, 14:29 Titel: [C++] Programmierstil |
|
|
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 .
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 |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 01.01.2004, 15:05 Titel: |
|
|
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 |
|
|
MadMax82 Mini JLI'ler
Anmeldedatum: 31.12.2003 Beiträge: 9
Medaillen: Keine
|
Verfasst am: 01.01.2004, 17:49 Titel: |
|
|
Finde ich lustig das du in zwei Foren exact den selben thread postes. |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 01.01.2004, 18:14 Titel: |
|
|
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 |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 01.01.2004, 19:01 Titel: |
|
|
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 |
|
|
MadMax82 Mini JLI'ler
Anmeldedatum: 31.12.2003 Beiträge: 9
Medaillen: Keine
|
Verfasst am: 01.01.2004, 19:12 Titel: |
|
|
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 01.01.2004, 21:54 Titel: |
|
|
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 _________________ 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 |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 01.01.2004, 22:12 Titel: |
|
|
bei OOP kommt mir nur eins in den sinn : 25 Klassenableitungen später...
MFG
LordHoto |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 01.01.2004, 22:19 Titel: |
|
|
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... _________________ 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 |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 01.01.2004, 22:38 Titel: |
|
|
wenn du klassen sagt kommt mir OOP in sinn und bei OOP geht es stark um klassenableitungen!
MFG
LordHoto |
|
Nach oben |
|
|
Mazze JLI'ler
Alter: 39 Anmeldedatum: 02.01.2004 Beiträge: 145
Medaillen: Keine
|
Verfasst am: 02.01.2004, 02:34 Titel: |
|
|
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 |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 02.01.2004, 09:41 Titel: |
|
|
Servus Mazze
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 |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 02.01.2004, 10:25 Titel: |
|
|
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 |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 02.01.2004, 11:54 Titel: |
|
|
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 02.01.2004, 12:27 Titel: |
|
|
@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 |
|
|
|