php 类图,PHP教程之PHP与UML类图: PHP and UML Class Diag...

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

我是根据自己的成长历程来写的,如有不对的还请指正。   这篇短文写的不错,用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答应一个类(子类)承继于另外一个类(父类)。

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)的一局部。

举个例子:

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中的一个例子:

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())来挪用了。

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.(单向发送)

一样,动静也能够双向发送。

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  就是管理员可以编辑,删除,回复 等功能,。加入管理员功能要加入登陆系统,慢慢你会想在线添加管理员,慢慢你会让自己的作品更漂亮些,慢慢1个完整的留言板就会出来了,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值