Ab wann setzt ihr eigene Klassen ein?



  • MichelRT schrieb:

    Klassenmachen schrieb:

    STL ist sollte man nicht als Argument für Klassen sehen, da so etwas auch nur externe Funktionalität ist.

    Wenn Du der Meinung bist, dann solltest du bei C bleiben.
    Weil dann wirst Du über das Stadium C++ sei C mit Klassen und cin/cout nie hinauskommen.
    Die STL gehört zu C++ und ist KEINE externe Bibliothek 😮

    Das ist mit als Programmierer doch völlig egal ob das nun eine externe Lib ist, oder zum Standard gehört. Ohne externe Libs kann man eh kaum arbeiten.

    Wozu muss ich über einen bestimmtes Studium herauskommen? Es funktioniert doch alles wie es soll. Ich habe ein Problem, male mir ein paar Sachen dazu auf und suche Algos die mir helfen könnten. Dann entwickle ich die ersten Prototypen, sehe dabei wo größere Probleme auftreten können und das wird dann soweit verfeinert, bis ich keine Fehler mehr drin habe und meine Aufgabe erfüllt ist.

    Dies alles funktioniert bei mir seit Jahren ohne eine einzige Klasse haben zu müssen und ich wollte in Erfahrung bringen, warum anderen es anscheinend nicht reicht und diese Leute Klassen unbedingt brauchen.

    Ich denke, das wurde hier nun genug da gelegt. Alle angesprochen Probleme habe ich in meinen Programmen nie wirklich als ernsthaftes Problem angesehen. Wie gesagt, es funktioniert alles wie es soll und auch nach Jahren komme ich noch gut mit meinem Code von damals zurecht.

    Klassen bleiben für mich wohl daher ein ziemlich sinnloses Konstrukt. Aber solange alles klappt, bleibe ich bei dem Motto: "Never change a runnning system"

    Soll ich irgendwann mal Riesenprojekte mit mehreren Leute angehen, dann mögen Klassen durchaus Vorteile haben. Aber bei meinen Ein-Mann-Projekten, sind sie nur ein unnötiger Mehraufwand.



  • Ja ist ja gut jetze, wir habens verstanden: Du findest Klasse(n) scheiße.
    Mit der selben Argumentation kann man auch C vergessen und bei Assembler bleiben, und überhaupt wozu brauche ein Betriebssystem?

    Das hat sich nunmal entwickelt, weil die Leute (endlich) anfingen Konzepte zu entwickeln und daraus zu abstrahieren. Das ist fast in jeder technischen, wissenschaftlichen Disziplin so. Klassen sind ein Abstraktionskonzept. Natürlich braucht man das nicht, aber es macht vieles eifnacher (sonst hätte man es garnicht für notwendig empfunden sowas zu entwickeln).

    Ein Beispiel:
    Es muss doch jedem klar sein, dass wenn ich z.B zwei (mathematische) Vektoren addiere, ich nicht jedesmal darauf hinweisen will das man dazu alle Komponenten addiert. Das nervt auf Dauer. Genau das kann man in C++ mit Klassen nachbilden.
    Natürlich kann ich alle Komponenten getrennt behandeln, sie gehören aber logisch zusammen.



  • Klassenmachen schrieb:

    Aber bei meinen Ein-Mann-Projekten, sind sie nur ein unnötiger Mehraufwand.

    Nein, sind sie nicht.



  • Klassenmachen schrieb:

    Soll ich irgendwann mal Riesenprojekte mit mehreren Leute angehen, dann mögen Klassen durchaus Vorteile haben. Aber bei meinen Ein-Mann-Projekten, sind sie nur ein unnötiger Mehraufwand.

    Du verwendest jetzt auch schon Klassen, nur hast Du es noch nicht gemerkt 😮
    In C++ ist auch ein struct eine Klasse, der Unterschied zu class ist nur, dass alle Member public sind. Es gibt aber Konstruktoren und Destruktoren, ...



  • @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 🙂

    @ScottZhang: 🙄



  • 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.


Anmelden zum Antworten