ホームページ >php教程 >php手册 >PHP および UML のクラス図: PHP および UML のクラス図

PHP および UML のクラス図: PHP および UML のクラス図

WBOY
WBOYオリジナル
2016-06-21 09:14:451137ブラウズ

この短い記事はよく書かれています。PHP を使用して UML を説明することは革新的であると言えます。この記事を通じて、www.phppatterns.com という優れた Web サイトも見つけました。各 UML 用語の翻訳は、私が読んでいる書籍「UML ユーザー ガイド (統一モデリング言語ユーザー ガイド)」から引用しています。

UML (Unified Modeling Language、統一モデリング言語) は、ソフトウェアを図で表現するためのメカニズムです。基本的に、絵を描くことでプログラムを設計でき、対応するツールが利用可能な場合は、絵から直接コードを生成することもできます。この記事では、UML クラス図を使用して PHP コードがどのように表現されるかを見ていきます。

UML の知識がすでにあることを前提として、直接開始し、例としていくつかの PHP コードとそれに対応する UML 表現をリストします。ただし、これはクラス図の完全な分析ではありません。

まだ UML に慣れていない場合は、読み始める前にいくつかの知識を追加してください。いくつかのリソースを収集し、この記事の最後にリストしました。

【継承関係】

PHP キーワード extends により、あるクラス (サブクラス) が別のクラス (親クラス) から継承することができます。

class Senior {

}

class Junior extends Senior {

}
?>


UML 表現は次のとおりです。




三角形は親上にあることに注意してください。クラス側。

[関連付け]
関連付けは、関係はありませんが、相互にアクセスする必要がある 2 つのクラス間で発生します。たとえば、モデルとビューでは、表示用のデータを提供するためにモデルが必要です。関連にはいくつかの異なるタイプがあります:

*Aggregation* 集約

集約 (集約) は、1 つのクラス (次の例では Model) が別のクラス (次の例では Dao) にアクセスするときに、2 番目のクラス (Dao) が外部 ($dao) でインスタンス化されています。最初のオブジェクト ($model) が「消滅」しても、2 番目のオブジェクト ($dao) は依然として「生存」し続けます。これは、多くのオブジェクトに渡される可能性があるデータ アクセス オブジェクト (データ アクセス オブジェクト) に関しては一般的であり、データ アクセス オブジェクトが「死亡」した場合でも、これらのオブジェクトは依然として「生存」しています。

このようにすると、通常、最初のクラス (Model) が 2 番目のクラス (Dao) の一部を制御することが説明されます。

例:

class Dao {
function getSomething() {

}
}

class Model {
var $dao) {
$this- > ;dao=& $dao;
}

関数 doSomething () {
$this->dao->getSomething();
}

$dao=新しい Dao;

$model=新しいモデル$dao);
$model->doSomething();


は、UML では次のように表されます:




コントロール クラス側にあります。


*Composition* 組み合わせ

Composition (Composition) は、あるクラス (例では View) が別のクラス (例では LinkWidget) をインスタンス化するときに発生します。そのため、前者 (View) が「ハング」し、Ther() も「終わった」状態。

言い換えれば、第 1 クラスは第 2 クラスのすべてを制御します。
これは PHP の例です:

class LinkWidget {
function Display () {

}
}

class View {
var $linkWidget;
function View () {
$this->linkWidget=new LinkWidget;
}

function renderPage () {
$this->page=$this->linkWidget->display()
}
}
?>
は、UML では次の図で表されます。




実線のひし形はコントロール クラス側にあります。


[メッセージ]

メッセージ (メッセージ) は、クラス (例では View) がその (HtmlUtils) インスタンスを制御せずに別のクラス (例では HtmlUtils) と「通信」するときに発生します。これらのクラス間の関係も関連付けです。

通常、PHP で演算子 :: が使用されているときに発生します。例:

注釈: このメソッドは、C++ の HtmlUtils クラスのメンバー関数 unHtmlEntities() が静的である場合と似ていると思います。そのため、HtmlUtils をインスタンス化する必要がなく、「クラス名」を直接使用できます。 ::メンバー関数名」メソッド(HtmlUtils::unHtmlEntities())が呼び出されます。 <?php
htmlutils($ str){$ trans_tbl = get_html_translation_table(html_entities);
} classビュー{
$ text = htmlutils :: unhtmlentities($ text)}}
> from View To HtmlUtils (一方向送信)

同様に、メッセージも両方向に送信できます。

class Debug {
function display () {
echo ($this->errorMsg)
}
}

class SomeClass {
var $errorMsg='これはエラー メッセージです'; function someFunction () {
if ( DEBUG == 1 ) {
Debug::display()
}
}
}

define ('DEBUG',1);$someClass= &new SomeClass;
$someClass->someFunction();




[出力メッセージ: 「これはエラーメッセージです」]

ここで SomeClass は Debug にメッセージを送信します。 SomeClass の $errorMsg 属性が変更されました。

[リソース]
オブジェクト管理グループによる UML の紹介
Posideon UML - UML ダイアグラムを描画し、Java を生成するためのツール (残念ながら PHP はありません)。オープン ソース プロジェクトである Argo UML に基づいたコミュニティ エディションは無料で使用できます。
UML のオブジェクト メンター
UML リファレンス カード



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。