Ralf hat geschrieben:Quatsch, ich reiße Leuten höchstens den Kopf ab, wenn sie für mich programmieren und dabei Murks machen.
Friss mal schön Kreide, glaubt Dir hier eh keiner.



Ralf hat geschrieben:Und warum ein privates Attribut einfach eine globale Variable sein soll, erschließt sich mir nicht. Ich habe den Eindruck, du weißt gar nicht, warum man Attribute als protected oder private deklariert. Das hat was mit Objektkonsistenz zu tun.
Doch, ich weiß das schon. Nur in dem Moment, in dem es nicht mehr public ist, erfüllt es noch nicht mal mehr den Zweck, eine von außen sichtbare Objekteingeschaft zu sein. Von innerhalb der Klasse ist es immer sichtbar, aber innerhalb der Klasse ist die Eigenschaft, ein "Attribut" zu sein, nicht mehr als ein netter Name. Es ist ein (klassen-)globales Feld, das einen Wert enthält. Genau wie jede andere globale Variable auch. Insbesondere ist es gut mit den globalen Variablen von Funktionsgruppen vergleichbar. Es ist wahr: Funktionsgruppen können nur statische Klassen modellieren. Das aber tun sie recht gut.
Ralf hat geschrieben:Ich arbeite fast nie mit öffentlichen Attributen, damit das Objekt kontrollieren kann, ob es sich überhaupt um einen gültigen Wert handelt.
In meinen Augen ist das gleich der nächste Pfusch bei der Umsetzung der OO-Idee. Unabhängig von ihrer Sichtbarkeit müssten alle Objektattribute für jegliches Coding außerhalb der Klasse auf Read-Only stehen. Dann wäre es auch nicht dramatisch, wenn externes Coding das Attribut "sehen" kann. Es gibt auch viele Funktionsbausteine und Methoden, um irgendwelche Werte zu beschaffen, doch häufig ist es performanter, diese Werte einfach selber von der Datenbank zu selektieren. Jeder macht das, und keiner hat ein Problem. Nur bei Objekten muss Verstecken gespielt werden. Aber von mir aus soll OO diese Spielwiese haben; PRIVATE und PROTECTED richten ja keinen Schaden an. Dass öffentliche Objektattribute aber von externem Code manipuliert werden können, macht keinen Sinn. Du räumst ja gerade selber ein, dass dieser Umstand öffentliche Attribute nahezu unbrauchbar macht und man als Workaround über umständliche und performancefressende Getter-Routinen gehen muss.
Daniel hat geschrieben:Bis dahin: Ja.
Nur ist das Feldsymbol von da an für den Rest des Programms
(in der Reihenfolge des Codings) gültig. Das ist Murks.
Verwendet man es wieder (weil man die Tabelle öfter braucht)
ist es eimal inline und x-mal extern definiert. So liebe ich das.
Und wehe wenn jetzt jemand eine Routine oder ein Include
umhängt. Wer das erfunden hat gehört gesteinigt!
Richtig gemacht wäre es wenn das Feldsymbol nur während des
Loops gültig ist.
Das wäre optimal, bin ich Deiner Meinung. Aber ich habe ja betont, dass man es in der Praxis nur so verwenden sollte, als ob es so wäre.