Static Klassen?

ThiKool

Erfahrenes Mitglied
Hallo Leute,

ich experimentiere gerade etwas mit Klassen und habe jetzt viel mit static Klassen umgesetzt weil mir vor allem der Aufruf ohne extra eine neue Instanz zu erstellen besser gefällt. Funktioniert auch prima.

Nun meine Frage: ist das ok so oder zweckentfremde ich damit irgendeine Funktion?
 
Naja, du kannst nicht mehrere Instanzen erstellen, auch wenn du nach 100K Codezeilen
vielleicht eine Zweite brauchst (und deswegen evt. wieder "einiges" ändern musst).

Wenn du dir sicher bist, so ein Pseudo-Singleton wirklich zu wollen
und nie mehr als diese eine "Instanz" zu brauchen:

Gleichwertig zu static Klassen wären Funktionen in Namespaces, nur erkennt man
bei den Funktionen gleich dass die nicht zum Instanzieren gedacht sind...
 
Zuletzt bearbeitet:
Ok vielen Dank was ich noch nicht richtig verstanden habe ist wozu ich insantzieren soll, da ich doch ständig also weiter unten im Code Klassen variablen verändern kann bzw Methoden nochmal ausführen kann mit anderen übergabewerten
 
Ich bin mir nicht ganz sicher, ob ich dich richtg verstehe, aber wenn du irgendwo
im Code Klassenvariablen änderst ist das ein weiteres Zeichen dafür, dass du
keine Klassen verwenden solltest.
Was du anscheinend machst ist ein prozeduraler Programmierstil wie zB. in C.
Klassen sind vom Sinn her bzw. richtig eingesetzt pur objektorientiert, und ohne
Objektorientierung macht es keinen Sinn bzw. nur Verwirrung, Klassen zu verwenden.

Du willst Funktionen, die man immer und überall aufrufen kann, ohne Objekte anzulegen,
und Variablen, die auch immer ohne Objektanlegung da sind: Also warum etwas verwenden,
das nur dafür gemacht wurde, Objekte davon anzulegen? ... Eben.
Keine Objekte gewollt => Keine Klassen verwenden.
Wenn es nur darum geht, die Funktionen in Gruppen mit einem bestimmten
Namen zusammenzufassen, dafür gibts die oben erwähnten Namespaces.
 
Ok, ja mir ging's hauptsächlich um die Übersicht.

Kennst du ein gutes Tutorial oder Gründe warum man objektorientiert arbeiten sollte?

Danke
 
Wer sagt denn, das man (allgemein) soll?
OO ist nur eins von vielen Paradigmen,
die allein oder gemischt mit anderen eingesetzt werden können.

Was gut/schlecht ist hängt vor allem vom geplanten Programm
und einem selbst ab (wie sehr man mit den Konzepten umgehen kann).
OO ist oft gut, aber das bedeutet nicht dass es immer und überall das Beste ist.

Die Idee von OO ist eben, dass Teile vom Programm möglichst unabhängig von den anderen Teilen sind, dass es die anderen Teile nichts angeht wie Teil X im Inneren funktioniert solange die Funktionen a, b und c von außen aufrufbar sind, und dass einzelne Teile möglichst einfach in neuen Programmen wiederverwendet werden können, wenn man eine derartige Funktionalität dort braucht.
Klassenvariablen mit Code, der nicht Teil der Klasse ist, zu ändern ist das komplette Gegenteil davon

Und bez. der Objektanlegung: Code, der so geschrieben ist, dass er nur mit einem Variablensatz funktioniert, statt auch mehrere verschiedene erhalten zu können, ist nicht gut wiederverwendbar, und außerdem abhängig von globalen Variablen (wobei es im nächsten Programm evt. nicht möglich ist, diese anzulegen, weil es schon welche mit dem selben Namen gibt usw.usw.)
 
Zuletzt bearbeitet:
Vielen Dank, da hat du mir (mal wieder :) super geholfen!

Also mein Stil ist jetzt nicht unbedingt sinnvoll / sauber aber ich habe damit auch keine Probleme mit der Performance oder mache etwas gänzlich falsch und belaste das System dadurch nicht unnötig oder?
 
(oben ist noch was dazugekommen, falls du es nicht gesehen hast)

"Nicht sinnvoll" muss wie gesagt nicht stimmen. Ich kenn deinen Code ja
nicht, aber OO ist nicht immer das Wundermittel für alles (aber oft schon :))

Für die Performance ist das komplett egal, es geht nur darum,
dass der Programmierer es möglichst einfach hat
(schreiben / später ändern / Teile wiederverwenden / usw.)

(bzw. ein paar Mikrosekunden Unterschied kanns schon geben,
weil zB. in PHP eine Variante mehr Buchstaben hat als die andere usw.,
aber sich deswegen einen ungünstigen Programmierstil aufzwingen macht
viel mehr Nachteile, als die Mikrosekunden Wert sind)
 
Gut aber dann war ich wohl auf dem falschen Weg. Ich hab eigentlich nur nach einer Möglichkeit gesucht mehrere Funktionen für einen bestimmten Bereich zu bündeln und da hat mir eben die Möglichkeit mit Namenspaces, Klassen und der eingeschränkten Sichtbarkeit gut gefallen.

Auch die autoload Funktion von Klassen ist sehr praktisch.

Wiederverwenden der Funktionen / Klasse stand eigentlich nicht im Vordergrund.

Aber ich werde mit dann mal Funktionen in Namenspaces ansehen, wenn das in meinem Fall besser geeignet ist.
 
Ich hab eigentlich nur nach einer Möglichkeit gesucht mehrere Funktionen für einen bestimmten Bereich zu bündeln
Diese Beschreibung schreit geradezu nach Namespaces.

Manchmal ist man allerdings gezwungen, Klassen zu nutzen. Ein gutes Beispiel hierfür ist die Math-Klasse in Java. Dafür gibt es keine anderen Möglichkeiten, da Java fast alles in Klassen kapselt.
 
Zurück