狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

PHP與UML類圖: PHP and UML Class Diagrams

PHP與UML類圖: PHP and UML Class Diagrams

更新時間:2024-04-11 文章作者:未知 信息來源:網絡 閱讀次數:

這篇短文寫的不錯,用PHP來解釋UML(或者反過來說)可以說是一個創新了,通過這篇文章,我也發現了一個好站: www.phppatterns.com 。各UML術語的翻譯來源于我正在看的《UML用戶指南(The Unified Modeling Language User Guide)》一書。

UML(Unified Modeling Language, 統一建模語言)是一種通過圖的方式表示軟件的機制。本質上它允許我們通過畫圖來設計我們的程序,并且如果有相應的工具,我們甚至可以從圖來直接產生代碼。在這篇文章里,我們將來看看PHP代碼如何通過使用UML類圖(class diagram)的方式表現出來。

我們將直接開始,假設你已經具備了UML的知識,并列舉一些PHP代碼和它們對應的UML表示作為例子——但這并不是對類圖的一個完整的分析。

如果你尚未接觸過UML,在你開始閱讀前可以補充一些知識,我們收集了一些資源列在這篇文章的末尾。

[Inheritance 繼承關系]

PHP關鍵字extends允許一個類(子類)繼承于另一個類(父類)。

<?php
class Senior {

}

class Junior extends Senior {

}
?>


UML方式表示如下:




請注意,三角形在父類這邊。

[Associations 關聯關系]
關聯關系(Associations)發生于兩個不存在關系但也許需要互相訪問的類之間,比如Model(模型)和View(視圖),View需要Model提供數據以進行顯示。有幾種不同的關聯類型:

*Aggregation* 聚合

聚合(Aggregation)是當一個類(下面例子為Model)訪問另一個類(下面例子為Dao)時,第二個類(Dao)也許已經被外部實例化($dao)了 。如果第一個對象($model)“掛了”,第二個對象($dao)仍然會繼續“活著”。這在涉及數據訪問對象(data access objects)時很常見,它們也許會被傳遞給很多對象,這些對象就算“掛了”數據訪問對象也依然“健在”。

這種方式正常地解釋了第一個類(Model)控制第二個類(Dao)的一部分。

舉個例子:

<?php
class Dao {
function getSomething() {

}
}

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

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

$dao=new Dao;

$model=new Model($dao);
$model->doSomething();
?>


在UML中表示為:




空心菱形在控制類這邊。


*Composition* 組合

組合(Composition)發生于當于一個類(例子中為View)將另一個類(例子中為LinkWidget)實例化,這樣當前者(View)“掛了”時后者()也跟著“玩完”的情況。

換句話說,第一個類控制了第二個類的全部。
下面是PHP中的一個例子:

<?php
class LinkWidget {
function Display () {

}
}

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

function renderPage () {
$this->page=$this->linkWidget->display()
}
}
?>


在UML中用下圖表示:




實心菱形在控制類這邊。


[Messages 消息]

消息(Messages)發生于一個類(例子中為View)同其它類(例子中為HtmlUtils)“交流”而不控制它(HtmlUtils)的實例的時候。這些類之間的關系同樣是關聯關系(association)。

在PHP中通常發生于操作符 :: 使用的時候。例如:

譯注: 我覺得這種方式類似于C++中HtmlUtils類中的成員函數unHtmlEntities()為static的情況,這樣就無需實例化HtmlUtils就可以直接通過"類名::成員函數名"的方式(HtmlUtils::unHtmlEntities())來調用了。

<?php
class HtmlUtils {
function unHtmlEntities ($str) {
$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
return strtr ($str, $trans_tbl);
}
}

class View {
function renderPage {
$text=HtmlUtils::unHtmlEntities($text);
}
}
?>



這將表示為:



該消息從View發給HtmlUtils.(單向發送)

同樣,消息也可以雙向發送。

<?php
class Debug {
function display () {
echo ($this->errorMsg);
}
}

class SomeClass {
var $errorMsg='This is an error message';
function someFunction () {
if ( DEBUG == 1 ) {
Debug::display();
}
}
}

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





[輸出信息: "This is an error message"]

這里 SomeClass 發送一個消息給 Debug,Debug 訪問了SomeClass 的 $errorMsg 屬性。

