Sie sind nicht angemeldet.

  • Anmelden

1

27.03.2007, 19:22

Objekt komm raus...

...du bist umzingelt!

Objektorientiert hier, objektorientiert da...überall wird nur noch "kewle" Oop betrieben. Aber - jetzt mal ehrlich - wie weit und in welchen Feldern ist das sinnvoll?

Habe letzthin ein Vortrag über "ruby" bzw. "ruby on rails" gehört...und irgendwie fand ich 3.countdownto(2) (Zahlen sind Objekte!) komisch...

Bin selbst nicht so der Profi, darum meine Frage an euch: Inwiefern ist oop gerade im webbereich (php...) sinnvoll? Und ist es bei "normaler" software wirklich das non+ultra? (Linus Torvalds verteufelt doch C++...)

Xao

3

27.03.2007, 19:52

Also in bezug auf "richtige" Software im Bereich der Anwendungslogik ist OO wirklich das non-plus-ultra. Eine Sprache wie Java ist da kaum zu schlagen. Ruby on Rails ist wohl das Extrembeispiel (so hab ich das zumindest verstanden, habe mich bisher kaum damit befasst), scheint aber wirklich super zu funktionieren.

Auf der anderen Seite: OO z.B. in PHP ist nur teilweise sinnvoll und auch noch gar nichts so "alt". PHP beherrscht zB in Ansätzen schon lange OO, es wird aber kaum verwendet (mit PHP5 bessert sich das wohl gerade).

Und bei einer extrem wichtigen Sache hat OO schon vor langer Zeit total verloren: Datenbanken. Die sind relational und es dürfen sich Tools wie Hibernate drum kümmern die Relationale Sicht auf die OO-Sicht z.B. von Java umzumodeln.

Außerhalb von Softwareentwicklung kann Objektorientierung Sinn machen - oft ist allerdings die (klassiche) Sicht der Funktionalität sinnvoller (d.h. man sieht den Prozess und die Komponenten da drin und nicht ein Teil und was damit passiert).


Fazit: OO ist sinnvoll aber nicht überall der Weisheit letzter Schluß.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »kOa_DrohhyN_« (27.03.2007, 19:53)


4

27.03.2007, 19:59

Im Grunde kann man in jeder Programmiersprache objektorientierte Ansätze verfolgen, in simplen Sprachen natürlich mit Grenzen. Aber gerade hinsichtlich der Wiederverwendbarkeit von Codeteilen ist OO im Vorteil. Es muss nicht zwingend Java sein, wobei eine OO-Sprache natürlich diverse Vorteile hat.

Warum OO bei relationalen Datenbanken verloren ist, erschließt sich mir nicht ganz. Ich kann auch ohne Hibernate (was ich übrigens als ziemlichen Krampf empfinde) Daten auf die Objektsicht mappen. Gerade wenn man mit riesigen Datenmengen und einem Grossrechner zu tun hat, ist da doiturself angesagt. ;)

5

27.03.2007, 20:04

@Xao:

Kommt halt sehr drauf an was du so programmierst.

Bei kleinen Webprojekten machts natürlich kaum nen Unterschied. Wenns insgesamt nur ein paar hundert Zeilen Code gibt, is es ziemlich egal ob OOP oder nicht - da sind weder Code-Reuse noch Wartbarkeit besonders relevante Themen. Ich denk mal das is einer der Gründe warum sich OO PHP nach wie vor nicht so richtig durchgesetzt hat.

Aber für "größere" Projekte kommst um OOP eigentlich nicht herum - ich kenn zumindest keine "brauchbare" Alternative.

6

27.03.2007, 20:08

@disa: ich meine damit daß sich oo-datenbanken nie durchgesetzt haben - obwohl es welche und sicherlich auch "gute" lösungen gibt. klar kannst du dein mapping auch ohne tools wie hibernate lösen aber du machst da nichts anderes als das was hibernate & co auch für die tun würden. es geht eben darum daß du das eine auf das andere abbilden mußt weil oo-datenbanken so gut wie nicht eingesetzt werden.

7

27.03.2007, 21:24

Imho ist das ganze OO-Zeug in PHP eher undurchdacht. Felder muss man ständig mit $this->foo ansprechen, der Konstruktor heißt in PHP5 jetzt _construct() und den Konstruktor überladen kann man auch nur mit irgendwelchen merkwürdigen Funktionen. Es gibt da ein paar Sachen, wo Objekte in PHP wirklich Sinn machen, ansonsten ist das vllt zur Gruppierung von Funktionen da.
Das ist jetzt nur aus der Perspektive geschildert, wie ich meinen PHP-Code schreibe, vielleicht macht's in einem anderen Zusasmmenhang viel mehr Sinn.

8

28.03.2007, 12:18

RE: Objekt komm raus...

Zitat

Original von XaoMat
Und ist es bei "normaler" software wirklich das non+ultra?


OO ist für Anwendungsentwicklung (imo) der am leichtesten umzusetzende Ansatz. Die fachlichen Objekte und Zusammenhänge kann man in kurzer Zeit (Grössenordnung Minuten bis ein paar Stunden) aufstellen und dann fast 1:1 in das Design und dann fast 1:1 in die Programmierung übernehmen. Der Ansatz ist für Anwendungsentwicklung einfach "natürlicher" als umständlich Kontrollflüsse zu modellieren oder Funktionen aufzustellen. Dadurch, dass es für den Entwickler leichter verständlich ist, sinkt auch die Fehlerquote und die Entwicklungszeit.

Zu funktionaler Programmierung kann ich zugegebenermassen nicht viel sagen, soweit ich sie kenne, taugt sie nur für sehr mathematisch geprägte Entwickler (das Warten eines fremden funktional geschriebenen Codes stelle ich mir furchtbar vor). Aber für Projekte nennenswerter Grösse ist OO wesentlich angenehmer als imperative Programmierung, kann ich aus Erfahrung sagen...

9

28.03.2007, 13:24

Für große Projekte und vor allem bei Guis kann ich OO nur empfehlen.

Wenn du ein paar Algorithmen Programmieren willst, wo es auf Geschwindigkeit ankommt rate ich dir davon ab. Du hast weder Lust noch Zeit dauernd die OO-Architektur so umzustricken, dass es auch noch fix geht. Bei strikter OO bist du nur am abrufen von irgendwelchen Werten durch get/set-Methoden was elendig Zeit kostet. Am Ende schiebst du doch dirty Pointer hin und her. Wenn dsa ganze in einem großen Projekt läuft, kann man ja ein paar Schnittstellen nach "außen" mit einem Objekt machen und im Objekt selbst dann halt so....

Ich kenn es nur aus der Sicht der Bildverarbeitung/Analyse. Im Endeffekt mach ich's mit openCV. Die ist funktional programmiert. Wollte selbst ne Bildverarbeitungs-lib machen aber man hält das strikte OO Design aus Geschwindigkeitstechnischen Gründen nicht durch. Von daher kann man sich das an der Stelle auch gleich schenken.