Maik Görgens: Objektorientierung in der Praxis

Hallo Selfer!

Ich programmiere seit einigen Jahren in Perl. Nun möchte ich auch objekt-orientiert programmieren, da das ja gerade bei größeren Projekten einiges an Vorteilen bringt. Ich habe auch schon das Buch 'Objektorientiert Programmieren mit Perl' gelesen und weis daher, wie Vererbung, Kapselung etc. funktioniert. Mein Problem ist es nun, das gewonnene Wissen auch richtig einzusetzen.
Ich arbeite derzeit an einem recht umfangreichen Programm, wo ja sehr viele Module auftreten. Nun besteht für mich das Problem, das ich ja nicht ständig jedes erzeugte Objekt mit mir rumschleppen kann. So kommt es vor, das ich von Modul A Modul B aufrufe. In Module B bräuchte ich Zugriff auf das Objekt von Modul C, obwohl das von Modul D aus erzeugt wurde. Das Problem ist eben, das ich nicht von überall auf alles Zugreifen kann.

Gibt es im Netz Hilfen, oder gibt es Bücher, in denen solche Praktiken erklärt werden. In denen erklärt wird, wie man Objektorientiertheit einsetzt, nicht, was es ist, und wie man es programmiert. In denen beschrieben wird, wie man sehr umfangreiche Projekte aufbauen sollte etc. unabhängig von einer Programmiersprache, sondern allgemein gehalten.

Vielen Dank und viele Grüße
Maik

  1. use Mosche;

    Ich arbeite derzeit an einem recht umfangreichen Programm, wo ja sehr viele Module auftreten. Nun besteht für mich das Problem, das ich ja nicht ständig jedes erzeugte Objekt mit mir rumschleppen kann. So kommt es vor, das ich von Modul A Modul B aufrufe. In Module B bräuchte ich Zugriff auf das Objekt von Modul C, obwohl das von Modul D aus erzeugt wurde. Das Problem ist eben, das ich nicht von überall auf alles Zugreifen kann.

    Deine Problembeschreibung ist ein sicheres Zeichen dafür, dass du deine Klassen nicht gut genug beschrieben hast. Es gibt nur wenig Möglichkeiten, in denen du von verschiedenen Modulen aufeinander zugreifen musst, und davon machen Vererbungsmöglichkeiten den Großteil aus.

    Beschreibe deine Pakete (Module) möglichst so, dass sie andere Module nicht brauchen (außer, sie sind in einer Vererbungshierarchie). Dann tritt auch dein Problem nicht auf.

    use Tschoe qw(Matti);

    --

      Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
  2. Hi,

    Gibt es im Netz Hilfen, oder gibt es Bücher, in denen solche Praktiken erklärt werden. In denen erklärt wird, wie man Objektorientiertheit einsetzt, nicht, was es ist, und wie man es programmiert. In denen beschrieben wird, wie man sehr umfangreiche Projekte aufbauen sollte etc. unabhängig von einer Programmiersprache, sondern allgemein gehalten.

    Wenn Du sprachunabhängig(?) große Projekte sauber planen möchtest, empfehle ich Dir, das Du Dich in die UML einarbeitest. Zu bedenken hierbei ist aber, das sich m.E. der Aufwand des Erstellens der erforderlichen Diagramme nicht für eine kleine dynamische Webseite lohnt.

    Empfehlen könnte ich Dir da folgende Bücher

    Lehrbuch der Objektmodellierung, ISBN 3827402859, http://www.spektrum-verlag.com/detail.php?isbn=3827402859&fach=6

    Object Oriented Design With Applications, ISBN 0-8053-0091-0

    Object Models, ISBN 0-13-108614-6

    Grüße

    Axel

  3. Hallo Maik,

    zu dieser Thematik gibt es wohl ebensoviele unterschiedliche Betrachtungsweisen wie Entwickler. Aus meiner Perspektive hast Du Dir mit dem Erlernen der objektorientierten Paradigmen erst einen Teil der nötigen Kenntnisse angeeignet, die zum Entwurf komplexer Softwarearchitekturen nötig sind. Wenn Du allein auf dieser Basis Software entwirfst, wirst Du früher oder später feststellen, daß Deine System unflexibel sind, nur unter größtem Aufwand gewartet und erweitert werden können und kaum wiederverwendbare Module aufweisen. Ich würde die Kenntnis der OO-Paradigmen mit der Kenntnis der Grundrechenarten in der Mathematik vergleichen: unabdingbar, um Mathematik zu betreiben. Um aber die Welt zu beschreiben, brauchst Du so etwas wie Arithmetik, Algebra, etc.; darin sind die Grundrechenarten ein obligatorisches Handwerkszeug, keine beschreibenden Modelle (ich hoffe, daß der Vergleich nicht allzu sehr hinkt!).

    Die Algebra für das Softwaredesign - und damit der zweite, größere Teil an nötigen Kenntnissen - sind die Entwurfsmuster. Erst nach einem Einstieg in diese Materie kannst Du guten Gewissens komplexere Systeme angreifen.

    Gibt es im Netz Hilfen, oder gibt es Bücher, in denen solche Praktiken erklärt werden. In denen erklärt wird, wie man Objektorientiertheit einsetzt, nicht, was es ist, und wie man es programmiert. In denen beschrieben wird, wie man sehr umfangreiche Projekte aufbauen sollte etc. unabhängig von einer Programmiersprache, sondern allgemein gehalten.

    Zu Entwurfsmustern wirst Du im Netz zahllose Seiten finden, einen guten und verständlichen Überblick gewinnt man bei http://hillside.net/patterns/. Ein Buch, das man besitzen muß, wenn man sich ernsthaft mit dem Thema auseinandersetzt, ist das Standardwerk der Urväter der Anwendung von Entwurfsmustern im OO-Softwaredesign: http://www.amazon.com/exec/obidos/ISBN%3D0201633612/103-5791887-8264665. Dieses Buch ist allerdings kein Textbuch zum Einstieg ins Thema, sondern ein Nachschlagewerk mit grundlegenden Mustern. Für die Umsetzung von Mustern in Perl findet sich hier eine hilfreiche Quelle: http://www.slowass.net/wiki2/assemble.cgi?PerlDesignPatterns#PerlDesignPatterns.

    Da gilt es ein weites Feld zu bestellen, viel Erfolg!

    HTH Robert