Hallo Frank,
http://developer.apple.com/documentation/ReleaseNotes/Cocoa/Objective-C++.html
Interessant zu wissen.
Ohne mich näher damit beschäftigt zu haben, kann ich mir
vorstellen, dass das nur in Grenzen möglich ist. C++ und
Objective-C unterscheiden sich ja doch beträchtlich.
Steht ja in dem Dokument, was alles moeglich ist: man kann C++-
Objekte in Objective-C verwenden und umgekehrt. Dadurch ist es
moeglich, zb. C++-Klassenbibliotheken in seinem Objective-C-Code
zu verwenden.
Überflogen habe ich es jetzt inzwischen. :-)
Sicherlich kann man Objekte gegenseitig verwenden. Aber ich denke dabei gibt es ganz klare Grenzen. Das geht auch aus dem Artikel hervor. So das es eben nicht so ohne Weiteres geht jedes x-beliebige Objekt zu verwenden. Wie gesagt. Es gibt klare Unterschiede. So kennt C++ Mehrfachvererbung. Die gibt es so in Objective-C nicht. Dafür kennt die wiederum Protokolle die man in C++ vergeblich sucht. Auch die dynamische Typisierung und das late-binding sind völlig andere Konzepte wie in C++.
Es ist allerdings nicht moeglich, C++- und Objective-C-Klassen in
der gleichen Klassenhierarchie zu verwenden.
Genau darauf wollte ich unter anderem hinaus. :-)
Leider konnte ich mich bislang noch nicht so richtig mit der
Syntax von Objective-C anfreunden.
Es ist halt eine andere Sprache. Man hat den gleichen Lernaufwand
wie bei jeder Sprache die man neu hinzu lernt.Ich denke, dass ich mich recht schnell in neue Sprachen einarbeiten
kann. Die Syntax von Objective-C ist auch kein grosses Problem. Sie
gefaellt mir einfach in Teilen nicht besonders.
Liegt auch an der Art der Erweiterung von C. Bei C++ hat man recht viele Schlüsselworte zu diesem Zweck eingeführt. Bei Objective-C sind es weniger und sie wirken durch ihre Art und Weise ... na wie soll ich sagen .... die objectorientierung wirkt wie in C eingebettet (wie beispielsweise PHP in HTML).
Wenns nach dem gefallen geht, müsste man eigentlich eine Sprache wie Pascal oder auch Modula nehmen. Diese sind sehr gut lesbar, sehr klar und relativ nah an der menschlichen Ausdrucksweise ohne dabei aber übermäßig viel Schreibarbeit zu erzeugen.
Problem ist vielleicht auch noch, wenn man C++ vorbelastet ist.
Ich könnte mir vorstellen das man dann dazu neigt Objective-C so
zu programmieren wie C++. Und das geht dann natürlich total
schief. Man muss schon relativ unvoreingenommen da herangehen.Ich habe Objective-C bisher nur mal ueberflogen und noch nicht viel
damit gemacht. Aber um mal ein wahlloses Beispiel herauszugreifen,
das mir gerade einfaellt: ich mag es nicht, dass ich Konstruktoren
in Objective-C explizit aufrufen muss und habe darin bisher auch
nicht viel Sinn gesehen.
Gibt einem andererseits auch Flexibilität, so dass man den Konstruktor nur aufrufen muss, wenn man es braucht (viele Objekte haben ja einfach nur ein leeren Konstruktor). Und indem man es bewußt tut ist auch klarer was passiert. In C++ ist mit neuanlage eines Objektes zwei Dinge gemacht. Erstens Speicher reserviert und zweitens der Konstruktor aufgerufen. Zwei unterschiedliche Dinge in einem Befehl.
Wichtiger ist aber die Philosophie von Objective-C zu der ein impliziter Kontruktoraufruf nicht unbedingt passt.
Ich koennte mir vorstellen, dass das ein
wenig mit dem Alter der Sprache zusammenhaengt.
Naja. Objective-C und C++ sind etwa zur selben Zeit entstanden.
Gruß
MichaelB