[Resources 資源]
Introduction to UML from the Object Management Group
Posideon UML - a tool for drawing UML diagrams and generating Java (sadly no PHP), the community edition being free to use. Based on Argo UML, an open source project.
Object Mentor on UML
A UML Reference Card

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
精品中文字幕一区二区| 99精品久久久| 午夜一区二区三区视频| 精品国产99国产精品| 久久综合电影| 国产一区二区主播在线| 一区二区三区在线不卡| 欧美日韩小视频| 色中色一区二区| 99香蕉国产精品偷在线观看 | 99精品视频一区二区| 免费不卡在线视频| 亚洲二区视频在线| 一区二区三区四区乱视频| 亚洲国产精华液网站w| 精品国内片67194| 日韩一区二区三| 欧美专区日韩专区| 性刺激综合网| 中文精品视频| 国产精品jizz在线观看美国 | 夜夜爽www精品| 国产一区二区无遮挡| 99久久精品国产一区二区三区| 国产尤物一区二区| 国产精品一区在线观看乱码| 另类欧美日韩国产在线| 日韩电影免费在线看| 日本vs亚洲vs韩国一区三区二区| 亚洲资源在线观看| 国产精品国产自产拍高清av| 精品成a人在线观看| 精品久久久久久久久久久久久久久| 欧美精品丝袜中出| 欧美一区二区福利视频| 日韩欧美www| 2024国产精品| 欧美国产精品久久| 亚洲同性gay激情无套| 亚洲欧美日韩中文播放 | 国产一区中文字幕| 懂色av中文一区二区三区| 大胆亚洲人体视频| 99久久99久久精品免费观看| 欧美日本中文| 亚洲国产三级| 影音先锋国产精品| 国产日产高清欧美一区二区三区| 亚洲视频1区| 欧洲精品在线观看| 欧美一区二区国产| 欧美韩日一区二区三区四区| 亚洲欧洲国产专区| 五月婷婷另类国产| 国产精品一区二区久久不卡| 99视频热这里只有精品免费| 好看的av在线不卡观看| 国产伦精品一区二区三区| 在线观看日韩毛片| 久久亚洲春色中文字幕久久久| 国产欧美一区二区精品仙草咪| 国产精品美女久久久久久久 | 亚洲午夜在线视频| 国产一区视频在线看| 91麻豆国产在线观看| 亚洲永久免费精品| 日韩欧美成人一区| 亚洲欧美视频一区| 午夜视频久久久久久| 国产一区二区三区在线观看精品 | 国产成人一区二区精品非洲| 精品不卡一区二区三区| 国产精品久久777777毛茸茸| 欧美日韩一区二区在线观看视频| 久久久国产午夜精品| 在线一区欧美| 国产精品欧美综合在线| 美女脱光内衣内裤视频久久网站 | 亚洲一区在线免费观看| 国产高清精品久久久久| 黄色免费成人| 性高湖久久久久久久久| 日韩久久精品一区| 亚洲一区二区精品久久av| 国产成人超碰人人澡人人澡| 一本一本久久| 日韩欧美一级二级三级久久久| 亚洲免费观看视频| www.亚洲色图| 欧美在线高清视频| 最新国产成人在线观看| 日韩国产成人精品| 成人午夜视频免费看| 美女日韩在线中文字幕| 国产日韩一级二级三级| 久久精品国产**网站演员| 欧美精品福利| 日韩一区二区电影| 香蕉久久夜色精品国产使用方法| 91亚洲男人天堂| 99精品国产一区二区青青牛奶| 一本一道久久a久久精品综合蜜臀| 欧美日韩精品综合在线| 一区二区三区四区av| www.色综合.com| 欧美一区二区视频在线观看 | 亚洲电影第三页| 欧美日韩国产亚洲一区| 欧美成人国产一区二区| 亚洲午夜成aⅴ人片| 久久99国产精品免费| 久久综合九色99| 亚洲一区二区三区免费视频| 国产成人在线视频网站| 亚洲一区3d动漫同人无遮挡| 国产精品毛片大码女人| 91啪九色porn原创视频在线观看| 555夜色666亚洲国产免| 依依成人综合视频| 国产一区高清在线| 亚洲看片一区| 亚洲精品久久7777| 亚洲精品在线视频观看| 欧美高清在线一区| 欧美日韩国产高清视频| 国产亚洲婷婷免费| 国产91精品一区二区| 欧美一级二级三级乱码| 日本女优在线视频一区二区| 欧美激情aⅴ一区二区三区| 久久色在线观看| 欧美在线视屏| 日韩三区在线观看| 成人精品视频一区| 欧美日韩国产成人在线91| 久久综合综合久久综合| 免费亚洲一区二区| 中文字幕一区视频| 亚洲美女黄网| 日韩三级在线观看| 91网上在线视频| 国产欧美精品一区| 在线欧美三区| 亚洲高清免费视频| 99精品国产在热久久婷婷| 亚洲国产欧美在线| 色婷婷久久久综合中文字幕 | 91在线观看成人| 日韩一区二区三区电影在线观看 | 影音先锋中文字幕一区二区| 亚洲女人****多毛耸耸8| 不卡视频一二三四| 欧美剧在线免费观看网站| 成人激情动漫在线观看| 日韩视频一区二区三区在线播放| 男女激情视频一区| 日韩欧美的一区| 国内精品亚洲| 1区2区3区精品视频| 久久一综合视频| 国产电影精品久久禁18| 欧美激情一区二区三区不卡 | 欧美日本精品一区二区三区| 国产综合久久久久影院| 国产精品福利影院| 欧美亚洲自拍偷拍| 91在线观看污| 亚洲成av人片在线观看无码| 欧美一级久久久| 欧美一级专区| 成人精品一区二区三区四区 | 欧美精品亚洲精品| 午夜欧美在线一二页| 欧美成人艳星乳罩| 国产日韩欧美一区| 香蕉久久夜色精品国产使用方法| 日韩一区二区三区电影在线观看| 中文在线不卡| 成人激情午夜影院| 亚洲国产成人高清精品| 精品999久久久| 国产精品成人一区二区网站软件 | 日韩精品一区二| 欧美中文一区二区三区| 91视频免费播放| 青青草国产成人av片免费| 日本一区二区综合亚洲| 欧美亚洲国产怡红院影院| 亚洲国内自拍| 国产成人综合视频| 一二三区精品福利视频| 亚洲精品在线一区二区| 337p亚洲精品色噜噜狠狠| 国产欧美亚洲一区| 91色乱码一区二区三区| 亚洲.国产.中文慕字在线| 久久久国产午夜精品 | 精品蜜桃在线看| 欧洲日韩一区二区三区| aa亚洲婷婷|