Ab wann setzt ihr eigene Klassen ein?
-
@Klassenmachen
Beschäftige Dich intensiv damit, erfahre die Vorteile durch eigene Erfahrungen oder lass es einfach und bleib bei Deinem C-Gefrickel. Die ganze Diskussion ist nutzlos.
-
Gut, dann bleibe ich bei meinen "C-Gefrickel", denn es funktioniert für mich sehr gut und nur darauf kommt es an. Hätte ja sein können, dass mir Klassen was bringen. Ach ne, ich arbeite ja schon mit Klassen und OOP
-
benutzt du exceptions?
-
Otze ist gut, der Typ trollt doch nur noch ...
-
sieht für mich so aus als würde der te - Klassenmachen - sich nicht mit allen sprachmitteln bzw. mit dem objektorientierten paradigma von c++ auseinander gesetzt zu haben. was mir spontan einfällt was durch klassen wesentlich verbessert wird:
- ausdrücken von logischen relationen wie komposition oder vererbung
- syntax des nutzers bzgl. konstruktoren / destruktoren / operatoren / methoden
- erheblich niedrigere fehleranfälligkeit dank RAII (man kann das konstruieren und das zerstören nicht "vergessen" (vergessen ist das falsche wort hier weil RAII auch ein segen für exceptionsafety ist))
- polymorphie, erheblich höhere modularität und flexibilität
- generik & metaprogrammierung
und sicher noch einige mehr...aber ist mir eigentlich egal ob du deine programme fortan mit flexiblem und modernem c++-design oder mit "c++ with cout" programmieren möchtest.
ps.: ich würde zu gerne wissen, ob irgend eins deiner programme auch nur im geringsten exceptionsicher geschweige denn multithreading-fähig ist.
-
asdfsa schrieb:
- polymorphie, erheblich höhere modularität und flexibilität
lol, das Gegenteil ist der Fall.
ps.: ich würde zu gerne wissen, ob irgend eins deiner programme auch nur im geringsten exceptionsicher geschweige denn multithreading-fähig ist.
Wozu braucht er Exceptionsicherheit? Und mit Multithreading hat das gar nichts zu tun, alles, was keine globale Variablen verwendet, ist automatisch Multithreading-fähig.
-
Klassenmachen schrieb:
Gut, dann bleibe ich bei meinen "C-Gefrickel", denn es funktioniert für mich sehr gut und nur darauf kommt es an.
Was war dann deine Frage? Wozu der Thread?
Klassenmachen schrieb:
Hätte ja sein können, dass mir Klassen was bringen.
Tun sie, siehe meinen Beitrag auf Seite 2.
-
buzzbuzzbuzz schrieb:
asdfsa schrieb:
- polymorphie, erheblich höhere modularität und flexibilität
lol, das Gegenteil ist der Fall.
hmm ne.
buzzbuzzbuzz schrieb:
ps.: ich würde zu gerne wissen, ob irgend eins deiner programme auch nur im geringsten exceptionsicher geschweige denn multithreading-fähig ist.
Wozu braucht er Exceptionsicherheit? Und mit Multithreading hat das gar nichts zu tun, alles, was keine globale Variablen verwendet, ist automatisch Multithreading-fähig.
ja, wozu braucht man exceptionsicherheit?
und so ein klassenloser prozeduraler zustandsautomat hat also keine globale variablen bzw. keinen globalen speicher?
-
Tut mal nicht alle so, als wenn man ohne Klassen und Design-Pattern keine Programme mehr schreiben kann.
-
qwerty123 schrieb:
Tut mal nicht alle so, als wenn man ohne Klassen und Design-Pattern keine Programme mehr schreiben kann.
ja, aber dann in einer anderen Sprache. C++ ist dafür designed, mit Klassen benutzt zu werden. Haskell nicht, C nicht. Dewegen benutze Haskell und C wenn du keine Klassen benutzen willst. Dann kannste auch Programme ohne Klassen schreiben.
-
otze schrieb:
C++ ist dafür designed, mit Klassen benutzt zu werden.
Was genau hast du am Wort "multi-paradigm" nicht verstanden?
-
multi-paradigm schrieb:
otze schrieb:
C++ ist dafür designed, mit Klassen benutzt zu werden.
Was genau hast du am Wort "multi-paradigm" nicht verstanden?
Rgistrier dich, dann reden wir weiter.
//edit naja, will ich mal nicht so sein. auch wenn du nur unreg troll bist.
multi-paradigm heißt nicht: "du kannst rein funktional programmieren" sondern "Teile deines Programmes können funktional sein". Es heißt nicht: "Du brauchst niemals objektorientiert programmieren". Exceptions und Speicherwaltung zusammen ergeben halt den Fall, dass du RAII verwenden _musst_. Da hast du keine Wahlfreiheit des Paradigmas mehr, weil die Sprache dich dazu zwingt, den destructor zum aufräumen zu verwenden.
-
qweasdyxc schrieb:
@Klassenmachen
Beschäftige Dich intensiv damit, erfahre die Vorteile durch eigene Erfahrungen oder lass es einfach und bleib bei Deinem C-Gefrickel. Die ganze Diskussion ist nutzlos.Genau das.
@Klassenmachen: Entweder du liest dir nochmals genau die Argumente dieses Threads durch und versuchst sie gründlich zu verstehen (alleine Kapselung, RAII und weniger Code rechtfertigen das Feature). Und benutze die Sprache C++ eine Weile und bilde dir dann eine Meinung -- vieles erscheint von aussen anders. Oder du lehnst Klassen kategorisch ab, aber dann frage ich mich, wozu du diesen Thread erstellt hast.
Und schau die Antworten als gutgemeinte Ratschläge und nicht Bekehrungen oder Anfeindungen an. Es kann uns eigentlich egal sein, ob du Klassen benutzt oder nicht, d.h. wir müssen dich nicht davon überzeugen. Wir liefern gerne Argumente, aber wenn du ihnen nicht glaubst, ohne sie genauer angeschaut zu haben, dann kann man wohl nichts machen. Aber ewig weiterzudiskutieren bringt nichts; die wichtigen Argumente wurden alle genannt.
-
otze schrieb:
qwerty123 schrieb:
Tut mal nicht alle so, als wenn man ohne Klassen und Design-Pattern keine Programme mehr schreiben kann.
ja, aber dann in einer anderen Sprache. C++ ist dafür designed, mit Klassen benutzt zu werden. Haskell nicht, C nicht. Dewegen benutze Haskell und C wenn du keine Klassen benutzen willst. Dann kannste auch Programme ohne Klassen schreiben.
Was für ein Unsinn, C++ ist eben gerade deswegen so vielfältig, weil man eben es so einsetzen kann wie man möchte. Stoustrup meint sogar C mit Klassen darum kann man machen. Oder auch ganz ohne Klassen, nur mit STL und Namensräumen.
Wenn jemand nicht für jeden Scheiß eine Klasse bauen muss, dann ist das doch völlig ok. Und ja ich setze auch goto ein wenn es Sinn macht und habe auch schon C Code in Klassen gepackt und und und
Leider fehlt mir noch ein Begriff für die Entwickler, die nur noch in Klassen, OOP und DesignPattern denken können. Ein SourceCode mit viel generalisiertem Zeug ist genauso übel wie eine Datenbank in der 5.Normalform, wo man keinen Zusammenhang mehr erkennen kann.
Jeder sollte C++ so einsetzen, wie ihm am besten passt, schließlich ist ein eine Multi-Paradigmen-Sprache und so wird sie auch eingesetzt. Wenn einige Bastelfreunde hier C++ nur in die eine Richtung einsetzen, so müssen doch nicht alle Entwickler so engstirnig sein.
-
MultiKulti schrieb:
Oder auch ganz ohne Klassen, nur mit STL und Namensräumen.
Ah, und die STL verwendet keine Klassen?
MultiKulti schrieb:
Jeder sollte C++ so einsetzen, wie ihm am besten passt, schließlich ist ein eine Multi-Paradigmen-Sprache und so wird sie auch eingesetzt. Wenn einige Bastelfreunde hier C++ nur in die eine Richtung einsetzen, so müssen doch nicht alle Entwickler so engstirnig sein.
Nur weil es möglich ist, auf Klassen zu verzichten, ist das noch lange nicht sinnvoll. Ich kenne kein einziges grösseres C++-Projekt, das keine Klassen verwendet. Vielleicht kommt es ohne Vererbung und Laufzeitpolymorphie aus, aber nicht Klassen an sich.
Nur so nebenbei: Generische und funktionale Programmierparadigmen bauen in C++ ebenso auf Klassen auf wie objektorientierte. Im ersten Fall hast du Klassentemplates, im zweiten Funktoren.
-
Wenn jemand nicht für jeden Scheiß eine Klasse bauen muss, dann ist das doch völlig ok
Es geht aber nicht um jeden Scheiss.
Oder auch ganz ohne Klassen, nur mit STL und Namensräumen.
Und schon haben wir Klassen.
Leider fehlt mir noch ein Begriff für die Entwickler, die nur noch in Klassen, OOP und DesignPattern denken können.
Ich kenne viele Begriffe fuer Leute wie dich. Klassen gibt es in vielen Programmiersprachen, sie dient als Beschreibung von Objekten mit gemeinsamer Struktur. In der Mathematik nennt sich das Menge. Jetzt die Preisfrage: Stell dir die Mathematik ohne Mengen vor. Fuer mich undenkbar. In Haskell hast du instance of typeclass, in Scheme/Lisp sinds Closure, in C struct + function (explizites this quasi), ...
Jeder sollte C++ so einsetzen, wie ihm am besten passt
Das ist zu subjektiv. Die Loesung sollte dem Problem gerecht werden und nicht dem Entwickler. Meisst passen Klassen recht gut.
-
MultiKulti schrieb:
Wenn jemand nicht für jeden Scheiß eine Klasse bauen muss, dann ist das doch völlig ok. Und ja ich setze auch goto ein wenn es Sinn macht und habe auch schon C Code in Klassen gepackt und und und
Dazu müsste man jetzt Beispiele sehen, damit man weiss wo für dich die Grenze ist.
Ich kenne viele Leute die ähnlich argumentieren, deren Code man nur mehr als totale Katastrophe ansehen kann.
Andere wieder haben etwas was ich als guten Mittelweg bezeichnen würde gefunden.Die meisten Programmierer die ich kenne schreiben aber zu wenig eigene Klassen und zu wenig eigene Funktionen.
Kommt mir manchmal so vor als ob die drauf warten dass man ihnen sagt sie sollen irgendwo ne Unterfunktion verwenden, oder ne eigene Klasse schreiben. So nach dem Motto "im Auftrag steht nix davon drin dass ich hier eigene Klassen schreiben muss". WTF?
Oder als ob sie zu faul wären sich nen Namen für die neue Klasse zu überlegen, die zwei neuen Files anzulegen und die ganzen anderen schrecklich aufwendigen Tätigkeiten die dazugehören wenn man neue Klassen definiert.
"Ich hab ja eh schon Klasse X, das pack ich einfach da dazu."
Oder auch die "das ist praktische" Leute. "Das wäre doch viel praktischer wenn Klasse X auch gleich noch Y mit macht." OMFG.
Ich muss weinen wenn ich nur dran denke.Bzw. mir kommt manchmal auch vor dass viele Programmierer das als "ah, OK, kann man auch machen wenn man will" sehen (das = eigene Klassen und Funktionen definieren).
Die gehen her und klicken im Studio was zusammen, und füllen dann die vom Studio erzeugten Funktionen aus. Als ob sie ein Formular ausfüllen. Ich versteh's einfach nicht----
Ich gebe zu, das ist vielleicht etwas überspitzt formuliert/übertrieben. Aber nicht sehr, und das ist das traurige dabei.
-
Es würde mich nicht wundern, wenn die ganzen unterschiedlich-namigen, unregistrierten Kritikerbeiträge in Tat und Wahrheit von ein und der selben Person kommen, das Geschriebene ist ja immer gleich selbstwidersprüchlich, stur und unbegründet...
-
Watchdog1337 schrieb:
Es würde mich nicht wundern, wenn die ganzen unterschiedlich-namigen, unregistrierten Kritikerbeiträge in Tat und Wahrheit von ein und der selben Person kommen, das Geschriebene ist ja immer gleich selbstwidersprüchlich, stur und unbegründet...
Alles sdf.
-
hustbaer schrieb:
Die meisten Programmierer die ich kenne schreiben aber zu wenig eigene Klassen und zu wenig eigene Funktionen.
Kommt mir manchmal so vor als ob die drauf warten dass man ihnen sagt sie sollen irgendwo ne Unterfunktion verwenden, oder ne eigene Klasse schreiben. So nach dem Motto "im Auftrag steht nix davon drin dass ich hier eigene Klassen schreiben muss". WTF?Ich kann das leider bestätigen. Verallgemeinerung ist nicht so unbedingt jedermanns Stärke.
Auch einfach Funktionalität in eine Klasse packen, weil es praktisch ist, deutet schon auf eine falsche Denkweise hin. Man sollte beim Entwickeln die Problemstellung analysieren und in Funktionalitäten aufteilen. Diese Funktionalitäten werden dann häufig in Klassen implementiert. Dabei hat eine Klasse eine definierte Aufgabe und nicht zwei oder mehr.
Um auf die ursprüngliche Frage einzugehen könnte ich mir vorstellen, dass man ein Spielfeld von Tetris als Objekt modelliert. Auch ein Spielstein definiert man als Objekt.
Ich verstehe aber, dass der Übergang von prozeduraler zur objektorientierten Denkweise nicht so von heute auf morgen geht. Ich hatte damals, als ich von C nach C++ umgestiegen bin, auch eine Zeit gebraucht, wo ich mir gerade die Frage gestellt hatte, wozu man Klassen braucht. Jetzt sind sie aber nicht umständlich sondern im Gegenteil ein äußerst hilfreiches Mittel, um Programme sauber zu strukturieren. Und dabei ergibt sich das, dass ich bei praktisch jedem Programm, welches von "hello world" hinaus geht, irgendeine Klasse habe. Und zwar weil es bequem ist und eben nicht umständlich.