AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fragen zu OOP und Klassen: published, protected, ...
Thema durchsuchen
Ansicht
Themen-Optionen

Fragen zu OOP und Klassen: published, protected, ...

Ein Thema von Gonzo2 · begonnen am 23. Nov 2007 · letzter Beitrag vom 19. Dez 2007
 
Gonzo2

Registriert seit: 4. Nov 2007
42 Beiträge
 
#1

Fragen zu OOP und Klassen: published, protected, ...

  Alt 23. Nov 2007, 09:37
Weiter in Verständnisfragen zu Klassen: private, public, published und protected

Siehe auch vorherige Verständnisfragen: Fragen zu inherited

Kommen wir zu private, public, published und protected. Einige der Attribute sind in Bedeutung bekannt, vor allem private und public, da sie unter anderem aus der Arbeit mit Formularen bekannt sind. Sie steuern ob Elemente nur innerhalb der aktuellen oder auch in anderen Units bekannt sind. Neu beim Erstellen von eigenen Klassen sind published und protected Attribute. Außerdem ist mir nicht ganz klar welche Vorteile es mir bringt etwas in public zu packen wenn es auch ohne ein Attribut funktioniert. Aber gehen wir die Punkte einzeln durch.

private: hier sind Felder und Methoden innerhalb der eigenen Unit sichtbar. private schützt also nicht in der eigenen Unit vor Zugriffen. Aus klassenfremden Prozeduren und Funktionen kann in der eigenen Unit auch auf Inhalte von private zugegriffen werden. Anders sieht es bei einer fremden Unit aus. Hier sind die Inhalte von private unsichtbar. Beim Zugriff gibt es eine Fehlermeldung.

public: hier sind Felder und Methoden innerhalb der eigenen und fremden Unit sichtbar. Bei public kann man innerhalb der eigenen Klasse, fremden Klasse, eigenen Unit und fremden Unit zugegriffen werden.

Bei published können anscheinend keine Felder deklariert werden. Es gibt eine Fehlermeldung. Bei protected kann man Felder deklarieren. Bei published kann man eine property (Eigenschaft) definieren die in eigener und fremden Unit abrufbar ist. Eine property kann man aber auch unter private, public, published und protected definieren. Bei protected ist eine property in einer fremden Unit nicht sichtbar. Verwende ich kein Sichtbarkeitsattribute am Anfang einer Klassendeklaration, ist mein Element in der eigenen und fremden Unit abrufbar.

Etwas Kopfzerbrechen bereitete mir eine kurze Zeit dieser Satz aus der Hilfe:
Zitat:
Ein Element ohne Attribut erhält automatisch die Sichtbarkeit des vorhergehenden Elementes in der Deklaration
Bis ich rausgefunden habe, daß private, public, published und protected keine Bereiche sind, sondern vor jedes Feld, Prozedur, Funktion, Property usw. vorangestellt werden können. Man kann sich das aber sparen und es nur vor das erste Element stellen. Alle folgende Elemente erhalten dann das Attribut des vorhergehenden Elements. Aber da muß man erst drauf kommen. Vor allem weil private, public, published und protected in automatisch erstellten Units so angeordnet sind als ob sie Bereiche bilden würden. Diese Information ist definitiv zuviel des Guten. Sie verwirrt mehr als sie informiert.

Soviel habe ich schon zu den Sichtbarkeitsattributen selbst rausgefunden. Das einzige was mehr oder weniger klar ist, sind private und public. Irgendwo habe ich gelesen, daß Elemente am Anfang einer Klassendeklaration ohne Sichtbarkeitsattribute published bzw. public deklariert werden. Dann frage ich mich aber wann was genommen wird. Wäre es public, könnte ich es verstehen, aber published bzw. public sind zwei Möglichkeit. Wenn ich also ein Element an den Anfang stelle, was ist es dann? published oder public? Wann ist es was? Und wozu etwas dann in public stellen wenn es auch ohne geht. Nur wegen der Übersicht?

Dann sind mir noch published und protected nicht ganz klar, bis auf die Punkte die ich oben erwähnt habe. In Büchern und Tutorials steht, daß publisched Methoden Laufzeitinformationen für den Objektinspektor erhalten. Das verstehe ich jetzt nicht genau. Erstens benutze ich bei Klassen doch keinen Objektinspektor, nur bei Komponenten, und zweitens welche Informationen sind das und wozu dienen sie? Bei protected steht, daß es wie private ist, nur daß der Zugriff auf Methoden hinter protected nur aus der eigenen Klasse oder über Methoden der Nachfolger erfolgen kann, die nicht unbedingt aus der eigenen Unit erfolgen müssen. Wie ist das zu verstehen?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz