Php

Objektorientiertes Design (Php Tutorial)

Tutorial erstellt von deabua, letzte Änderung am 08.02.2007

Objektorientierung, Design, Softwarearchitektur??? Brauche ich nicht, werden sich jetzt einige vielleicht denken. Und wieso gibt es hier keinen Quellcode? Und was soll das mit php zu tun haben, ist doch eh nur so ein spinnertes Feature in php5...

Stimmt. Im Prinzip braucht es das Ganze auch nicht um eine funktionierende php-Seite zu erstellen, warum es aber dennoch wichtig für ein Projekt ist möchte ich euch im folgenden etwas näher bringen.

Wieso PHP?

Nun ja, ich persönlich mag lieber Java und C#, aber ich denke das die meisten dynamischen Seiten (im privaten und semi privaten Bereich) alleine schon durch die Lernkurve und durch die Zugangskosten auf php und mysql aufgebaut sind. Daher PHP. Im Endeffekt ist es aber absolut egal, da in OOD / OOP die Programmiersprache eigentlich nur noch in der Syntax und der Typisierung unterschiedlich ist. D.h. die Planung als auch die grobe Realisierung ist fast exakt gleich, solange die Zielsprache OOP (Objekt orientierte Programmierung) beherrscht...

Gerade bei grösseren Projekten jedoch (unabhängig von der Sprache) wird Software sehr schnell unübersichtlich und sehr schwer skalierbar.

Daher ist eine saubere Planung und Architektur ausschlaggebend für eine funktionierende und saubere Software.

Nach diesen Tutorien wollen wir ein funktionierendes Gästebuch in PHP entwickelt haben.

Wichtig: Versteht das Wort "Funktionen" nicht als Funktion im Sinn von php sondern als Funktionalität der Software.

Wichtig2: Das Tutorial ist sehr arg zusammengestaucht, d.h. ich habe versucht einen rudimentären Prozess, welcher jedoch denke ich für den Einstieg absolut ausreichend ist, zusammen zu basteln.

Benötigte Software

php5
mysql
editor
objectif (Personal edition)

In diesem Tutorial wollen wir jetzt aber nicht auf einzelne Werkzeuge oder gar auf komplette Entwicklungsprozesse eingehen. (Das kann man auch in dicken Büchern nachlesen und noch viel wichtiger das sollte man in der Praxis erlernen).

D.h.In diesem Tutorial (Planung) wollen wir einen Softwareentwicklungsprozess sehr vereinfacht und umsetzbar ohne den Spaß am programmieren zu verlieren umsetzen.

Am Anfang eines jeden Softwareprojektes sollten wir uns im klaren sein, was die Software können soll, welcher Benutzer später was benutzen darf oder soll, welches Ziel erreicht werden soll und wie das Ganze zum Schluss aussehen soll.

Stichworte zum Vertiefen in dieser Phase

  • Glossar

  • Lastenheft

  • Pflichtenheft

  • Aufwandsabschätzung

  • UML2



Wir steigen gleich im Pflichtenheft ein und malen uns ein kleines UML-diagramm (use Case). Damit wollen wir die Geschäftsprozesse (use cases) modellieren. Einfacher gesagt wir definieren die Grundfunktionen der Software.

Die Beschreibung ist für objectif. Öffnet also mal objectif. (Den link zur personal edition findet ihr weiter oben)

Einmal auf Anforderungen klicken (wir wollen ja erstmal die Anforderungen beschreiben).

Zuerst legen wir ein paar packages an. Ein package ist eigentlich eine Art Struktur oder Container um eine solche Hierarchie aufzubauen. (links im Bild die Forlderstruktur)

Um Namensprobleme (nicht bei php aber später bei anderen Programmiersprachen wie z.B. C# oder Java) zu vermeiden und die Übersicht zu behalten, sollten wir uns schon hier einige Nomenklaturen (Namensgesetze) angewöhnen.

  • Der Packageroot ist das Länderkürzel der eigenen Firma o.ä.

  • Danach kommt der Firmenname (damit kommen wir nie mehr mit Standardnamensräumen in Konflikt)

  • packages werden immer klein geschrieben

  • Eine sinnvolle subStruktur ist erforderlich



Bei unserer Miniapplikation macht das noch nicht wirklich Sinn, aber hier sehen wir schon eine Aufteilung in die Untereinheit Gästebuch (gb).

Nun kommt das eigentliche Diagramm dran. Wir benötigen ein rechte Maustaste auf package Arrow Anlegen Arrow Anwendungsfalldiagramm

Ein Akteur ist in unserem Fall ein Benutzer der Software, kann aber ebenso gut ein anderes System sein. Wir brauchen einen admin und einen Benutzer.

Was soll unsere Software können?


  • einträge lesen

  • einträge schreiben

  • einträge verwalten

  • login



Versucht das ganze nicht als Webseiten zu sehen, sondern eher als eine Funktionsbeschreibung.

Jetzt überlegen wir uns wer was können soll.

Also fügen wir mal Assoziationen ein. (schwarzer Pfeil)

Da der admin ja nix anderes ist als ein User mit erweiterten Rechten (er soll also alles können was der User auch kann und ein bisschen mehr) fügen wir jetzt eine Generalisierung hinzu. (blauer Pfeil)

Versucht das Diagramm so einfach wie möglich zu halten (also nicht in tausenderlei Unterfunktionen zu verzetteln) sondern beim wesentlichen zu bleiben.

Wenn sich eine Funktion nicht in maximal 3 Worten beschreiben lässt z.B. weil sie mehr kann....könnt ihr natürlich auch neue Funktionen hinzufügen und die Basisfunktionen erweitern. Dafür gibt es die Stereotypen (Pfeile) extend (erweitert) und include (beinhaltet)...



Um unseren Code noch genauer zu beschreiben und logisch ablaufen zu lassen können wir jetzt die Funktionen genauer beschreiben.

Dazu erstellen wir ein Aktivitätsdiagramm von der Funktion login:
rechte Maustaste auf login Arrow Anlegen Arrow Aktivitätsdiagramm

Ein Aktivitätsdiagramm visualisiert uns wie eine Funktionalität funktioniert.

Dabei brechen wir eine Funktion auf Ihre Kernfunktionen bzw ihren Ablauf herunter.

Da wir in unserer Folderstruktur die einzelnen Aktivitäten sehen, können wir natürlich über verschiedene Diagramme hinweg die herunter gebrochenen Funktionen woanders wieder verwenden. Vielleicht brauchen wir die Funktion "Session schreiben" nochmal???

Ein use-Case und ein Funktionalitätendiagramm hilft uns also nicht nur die Software schon mal zu planen, sondern auch wiederverwendbare Teile zu finden.



Wenn wir uns jetzt mal unseren Strukturbaum ansehen, sollte das Ganze in etwa so sein:



Im Prinzip haben wir jetzt schon mal die Grundplanungsphase abgeschlossen.

Weiterführende Literatur



Ich hoffe ihr habt viel Spaß am ersten Teil von OOD gehabt. Ich freue mich natürlich auf euer Feedback und hoffe das ihr bei den folgenden Teilen auch dabei sein werdet. Nächster Teil unser Datenschema und ein kleiner Exkurs in Datenbanken.

>> Allgemeine Fragen oder Probleme mit dem Tutorial? Hier gehts zum Forum!

Impressum / Datenschutzerklärung          © der-Webdesigner.net 2002 - 2008           top ▲