Autor Beitrag
Black Lightning
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 69



BeitragVerfasst: Fr 09.08.02 16:04 
Hi,
ich bin zwar kein blutiger Anfänger mehr, aber mir fehlt immer Grundlagenwissen, was höchste Zeit ist zu lernen.
also meine erste grundlegende Frage zu OOP ist: was ist OOP? Bisher habe ich immer angenommen das die Eigenschaft einer Sprache, welche sie Objektorientiert macht, die Eigenschaft sei, Klassen bzw Typen zu erstellen.
Da ich nie eine nicht-objekt-orientierte Sprache gelernt habe, kenn ich den Unterschied eben nicht.

2. Wenn man Prozeduren weder als puplic oder privat deklariert, was sind sie dann? Public? Wenn ja, wozu dann die extra Public-Deklaration?

Ich dachte ich hätte noch mehr fragen, aber zumindest fallen sie mir jetzt nicht ein.

gruß
Black Lightning

_________________
--erst programmieren, dann denken, dann debuggen--
Delphinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 22



BeitragVerfasst: Fr 09.08.02 17:43 
Hi,

zu zwei: Das kommt ganz auf die Sprache an, würde ich mal sagen. Bei C++ ist es z.B. so, das alles automatisch als private makiert wird (und dann kommts auch wieder auf den Compiler an. Manche bringen dann Fehler), sofern du nix anderes angibst. Wie das bei anderen Sprachen aussieht weiß ich nicht, da ich bisher nur mit C++ OO gearbeitet habe.

Hoffe ich konnte dir ein wenig helfen :)

Greetz,
Delphinator

_________________
user defined image kill 'em all - god will sort them user defined image
Black Lightning Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 69



BeitragVerfasst: Fr 09.08.02 19:23 
ausgerechnet von C++ wusste ich das auch...aber bei Delphi eben nicht.

_________________
--erst programmieren, dann denken, dann debuggen--
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 09.08.02 19:28 
Hallo,

mit deiner Definition von Objektorientierter Programmierung liegst du gar nicht schlecht. OOP ist die Idee Methoden und Daten zu einer Einheit zusammenzuschnüren. Dazu kommen dann noch ein paar antere Extras wie Vererbung oder Polymorphie, wobei ich nicht sagen kann inwieweit diese zwingend sind um eine Sprache als Objektorientiert zu beweichnen.

Wie Delphinator schon sagte, hängt es von deinem Compiler ab wie nichtgekenzeichnete Bereiche definiert sind. In Delphi ist dies public. Du als Programmierer solltest aber alles in den Publich Bereich schreiben der Bereich ohne angabe sollte DELPHI vorbehalten bleiben, dort wird alles deklariert was Delphi "automatisch" einfügt. Und wenn dort eine Procedure Deklariert ist die weilter unten nicht ausprogrammiert wurde dann löscht Delphi den eintrag beim nächsten Speichern wieder selbstständig bein nächsten Speichern. Unter Publich kannst du aber leere Proceduren deklarieren, den das Gild als Handgemacht, deshalb fingert Delphi da nicht dran rum.

Gruß
Klabautermann
Delphinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 22



BeitragVerfasst: Sa 10.08.02 14:44 
Hi,

@Klabautermann:

Sehr interessant deine Ausführung. Gut zu wissen :D *lob!*


Greetz,
Delphinator

_________________
user defined image kill 'em all - god will sort them user defined image
Black Lightning Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 69



BeitragVerfasst: Sa 10.08.02 15:16 
ja...sehr zufriedenstellend beantwortet :D

Aber dennoch eine Frage...
wenn methoden oder eigenschaften als public deklariert sind kann ja von überall drauf zugeriffen werden, wenn sie privat sind, dann nur von innerhalb des Typs, wenn protected dann nur innerhalb der unit.
Richtig?
Wenn ich also eine andere unit in die uses liste im implementation-teil aufnehme kann diese Unit trotzdem nicht auf protected methoden etc zugreifen, wenn ich sie aber in die uses liste des interface abschnittes mit aufnehme dann schon
auch richtig?

mfg
Black Lightning

_________________
--erst programmieren, dann denken, dann debuggen--
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: So 11.08.02 14:36 
Ok,

gucken wir mal ob ich das noch richtig zusammenkriege:

public: Es kann von überall auf die Objekte zugegriffen werden. Sowohl inerhalb als auch von außerhalb des Objektes.
published: Nur interessant in zusammenhang mit Komponenten. Alle hier aufgeführten Propertys erscheinen im Objektinspektor. Es sind ausnahmslos propertys in diesem bereich zugelassen. Aus dem Quelltext kann man published Propertys so behandeln als währen sie Public.
protected: Alles was hier definiert ist kann nur aus dem Objekt selbst verwendet werden. Ein Zugriff von außen ist nicht möglich. Nachfahren des Objektes können ebenfalls auf protectet's zugreifen.
private: Wie protected mit dem unterschied, das auch nachfahren des Objektes nicht drauf zugreifen können.

Fals nötig wird um verbesserungen und ergänzungen gebeten ;).

Gruß
Klabautermann
Delphinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 22



BeitragVerfasst: So 11.08.02 16:47 
Hi,

@Klabautermann:

gibts hier bei Delphi auch sowas wie "friend" bei der Kapselung ???

Würd mich mal interessieren.


Greetz,
Delphinator

_________________
user defined image kill 'em all - god will sort them user defined image
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: So 11.08.02 17:26 
Hi,

auf die schnelle würde ich sagen nein. Zumindest ist mir da keine möglichkeit bekannt. Ich lasse mich aber gerne belehren.

Gruß
Klabautermann
Delphinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 22



BeitragVerfasst: So 11.08.02 17:28 
Na gudd *g* ... Werde in meinem schlauen Buch mal nachforschen. Vielleicht steht ja was drin. Bis dann...


Greetz,
Delphinator

_________________
user defined image kill 'em all - god will sort them user defined image
Black Lightning Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 69



BeitragVerfasst: So 11.08.02 18:01 
ich hab zwar schon in verschiedenen Büchern/Tutorials die Definition der 4 Stufen des Information Hiding gelesen....aber kein Auto hat es so klip und klar auf den Punkt gebracht wie du nun.
(Soll nicht als Schleim verstanden werden sondern als Tatsache :D )

@Delphinator
was ich bisher über das Friendkonzept gehört habe lässt sich das nur so realisieren, dass man z.B. 2 Klassen in eine Unit packt, andere die nicht darauf zugreifen dürfen in eine andere und diese dann nicht referenziert...naja, nicht so elegant wie in C++.

gruß
Black Lightning

_________________
--erst programmieren, dann denken, dann debuggen--
Delphinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 22



BeitragVerfasst: So 11.08.02 18:32 
Hi,

nüja, OOP mit Delphi schenk ich mir vorerst noch. Muss mich erst mal in die Grundlagen einarbeiten. Trotzdem werd ich mirs mal ansehen.


Greetz,
Delphinator

_________________
user defined image kill 'em all - god will sort them user defined image
Black Lightning Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 69



BeitragVerfasst: Mo 12.08.02 01:14 
gerade eben hab ich gelesen (und Delphi Hilfe hat es bestätigt) dass protected, den Zugriff auf die gesamte Unit auch verschiedener Klassen zulässt.
Somit lässt sich ja ein guter Friend ersatz finden. Indem man die zwischen 2 Klassen befreundeten Methoden als protected sind und in der gleichen Unit stehn.

_________________
--erst programmieren, dann denken, dann debuggen--