![]() |
Re: Delphi objektorientiert?
Moin zusammen,
geniessen wir den Sonntagabend und nehmen wie meinetwegen den Duden als Grundlage (und nicht die Kommission..?). Das Orientierte scheint auch geklärt. Das objektorientiert Programmierung sinnvoll ist hat Hansa schon klargestellt. Das Fahrzeugbeispiel von Choose soll deutlich machen, dass Sachverhalte ähnlich aussehen, aber lediglich einen komplemntären Enwicklungsweg haben können, da letzlich gleich Aufgaben gelöst werden sollen. Und dass Objekte manchmal Gemeinsamkeiten haben und nicht voneinander abgeleitet sind, auch dies ist dem Beispiel zu entnehmen. Ja dieses Faktum ist angekommen! Jetzt gehen wir mal an den Knackpunkt: ----------------------------------------------------------------------------------------------------------------------
Das Print Beispiel: 1. Print hat die Eigenschaft eine Variable empfangen zu können. 2. Print hat nur eine Monofunktionalität ohne weitere Einstellungsmöglichkeiten und Ergänzungsroutinen nach aussen. FAZIT Es kann wie jede Prozedur als Simpleobjekt aufgefasst werden. Das ist eine Frage der Philosophie zu der Mathematik und damit die Informatik mit ihren geschlossenen Modellen annerkannt gehören. Das widerlegt weder Choose, aber nun mal auch nicht meine Sicht das Ding als polnisch notierte Prozedur, wie in "Forth" üblich, aufzufassen! Mit dem Beispiel kann es aufgrund der Monofunktionalität und zudem ohne sichtliche Erweiterungsmöglichkeit keine letzliche Klärung geben, ob es ein Objekt ist. ---------------------------------------------------------------------------------------------------------------------- Hallo Choose dass ist übrigens sehr interessant argumentiert. In Deinem Modell ist Print das Objekt das seine Funktionalität durch die Übergabe einem weiterem Objekt weitergibt, dass diese Methode oder Funktionalität bisher nicht hatte, aber widerlegt bin ich mit meinem trivial kompartimentorientierten Ansatz nun noch nicht. Dass Ding bleibt knifflig. Viele freundliche Grüße // Martin |
Re: Delphi objektorientiert?
Delphi ist Objektorientiert. Aber Pascal war es noch nie, ich hab das heute noch, außer Codes eintippen ist da nichts möglich.
|
Re: Delphi objektorientiert?
Zitat:
Zitat:
Niklaus Wirth hat jedoch nie an Objektorientierung gedacht. Und soweit ich weiß, gab es damals in den 60er Jahren auch noch keine Sprachen mit OOP-Sprachfeatures... ;) |
Re: Delphi objektorientiert?
Zitat:
Nein unter Pascal verstehe ich Turbo Pascal. Das stimmt, muss ich hier erst die neuste Version hochladen oder was soll der Quatsch. Delphi ist die Objektorientierte Fortsetung von Turbo Pascal. Aber man kann da noch Pascal programmieren. Delphi und Pascal ist eh fast das Selbe. |
Re: Delphi objektorientiert?
Zitat:
|
Re: Delphi objektorientiert?
Servus,
eine sehr interessante Diskussion, die hier aufgekommen ist. Zitat:
Monofunktionalität schließt ein, dass jederzeit klar ist, was passiert, also bereits zur Übersetzungszeit. Objekte hingegen sind polymorph, als kann erst zur Laufzeit entschieden werden, welcher Code ausgeführt wird und welche Wirkung entsprechend ein Methodenaufruf hat. Dies kann nicht mit Hilfe von Prozeduren erreicht werden. Gruß Sebastian |
Re: Delphi objektorientiert?
Zitat:
Mit TP 5.5 wurden Objekte in Delphi eingeführt. Und TP wurde bis 7.0 weiterentwickelt. Übrigens solltest du bedenken, dass du grundsätzlich vorsichtig sein solltest mit Äußerungen wie "Delphi und Pascal ist eh fast das Selbe". Denn Delphi hat mit Pascal kaum noch was gemeinsam. Lediglich der Aufbau der Sprache und die grundlegenden Strukturen sind erhalten geblieben. Aber alles was mit Units, Klassen, Fenstern etc. zu tun hat, war in Pascal undenkbar ;) Das war eine relativ primitive Sprache. Erst durch Borland wurde die Sprache attraktiv. Und Turbo Pascal <> Pascal! Da liegen auch noch Welten zwischen ;) Ab TP 5.5 wird die Sprache jedoch nicht mehr Pascal genannt, sondern i.d.R. Object Pascal, durch die Objektorientiertung. Object Pascal kann man aber mit der Delphi-Language vergleichen. Aber Pascal ist eigentlich nicht vergleichbar mit Delphi... ;) Und noch einmal zum Mitschreiben: Delphi ist nicht objektorientiert. Sie hat höchstens objekteorientierte Spracheigenschaften. Objektorientiert ist sie aber nur, wenn man mit ihr nur OOP programmieren kann, und die prozeduale Programmierung nicht möglich ist. Daher solltest du dir nochmal den Thread durchlesen ;) |
Re: Delphi objektorientiert?
Und ich dachte immer, objektorientiert heisst nur, das die Implementierung eines Problems nicht an einer klassischen API und dem Unitkonzept festgemacht wird, sondern an Objekten (woher kommt das 'orientiert' denn sonst?).
Ob denn Objekte nun Nachrichten austauschen, oder einfach nur Objekte mit Methoden und Eigenschaften sind, dürfte auch unerheblich sein. Und das ich mit einer OOP-Sprache nun keine Prozeduren programmieren kann, ist doch wohl auch Quatsch. Natürlich gibt es Sprachen, die das nicht erlauben, das heisst aber nicht, das die dann die OO-Eigenschaft für sich reserviert haben. Man sollte mal unterscheiden, zwischen Sprachen, die das OOP-Konzept auf die Spitze treiben, und denen, die noch andere Sprachkonstrukte anbieten. Wieso sollen denn nicht beide OO sein? Und das Delphi deshalb nicht OO ist, weil es hier im Thread steht, ist ja wohl der größte Witz. Nicht, das ich was gegen die sehr fundierten Ausführungen sagen will, aber die Zugehörigkeit einer Programmiersprache zu einer Klasse macht sich nicht an den Aussagen Einzelner fest. Letztendlich ist eh alles Prozedural, aber die Herangehens- oder Sichtweise (eben 'Objektorientiert', 'Prozedural' oder 'Serviceorientiert') ist unterschiedlich. Wenn ich einem Objekt eine Nachricht schicken muss, damit sie sich um eins erhöht, dann ist das nur eine andere Sichtweise, als die Anweisung
Delphi-Quellcode:
. Einmal steht das Objekt im Mittelpunkt, zum Anderen der Befehl (die Prozedur).
inc(i)
Delphi als nicht-OO zu bezeichnen ist imho abwegig. Delphi ist OO, weil es mir die Möglichkeit bietet, OOP zu betreiben. Ich kann es aber auch lassen, oder mischen. Und das es andere Sprachen gibt, die die Vererbungsgeschichte noch besser implementieren, steht ja ausser Frage, aber ist ein alter Käfer den kein Auto, nur weil es Lexus, BMWs und Ferraris gibt? Ist ein Kadett-Cabrio kein Auto, weil ich es auch als Blumenbeet verwenden kann? Zur Abwechslung mal ein Zitat vom Wiki: Zitat:
Richtig lustig wird der Abschnitt, der einige objektorientierte Sprachen auflistet. Nicht das Wiki der Weisheit letzter Schluss ist, aber der Artikel dürfte einigen Schlaumeiern hier die Luft aus den Segeln nehmen. Schönen Abend noch. |
Re: Delphi objektorientiert?
Zitat:
Zitat:
Also nochmals Geschichte : in TP 4.0 wurden bereits Units eingeführt (uses usw.). In TP 5.0 waren auch noch relativ wichtige Neuerungen drin (glaube Speichermanagement geändert, zumindest Vorarbeiten für OOP), aber Borland hatte sich nicht getraut auch noch OOP selbst mit reinzupacken. Deshalb die einzige Zwischenversion TP 5.5 als erste weit verbreitete OOP- Sprache. Man denke auch an das zweite O ! Dann kam so was wie : "wer sendet die Nachricht ?" mit BP 6.0 :lol: Turbo Vision als völlig unbrauchbare Benutzeroberfläche. Win 3.11 war allerdings auch nicht besser. Die letzte DOS-Version war dann das stabile BP7 und dann erst kam Delphi. Ja ja, TP for Win vergißt man besser gleich. Wers nicht glaubt, der soll im Borland Museum nachgucken und vor allem dort das Handbuch von TP 5.5 lesen. Eine der besten Einführungen in OOP. |
Re: Delphi objektorientiert?
Hallo,
Zitat:
Objekte haben eine Identität und können entsprechend Nachrichten empfangen und senden. Beispielhaft soll eine beliebige Liste als string ausgegeben werden. Objektorientiert kann man sich vorstellen, dass alle Objekte in der Liste die Nachricht 'AsString' verarbeiten können (die Liste selbst auch).
Delphi-Quellcode:
Prozedural sähe das ganze so ähnlich aus:
5 AsString == '5';
'Test' AsString == 'Test'; ACar AsString == 'Opel Kadett'; with AList do begin Add(5); Add('Test'); Add(ACar); end; AList AsString == '(''5''; ''Test''; ''Opel Kadett'')'
Delphi-Quellcode:
Der Unterschied ist der Zeitpunkt, zu dem bestimmt werden kann, welcher Code ausgeführt wird, um den String zu erzeugen. Prozedural geschieht dies mit Hilfe früher Bindung, also zur Compilezeit. Das heisst, es muss eine Prozedur für jeden Variablentyp existieren, der in einen String umgewandelt werden kann. In
AsString(5) == '5';
AsString('Test') == 'Test'; AsString(ACar) == 'Opel Kadett'; AddNumberToList(AList,5); AddStringToList(AList,'Test'); AddCarToList(AList,ACar); AsString(AList) == '(''5''; ''Test''; ''Opel Kadett'')'
Delphi-Quellcode:
würde über die Liste iteriert, geprüft werden, was für ein Element drin ist und die richtige Prozedur aufgerufen. Wenn plötzlich auch Flugzeuge als String ausgegeben werden sollen, dann muss
AsString(AList)
Delphi-Quellcode:
implementiert werden, und die Prozedur zur Ausgabe der Liste angepasst werden.
AsString(APlane)
Objektorientiert würde der Empfänger der Nachricht (APlane) entscheiden was zu tun ist. Alle anderen können sich darauf verlassen, dass das Objekt sich selbst am besten damit auskennt, was es selbst zu tun hat und müssen lediglich die Nachricht AsString kommunizieren. Erst zur Laufzeit wird durch den Empfänger der Nachricht bestimmt, was konkret geschieht. Freilich kann dies auch mit Delphi so implemetiert werden, allerdings nicht prozedural, sondern objektorientiert. Hat ja niemand gesagt, dass das nicht unterstützt wird. Gruß Sebastian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz