Für den Entwurf der Architektur eines Projektes bietet sich die Verwendung eines so genannten CASE-Werkzeugs (Computer Aided Software Engineering) an. Mit diesem erstellt man die entsprechenden UML-Diagramme und kann Code-Gerüste für die spätere Ausprogrammierung aus dem Modell generieren.
ArgoUML ist ein populäres, in Java geschriebenes Open-Source-CASE-Werkzeug. Für uns ist ArgoUML interessant, da es die Generierung von PHP-4- und PHP-5-Code unterstützt.
In Abbildung 14.1 sehen wir ein
UML-Klassendiagramm für die Klasse BankAccount (siehe
Kapitel 4).
Beispiel 14.1 zeigt ein
aus dem UML-Modell generiertes Code-Gerüst. ArgoUML hat hierbei eine
PHP-Klasse mit entsprechenden Methoden und Code-Kommentaren erzeugt. Für
das Gerüst der Methode getBalance() wurde beispielsweise
die Typinformation für den Rückgabewert (float) genutzt und
in den Code überführt.
Beispiel 14.1: Von ArgoUML generierter PHP-5-Code
<?php
error_reporting(E_ALL);
/**
* untitledModel - class.BankAccount.php
*
* $Id: BankAccount.php 274 2004-12-19 09:58:15Z sb $
*
* This file is part of untitledModel.
*
* Automatic generated with ArgoUML 0.16
* on 29.08.2004, 12:04:23
*
* @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
*/
if (0 > version_compare(PHP_VERSION, '5')) {
die('This file was generated for PHP 5');
}
/**
* Short description of class BankAccount
*
* @access public
* @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
*/
class BankAccount
{
// --- ATTRIBUTES ---
/**
* Short description of attribute balance
*
* @access private
* @var float
*/
private $balance = 0.0;
// --- OPERATIONS ---
/**
* Short description of method getBalance
*
* @access public
* @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
* @return float
*/
public function getBalance()
{
$returnValue = (float) 0.0;
// section -64--88-0-2-9a8a68:fea9f69d65:-7ffa begin
// section -64--88-0-2-9a8a68:fea9f69d65:-7ffa end
return (float) $returnValue;
}
/**
* Short description of method setBalance
*
* @access public
* @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
* @param float
*/
public function setBalance($balance)
{
}
/**
* Short description of method depositMoney
*
* @access public
* @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
* @param float
*/
public function depositMoney($amount)
{
}
/**
* Short description of method withdrawMoney
*
* @access public
* @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
* @param float
*/
public function withdrawMoney($amount)
{
}
} /* end of class BankAccount */
?>Die kommerzielle Variante von ArgoUML, Poseidon for UML, sieht schöner aus und bietet etliche Leistungsmerkmale, die die Open-Source-Fassung nicht bietet. Sie ist jedoch für die PHP-5-Programmierung derzeit noch nicht interessant, da sie nur PHP-4-Code generieren kann.