Ab wann lohnt sich eine Klasse



  • freakC++ schrieb:

    Zwar könnte ich einfach die Variablen global machen, doch dann könnte ich gleich Delphi progrmamieren...äh...dann wäre das nicht sehr schöner Stil

    Hm... das verstehe ich nicht, auch in Delphi würde man Klassen anlegen und keine globalen Variablen. Deine Frage ist ja grundsätzlich für alle OO-Sprachen, die Klassen unterstützen.



  • Tobiking2 schrieb:

    Ich mein hier im Forum mal die Aussage gelesen zu haben "Eine Klasse macht dann Sinn wenn man mindestens zwei Objekte von ihr erstellt" und das scheint hier nicht der Fall zu sein. Alternativ könnte man die Variablen und die zwei Funktionen auch einfach in ein Namespace packen.

    Oder in eine namenlose Klasse.



  • Hallo zusammen,

    @Marc++us: Das mit Delphi sollte ein kleiner Scherz sein, da ich diese Programmiersprache nicht sehr gerne hab' :p .

    Auf structs möchte ich hier verzichten, da nicht alles public sein sollte. Es macht also Sinn, für beispielsweise zwei Methoden, die sich miteinander austauschen müssen und gleiche Variablen brauchen, eine Klasse anzulegen?

    Vielen Dank
    lg, freakC++



  • Es gibt auch für structs das keyword private...

    Wenn sich etwas logisch zusammenschließen läßt, schließ es zusammen (zu einer Klasse/Strukt).



  • ok!

    Aber structs sind doch einfach dafür, public zu sein. Was bringt es mir einen public Artikel einzuführen, um ihn dann wieder private zu machen 😕 Ich glaube, dass ich einfach eine union mache 😉

    Ne, ich mach eine Klasse.
    lg, freakC++



  • @C Freak: Keine Ansgt, ich gehe noch in die Schule 😃

    lg, freakC++



  • Tobiking2 schrieb:

    Ich mein hier im Forum mal die Aussage gelesen zu haben "Eine Klasse macht dann Sinn wenn man mindestens zwei Objekte von ihr erstellt" und das scheint hier nicht der Fall zu sein. Alternativ könnte man die Variablen und die zwei Funktionen auch einfach in ein Namespace packen.

    Wir sind ja nicht bei Java, wo alles in einer Klasse sein muss 😃

    Und was ist mit Singletons? Das ist durchaus ein Pattern, was häufig Sinn macht. Dann gibt es tatsächlich nur eine Instanz.



  • tntnet schrieb:

    Und was ist mit Singletons? Das ist durchaus ein Pattern, was häufig Sinn macht.

    Das häufig unterschreibe ich nicht, auch wenn ich gelegentlich selbst davon gebrauch mache. Ob ein Singleton gutes oder schlechtes Design ist, lässt sich beliebig lange diskutieren (Ich persönlich verwende sie, aber versuche die Anzahl gering zu halten).



  • freakC++ schrieb:

    Es macht also Sinn, für beispielsweise zwei Methoden, die sich miteinander austauschen müssen und gleiche Variablen brauchen, eine Klasse anzulegen?

    Meines Erachtens machen Klassen dann Sinn, wenn es sich um logische Einheiten handelt - und gleichzeitig möglichst nicht das Prinzip verletzt wird, das eine Klasse auch nur eine Aufgabe erfüllen sollte.

    Anderseits ist die Grenze auch fließend, ich glaube das Herb Sutter oder Scott Meyer in einen seiner Bücher mal gesagt hat, wann man eine Methode und wann eine Funktion vorziehen sollte.



  • l'abra d'or schrieb:

    Nur ist halt ein struct ohne eigene Methoden (wie du das wohl angedacht hast) sicherlich möglich, wenn du die Möglichkeit der Datenkapselung in C++ nutzen willst aber nicht nützlich. Member immer private und ansprechen über öffentliche Schnittstelle. Auch in Hinblick auf mögliche spätere Vererbung ist es einen Gedanken wert!
    Sonst kann man gleich wieder C Programmieren gehen 🙂

    Das würde ich so nicht verallgemeinern. Es gibt durchaus Datentypen, bei denen sich eine Kapselung nicht lohnt. Für diese nehme ich persönlich struct ohne Zugriffsspezifizierer und Memberfunktionen (ausser Konstruktoren).

    Beispiel Vektorklasse. Da greift man recht oft direkt auf Member zu, und zusätzliche Getter/Setter würden den Code ohne wirklichen Nutzen hässlich machen.

    Vector v(2.f, 3.f);
    Vector w(4.f, -1.f);
    
    // 1
    v.x += 1.5f * w.x;
    
    // 2
    v.SetX(v.GetX() + 1.5f*w.GetX());
    


  • Nexus schrieb:

    Beispiel Vektorklasse. Da greift man recht oft direkt auf Member zu, und zusätzliche Getter/Setter würden den Code ohne wirklichen Nutzen hässlich machen.

    👍 Wobei solche hässlichen Vektorenklassen leider gar nicht so selten sind.


Anmelden zum Antworten