Zutritt verwehrt...
Für alle Methoden, Eigenschaften und auch Klassen können Zugriffsbeschränkungen mit Schlüsselwörtern definiert und somit die Beziehungen des Objektes mit der "Aussenwelt" reguliert werden. public zum Beispiel bedeutet, dass mit den Mitgliedern von ausserhalb und innerhalb der Klasse gearbeitet werden kann, so wie wir das bis jetzt im Kurs meistens gemacht haben. private hingegen bedeutet, dass auf das Mitglied nur innerhalb des Objektes zugegriffen werden kann (In AS2 übrigens auch von einer Subklasse aus).
Wenn nichts definiert ist - wie in vielen Übungs-Beispielen bis anhin - geht Flash davon aus, dass die Elemente in AS2 public (default-Einstellung in AS2) und in AS3 internal (default-Einstellung in AS3) sind.
"Zwingt" man ActionScript dazu, aus einer "gesperrten Verwandtschaftsbeziehung" ein Mitglied anzusprechen, wird eine Fehlermeldung ausgegeben.
Sie mögen sich vielleicht an dieser Stelle fragen, wofür die ganze Übung sein soll, aber Zugriffsbeschränkungen machen aus zwei triftigen Gründen Sinn:
- Es lässt sich besser Ordnung bei den Mitgliedern halten...
- Bei Projekten, die von mehreren Entwicklern vorangetrieben werden, kann so die Gefahr verkleinert werden, dass aus Zufall (Namensverwechslungen) Variablen mit falschen Werten "gefüllt" oder überschrieben werden.
Sicherer Programmieren?
In vielen Tutorials zu diesem Thema können Sie ausserdem lesen, dass Ihre Anwendungen "sicherer" würden, wenn Sie Zugriffsbeschränkungen verwenden. Dazu möchte ich folgendes schreiben, um gefährliche Missverständnisse aus dem Weg zu räumen:
"Geheime" Informationen wie Passwörter, Jahresverdienste, Kreditkartennummern, die wirkliche Haarfarbe der Freundin, etc. gehören niemals in ein Ding, welches schlussendlich auf dem Computer des Users läuft, sondern werden grundsätzlich auf dem Server abgespeichert und werden dort erst "abgeholt", wenn sie gebraucht werden!Wenn man also in diesem Zusammenhang von "sicherer" Programmierung spricht, meint man also eher die Sicherheit in Bezug darauf, dass potentielle Fehlerquellen mit Hilfe der Zugriffsbeschränkungen ausgeschaltet werden.
Projektende: Kanalisieren von Beziehungen
Der Umgang mit Zugriffsbeschränkungen setzt bereits einen gewissen Überblick oder "Fernsicht" auf das Resultat bei der Programmierung eines Projekt voraus, was natürlich bei Einsteigern in die OOP nicht immer gegeben ist. Es ist ist jedoch nicht falsch, vorerst alle Methoden und Eigenschaften als "public" zu definieren. Deshalb mein Tipp:
- Definieren Sie zuerst alles mit
public, bis ihr Projekt lauffähig ist. - Gehen Sie Ihren Code am Schluss nochmals durch und fragen Sie sich dann, welche Eigenschaften und Methoden wo gebraucht und aufgerufen werden können/müssen. Schränken Sie darauf die Zugriffsmöglichkeiten möglichst ein.