Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Grundlagenfragen zu OOP


robert cook - Do 24.06.10 17:26
Titel: Grundlagenfragen zu OOP
Hi,
ich الاسه [http://www.forexsa.org/]
bin zwar kein blutiger Anfänger mehr, aber mir fehlt immer Grundlagenwissen, was höchste Zeit ist zu lernen. www.forexsa.org/ [http://www.forexsa.org/]

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. צימרים במושב [http://www.zimmerfinder.co.il/t/186-/]

Da ich nie eine nicht-objekt-orientierte Sprache gelernt habe, kenn ich den Unterschied eben nicht.
preisvergleich-kredite [http://preisvergleich-kredite.de/]
2. Wenn man Prozeduren weder als puplic oder privat deklariert, was sind sie dann? Public? Wenn ja, wozu dann die extra Public-Deklaration?
baiaopharma [http://www.baiaopharma.com/]
Ich dachte ich hätte noch mehr fragen, aber zumindest fallen sie mir jetzt nicht ein.


Dude566 - Do 24.06.10 17:28

http://www.delphi-treff.de/object-pascal/objektorientierung/


Hidden - Do 24.06.10 17:40

Hi :)

Ich halte mich hauptsächlich in Delphi auf. Wenn ich das richtig sehe, erlauben die meißten Sprachen sowohl objektorientierte wie nicht objektorientierte Programmierung.

Objektorientiert wäre also in erster Linie die Programmierung, und erst in zweiter Linie die Sprache. Pascal unterstützt afaik noch keine OOP, die entsprechenden Schlüsselwörter sind meines Wissens erst in Delphi(=Object Pascal) hinzugekommen.
Wichtig bei OOP ist, dass Klassen von einander auch abgeleitet werden können, ich weiß nicht ob das jetzt alle Sprachen können, die grundsätzlich Klassen unterstützen.

strict private: Nur eigene Klasse
private: Nur eigene Unit
strict protected: Nur eigene Klasse und davon abgeleitete Klassen
protected: Eigene Klasse und davon abgeleitete
public: Immer sichtbar, wenn die Unit eingebunden ist
published: Zusätzlich zu public aufgelistet, das ist nötig, um die Methoden in der vcl z.B. einem ButtonClick-Ereignis zuzuordnen.

Soweit nicht anders angegeben, sind alle Methoden einer Klasse vom Typ published.

E: Strict private und protected sind relativ neu hinzugekommen, afaicr in Delphi 2006.

lg,


jaenicke - Do 24.06.10 18:21

user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Pascal unterstützt afaik noch keine OOP, die entsprechenden Schlüsselwörter sind meines Wissens erst in Delphi(=Object Pascal) hinzugekommen.
Nicht ganz, seit Turbo Pascal 6.0 5.5 gab es object als Schlüsselwort und es gab durchaus objektorientierte Ansätze. Diese waren noch nicht mit Object Pascal vergleichbar, aber OOP war mit TP 5, 6 und 7 durchaus möglich.

Vererbung ist ein wichtiges Konzept der objektorientierten Programmierung. Deshalb können das auch alle Sprachen, die wirklich OOP unterstützen. Mehrfachvererbung dagegen ist selten, das kann Delphi z.B. ja nicht.

// EDIT: Ist ja gut, wenn die exakte Version seit der das ging soo wichtig ist, korrigiere ich das natürlich. :mrgreen:


F34r0fTh3D4rk - Do 24.06.10 20:09

In einem Programm-Code, der in einer nicht Objektorientierten Sprache geschrieben ist, gibt es nur primitive Datentypen (byte, integer, boolean, char, mit Glück String) und vielleicht structs, bzw. records.

Wenn du mal ohne VCL programmiert hast, ist dir sicher aufgefallen, dass ein Delphi/Pascal Programm im Prinzip wie folgt aufgebaut ist:


Delphi-Quelltext
1:
2:
3:
begin
  println('Hallo Welt');
end.

Alles in einem Delphi-Programm passiert zwischen begin und end. Hier werden dann auch in der Regel die Instanzen der Forms (TForm) erzeugt, die die grafische Bedienoberfläche darstellen.
Man kann aber in Delphi auch "Pascal-kompatibel", sprich ohne Klassen programmieren. Das geht in anderen Sprachen, die von Grund auf auf eine OOP Architektur setzen (wie zum Beispiel Java) nicht.

Nicht Objektorientierte Sprachen (zum Beispiel C) werden heutzutage hauptsächlich in eingebetteten Systemen (unter anderem in der Mikrocontroller-Programmierung) verwendet.


Narses - Fr 25.06.10 12:45

Moin!

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Pascal unterstützt afaik noch keine OOP, die entsprechenden Schlüsselwörter sind meines Wissens erst in Delphi(=Object Pascal) hinzugekommen.
Nicht ganz, seit Turbo Pascal 6.0 gab es object als Schlüsselwort und es gab durchaus objektorientierte Ansätze.
IIRC gab es "object" schon in TP5, hatte damals ein Projekt damit umgesetzt. :) Aber das waren wirklich nur "Ansätze", mit dem TObject von heute hatte das nix zu tun... :?

cu
Narses


Delete - Fr 25.06.10 12:53

Eventuell hier noch etwas Lesestoff: http://www.michael-puff.de/Programmierung/Delphi/Tutorials/Klassen/


hansa - Fr 25.06.10 15:07

So sieht das aus :


Delphi-Quelltext
1:
NrEing = OBJECT (Root)                    


Das ging bereits ab TP 5.5. Und dem Fragesteller würde ich mal empfehlen, sich da in die Theorie mehr einzulesen. Ne, das da hat so keinen Zweck. Da muss eine Gesprächsgrundlage her.


Delphi-Laie - Fr 25.06.10 23:14

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Pascal unterstützt afaik noch keine OOP, die entsprechenden Schlüsselwörter sind meines Wissens erst in Delphi(=Object Pascal) hinzugekommen.
Nicht ganz, seit Turbo Pascal 6.0 gab es object als Schlüsselwort und es gab durchaus objektorientierte Ansätze. Diese waren noch nicht mit Object Pascal vergleichbar, aber OOP war mit TP 6 und TP 7 durchaus möglich.


Die Objektorientierung hielt mit Turbo-Pascal 5.5 Einzug.