tjp
Altgelds Küchenapfel
- Registriert
- 07.07.04
- Beiträge
- 4.060
Ich denke Du solltest Dich mal mit dem Themenkomplex schwache Typisierung in Relation zur starken Typisierung auseinandersetzen. Dann wird auch klar, warum Up- und Downcast notwendig sind bzw. wo deren Vorteile liegen.Nein, mir sagen upcast und downcast tatsächlich nichts.
Ich kenne das Konzept unter dem Begriff "Design by Contract". Objective-C ist eindeutig keine Programmiersprache mit ausgewiesenen DbC Unterstützung. Eiffel, D fallen mir da bei diesem Thema zuerst ein.Vielleicht sehe ich etwas falsch, aber irgendwie glaube ich weiterhin, dass ich in Objective-C wunderbar z.B. das Programming By Contract Prinzip anwenden könnte, wenn ich das wollte.
Allerdings werden spezielle Maßnahmen für DbC erst dann notwendig, wenn dynamische/schwache Typisierung involviert sind. In diesem Fall ist muß man die Garantien zur Laufzeit sicherstellen, die man mit starker Typisierung schon zum Übersetzungszeitpunkt sicherstellen konnte.
Dann kommen noch so Aspekte wie Effizienz ins Spiel. Das Methoden Dispatching (welche Methode muß konkret aufgerufen werden) unterscheidet sich ebenfalls maßgeblich. Objective-C verwendet dynamisches Dispatching, was zwar sehr flexibel ist, aber im Vergleich zum statischem Dispatching (Ada, C++) auch extrem langsam ist.
Das limitiert die Einsatzmöglichkeiten von Klassen in Objective-C drastisch. Man kann sie letztlich nicht dazu benutzen, daß man C structs + Funktionen zu einer Einheit zusammenfügt. Man muß hier weiterhin reines C programmieren.

Umgekehrt muß gibt es einige Probleme in C++ mit Patterns wie etwa Reflection, da muß man dann einen nicht unerheblichen Aufwand betreiben.
Ich habe nichts gegen dynamische Sprachelemente nur würde ich liebend gern auf sie verzichten, wenn sie beim Design überhaupt nicht benötigt werden. Das setzt dann aber eine Multiparadigmensprache voraus, die dann natürlich entsprechend kompliziert und umfangreich sein muß.