PHP-Code aus Klassendiagrammen

Klassendiagramme sind so ziemlich das Einzige, was ich (außer ab und zu ein paar textuellen Usecases) UML abgewinnen kann, da sie recht schnell einen guten Überblick über die Struktur geben.

ArgoUML ist ein Java-basiertes UML-Tool, dass mit Hilfe optionaler Module auch PHP „spricht“ und die erstellten Klassendiagramme sowohl in PHP4-, als auch in PHP5-Code exportieren kann.
Die zusätzlichen Module findet man in den Downloads für die Version 0.14 (beta1). Um sie installieren zu können, sollte man das Tool jedoch nicht als Binary, sondern als zip- oder tar.gz-Archiv herunterladen.
Eine Installationsanleitung gibt es entsprechend mit dazu.

Um mit PHP entsprechend arbeiten zu können, muss man allerdings erst einmal (mindestens) die Datentypen array und string im Projekt anlegen. Wenn man auf „untitledModel“ klickt, sieht man unten bereits den Button mit dem grünen Punkt, über den neue Datentypen angelegt werden können. Die gelben Kästen stellen Objekte dar und jede Klasse, die angelegt wurde erscheint dann automatisch in dieser Liste.
argouml1

Wenn man ein neues Klassendiagramm anlegt, kann man zu jeder Funktion/Variablen/Klasse die Sichtbarkeit, sowie static oder abstract wählen. Über das Auswahlmenü Sterotyp kann man noch entsprechende Zusatzinformationen angeben – z. B. «create» für Konstruktoren.

Klassendiagramm der Config-Klasse
Das Beispiel-Klassendiagramm zeigt eine (reichlich einfache und unfunktionelle) Config-Klasse, die aus der privaten Member-Variable properties, sowie den öffentlichen Methoden get() und set() besteht. Dabei können für jede Klasse/Variable/Funktion noch eine Dokumentation, sowie ein Eintrag in die Todo-List erstellt werden.
Interessant ist, was dann in dem Reiter „Quelle“ jeweils unter PHP4 und PHP5 ausgegeben wird:


/**
 * Short description of class Config
 *
 * @access public
 * @author Julia Eckel, <info@mileandra.de>
 */
class Config
{
    // --- ATTRIBUTES ---
    /**
     * Short description of attribute properties
     *
     * @access private
     * @var array
     */
    private $properties = array();
    // --- OPERATIONS ---
    /**
     * Short description of method get
     *
     * @access public
     * @author Julia Eckel, <meine@mail.de>
     * @param string
     * @return string
     */
    public function get($key)
    {
        $returnValue = (string) '';
        // section -64--88-1-1-46b158:10a0f33f085:-7ff7 begin
        // section -64--88-1-1-46b158:10a0f33f085:-7ff7 end
        return (string) $returnValue;
    }
    /**
     * Short description of method set
     *
     * @access public
     * @author Julia Eckel, <meine@mail.de>
     * @param string
     * @param string
     * @return void
     */
    public function set($key, $value)
    {
        // section -64--88-1-1-46b158:10a0f33f085:-7ff4 begin
        // section -64--88-1-1-46b158:10a0f33f085:-7ff4 end
    }
	

} /* end of class Config */

PHP4:


/**
 * Short description of class Config
 *
 * @access public
 * @author Julia Eckel, <meine@mail.de>
 */
class Config
{
    // --- ATTRIBUTES ---
    /**
     * Short description of attribute properties
     *
     * @access private
     * @var array
     */
    var $_properties = array();
    // --- OPERATIONS ---
    /**
     * Short description of method get
     *
     * @access public
     * @author Julia Eckel, <meine@mail.de>
     * @param string
     * @return string
     */
    function get($key)
    {
        $returnValue = (string) '';
        // section -64--88-1-1-46b158:10a0f33f085:-7ff7 begin
        // section -64--88-1-1-46b158:10a0f33f085:-7ff7 end
        return (string) $returnValue;
    }
    /**
     * Short description of method set
     *
     * @access public
     * @author Julia Eckel, <info@mileandra.de>
     * @param string
     * @param string
     * @return void
     */
    function set($key, $value)
    {
        // section -64--88-1-1-46b158:10a0f33f085:-7ff4 begin
        // section -64--88-1-1-46b158:10a0f33f085:-7ff4 end
    }
	

} /* end of class Config */

In PHP4 wird automatisch ein Unterstrich vor die private Variable properties gesetzt, in PHP5 dagegen die Sichtbarkeit durch private gekennzeichnet.
Da ich für die Methoden und Parameter keine Dokumentation angegeben habe, wird hier der Standard-Text ausgegeben.

Auf diese Weise bekommt man schon einmal ein recht ordentliches Gerüst inklusive PHP-Documentor­kompatiblen Kommentaren und muss „nur noch“ den Code für die Funktionen angeben.
extends, abstract und Standard-Werte für Variablen und Parameter sind auch kein Problem.

Der Autor, sowie die entsprechende Email-Adresse (im Beispiel geändert) können in den Einstellungen angegeben werden, so dass man diese nicht immer erneut tippen muss.


Ähnliche Artikel

Geschrieben am
Share |

Kommentare

  1. Arnulf schrieb am 25.02.08:1

    Kannst du mir vielleicht einen Tip geben, wie Klassen dargestellt werden, die als Member in ‘übergeordneten’ Klassen liegen? Bin irgendwie nicht so richtig schlau aus den Quellen geworden, die ich bisher genutzt habe. Hat irgendwas mit Abhängigkeiten zu tun. So richtig bin ich mir da aber nicht sicher. Wie stelle ich soetwas mit Argo-Uml im Klassendiagramm dar?
    Bsp.:

    class Part{

    protected $name; public function __construct($name){ $this->name = $name; }
    }

    class MainClass{

    protected ObjB; public function __construct($incObj){ $this->ObjB = $incObj; }
    }

    $main = new MainClass(new Part(“xxy”));

    und was mache ich mit Schnittstellen, die konnte ich da auch nicht finden? ... grummel…
    ... vielleicht findest du ja Zeit zu antworten, wenn nicht auch ok…

    Gruß


Dein Kommentar:

Sämtliche Html-Tags werden gelöscht, der Kommentar kann mit Textile formatiert werden.
Vor dem Absenden müsst ihr euch einmal die Vorschau ansehen.