mmofacts.com

UML PHP

gepostet vor 14 Jahre, 8 Monate von BlackScorp

Hi leute,

kann mir jemand von euch erklären wie ich in UML die beziehungen von Dateien und Klassen darstellen kann? also ich habe mir so einige UML tutorials durchgelesen und kann dieses Beispiel mit person geht zum bankautomat und spricht sein konto an nicht mehr sehen.

Es hat mich kein bisschen weitergebracht.

In meinem Konkreten beispiel habe ich eine Klasse in der index.php stehen und nach der Deklaration der klasse rufe die auf etwa so:

PHP:

class Programm
{
//einige eigenschaften
//einige methoden
/**
* Zeigt das Layout an
*/
public static function start()
{
$layout = new Layout('index.html');
return $layout->display();
}
}
echo Programm::start();

 so sieht meine Main Klasse aus aber wie kann ich es in UML darstellen? irgendwie habe so ziemlich viele Schwierigkeiten ein UML für PHP darzustellen weil ich keine Namespaces/Packages habe keine usings etc. mit einem C# Programm geht es aber bei PHP hörts auf. vllt könnt ihr mir helfen?

Und dann wäre da noch der Singleton(welches wir im anderen Beitrag besprochen haben) wie sieht denn die Verknüfungen von Klassen aus welche Singleton nutzen?

MFG

gepostet vor 14 Jahre, 8 Monate von DrakeL

Eine Klasse die eine andere Klasse einfach nur nutzt beschreibt man mit einer Assoziation, falls ich deine Frage richtig verstanden habe:

http://de.wikipedia.org/wiki/Assoziation_%28UML%29

Was hier jetzt die Probleme bezüglich fehlender Namespaces verursacht wüsst ich allerdings nicht. Namespaces muss man in UML nicht verwenden. PHP 5.3 hat übrigens Namespaces.

gepostet vor 14 Jahre, 8 Monate von BlackScorp

und was wenn eine klasse eine andere nicht nutzt sondern eine datei einfach lose ohne einer klasse eine klasse aufruft?

sprich:

include class.sonstwas.php

echo Klasse::methode();

eigentlich ist es ja eine beziehung zwischen datei und klasse wie soll man sowas im UML darstellen?

gepostet vor 14 Jahre, 8 Monate von Sarge

includes/requires bildest du nicht in deinem UML Klassendiagramm ab, da dies ja keine beziehung sondern nur eine technische notwendigkeit ist.. sind ja nichts anderes als imports bei java o.ä... (sofern du dich an OO hälst und nicht komische sachen machst, die php ermöglicht)...  die eigentliche beziehung wäre dann der Aufruf

echo Klasse::methode();

Wenn du deine includes/requries wirklich darstellen wollen würdest, so wäre wohl ein UML Packetdiagramm angebracht.. aber du kannst auch einfach ein beliebigen source-analysier drüberlaufen lassen und hast deine include abhängigkeitsstruktur automatisch generiert.

gepostet vor 14 Jahre, 8 Monate von BlackScorp

Original von Sarge

 die eigentliche beziehung wäre dann der Aufruf

echo Klasse::methode();

das Problem ist ja dass die Beziehungen zwischen zweit klassen stattfinden aber in diesem fall habe ich ja keine klasse sondern losen aufruf einer klasse also kann ich im UML diagramm nichts miteinander verbinden

gepostet vor 14 Jahre, 8 Monate von Sarge

Dein Aufruf steht ja in irgendeiner Klasse und wenns dein Eintrittspunkt ist. Also hast du automatisch die Beziehung zwischen der Klasse die den Aufruf tätigt und der Klasse die aufgerufen wird ?

gepostet vor 14 Jahre, 8 Monate von BlackScorp

Original von Sarge

Dein Aufruf steht ja in irgendeiner Klasse und wenns dein Eintrittspunkt ist. Also hast du automatisch die Beziehung zwischen der Klasse die den Aufruf tätigt und der Klasse die aufgerufen wird ?

Muss ich etwa

echo Klasse::methode();

als Klasse ansehen? auch wenn NUR diese eine Zeile in der index.php steht?

gepostet vor 14 Jahre, 8 Monate von DrakeL

Original von BlackScorp

Muss ich etwa

echo Klasse::methode();

als Klasse ansehen? auch wenn NUR diese eine Zeile in der index.php steht?

In dieser Zeile wird eine Klasse benutzt. Ist diese Zeile in einer Methode einer anderen Klasse haben die beiden Klassen eine Beziehung (Assoziation).

Das Abbilden einer Beziehung zwischen einer Datei und einer Klasse, wie es in PHP vorkommen kann, ist in der UML nicht möglich. Zumindest das Klassendiagramm der UML kann nur Beziehungen zwischen den Klassen aufzeigen.

gepostet vor 14 Jahre, 8 Monate von BlackScorp

Original von DrakeL

Das Abbilden einer Beziehung zwischen einer Datei und einer Klasse, wie es in PHP vorkommen kann, ist in der UML nicht möglich.

achso ok dann werde ich es nicht darstellen können danke

MFG

gepostet vor 14 Jahre, 8 Monate von knalli

Was spricht gegen index.php uses Klasse? Einzig allein die Tatsache, das ich index.php nicht als Klasse o.ä. einordnen würde.. wahrscheinlich einfach nur ein Bootscript-Artefakt?

gepostet vor 14 Jahre, 8 Monate von BlackScorp

Original von knalli

 wahrscheinlich einfach nur ein Bootscript-Artefakt?

was ist das?

gepostet vor 14 Jahre, 8 Monate von knalli

In manchen Projekten gibt es ein einzelnes Script index.php, was eigentlich nur das Framework an sich "bootet", also initialisiert und startet. Selber meist keine Klasse und uU durch Konfigurationsdateien oder Dinge wie Modrewrite/Dev-Mode ergänzt oder getweaked. 

Ein Artefakt ist erstmal einfach etwas, was noch zusätzlich in deinem Diagramm vorkommt. Allerdings sollte man vielleicht auch erwähnen, das jedes UML-Diagramm eine bestimmte Zielsetzung hat. Ein Diagramm muss nicht jede Klasse des gesamten Systems beinhalten (auch wenn dort Beziehungen bestehen), wenn diese anderen Klassen oder Beziehungen nicht für den Sinn und Zweck der Darstellung (grobe Ansicht der Methodik XY) dienen kann. Also: Vielleicht braucht man das Script gar nicht erwähnen. Möchtest du aber erklären, wie das Framework "bootet", wäre sowas natürlich sinnvoll zu integrieren. In so einem Falle ist eventuell ein Komponenten- auch einem Klassendiagramm vorzuziehen.

Auf diese Diskussion antworten