星空网 > 软件开发 > ASP.net

敏捷软件开发:原则、模式与实践——第19章 类图

第19章 类图

19.1 基础知识
19.1.1 类

  类一般表示成下面的样子:

敏捷软件开发:原则、模式与实践——第19章 类图

分成格间的类图标以及对应的代码

  注意类图标中变量和函数名前面的符合。(-)表示private;(#)表示protected;(+)表示public。


19.1.2 关联

  类之间的关联表示的是那些持有对其他对象引用的实例变量。如phone和Button之间的关联:

敏捷软件开发:原则、模式与实践——第19章 类图

一个PhoneBook对象和多个PhoneNumber对象相连(星号表示许多):

敏捷软件开发:原则、模式与实践——第19章 类图



19.1.3 继承

  UML中所有的箭头都指向源代码依赖的方向。类和类之间的继承用实线,类和接口之间的继承用虚线。我建议在白板上画图是,不要把箭头画成虚线,画虚线太浪费时间了。

  继承关系示例:

敏捷软件开发:原则、模式与实践——第19章 类图

  实现关系示例:

敏捷软件开发:原则、模式与实践——第19章 类图

等价于如下棒棒糖状接口:

敏捷软件开发:原则、模式与实践——第19章 类图


19.2 类图示例

以下为ATM示例:

敏捷软件开发:原则、模式与实践——第19章 类图

看到这幅图时,你应该能设想出代码。UI实现的代码如下:

public abstract class UI :WithdrawalUI, DepositUI, TransferUI{  private Screen itsScreen;  private MessageLog itsMessageLog;  public abstract void PromptForDepositAmount();  public abstract void PromptForWithdrawalAmount();  public abstract void InformInsufficientFunds();  public abstract void PromptForEnvelope();  public abstract void PromptForTransferAmount();  public abstract void PromptForFromAccount();  public abstract void PromptForToAccount();  public void DisplayMessage(string message)  {    itsMessageLog.LogMessage(message);    itsScreen.DisplayMessage(message);  }}

 


19.3 细节

  在大多数情况下,细节和修饰是不应该加入的,不过,有时候它们却是有用的。


19.3.1 类衍型

  类衍型出现在一对语法号(<<>>)之间。C#程序员可以使用两个标准的衍型:<<interface>>和<<utility>>。

敏捷软件开发:原则、模式与实践——第19章 类图

敏捷软件开发:原则、模式与实践——第19章 类图


19.3.2 抽象类

  把名字写成斜体的,或者使用(abstract)属性,即可表示抽象类:

敏捷软件开发:原则、模式与实践——第19章 类图

  在白板上画图时,可以使用非正式的表示:

敏捷软件开发:原则、模式与实践——第19章 类图

 


19.3.3 属性

  属性被书写成以逗号分隔的名字/值对列表。属性写在类名右下方:

敏捷软件开发:原则、模式与实践——第19章 类图

  除了{abstract}属性,我不知道属性还有什么用处。就我个人而言,画UML图这么多年,我没有找到任何使用类属性有用的地方。


19.3.4 聚集
  聚集(aggregation)是关联的一种特殊形式,暗含整体/部分关系。

敏捷软件开发:原则、模式与实践——第19章 类图


19.3.5 组合

  组合(composition)是聚集的一种特殊形式。所有者/所有物关系。

敏捷软件开发:原则、模式与实践——第19章 类图


19.3.6 多重性

  对象可以含有其他对象的数组或者集合,也可比不同的实例变量中持有许多其他同类对象。多重性表达式可以是简单的数字、范围或者两者的组合。

敏捷软件开发:原则、模式与实践——第19章 类图

允许的多重性格式:

数字——元素的确切数目;

*或者0..*——0个到多个。

0..1——0个或者1个,在C#中,常常用可以为null的引用来实现。

1..*——1个到多个。

3..5——3~5个

0,2..5,9..*——可笑,但却是合法的。


19.3.7 关联衍型

<<create>>衍型意味着源创建出目的并把它传递给系统的其他部分。

<<local>>衍型意味着创建出来的实例的生存期就在创建它的成员函数的作用域之内。

<<parameter>>衍型表示源类通过某个成员函数的参数获取对目标实例的访问权。虚依赖箭头线是一种常用且方便的参数表示惯用法。

<<delegate>>衍型表示源类把一个成员函数调用转交给目标。

敏捷软件开发:原则、模式与实践——第19章 类图
19.3.8 内嵌类

敏捷软件开发:原则、模式与实践——第19章 类图  
19.3.9 关联类 

  虽然多重性关联告诉我们源和许多目标实例相连,但是从图中我们却无法看出使用了哪种容器类。可以通过关联类来描述这一点。

敏捷软件开发:原则、模式与实践——第19章 类图

敏捷软件开发:原则、模式与实践——第19章 类图



19.4 结论
  要避免UML中大多数神秘、复杂的特性,只要了解经常使用的部分就可以了。过少使用UML几乎总是比过多使用要好。

 

摘自:《敏捷软件开发:原则、模式与实践(C#版)》Robert C.Martin    Micah Martin 著

转载请注明出处:

作者:JesseLZJ
出处:http://jesselzj.cnblogs.com




原标题:敏捷软件开发:原则、模式与实践——第19章 类图

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Noon推出平价电商平台KUL_Noon推出电商平台KUL全面向中国招商:https://www.kjdsnews.com/a/1603026.html
Noon平台入驻要求_Noon平台入驻需要提供哪些资料?:https://www.kjdsnews.com/a/1603027.html
Noon进军食品配送市场惨遭嫌弃?!降低佣金不被市场看好:https://www.kjdsnews.com/a/1603028.html
中东蓝海之Noon简介:https://www.kjdsnews.com/a/1603029.html
中东亚马逊和Noon的卖家模式有何不同?哪个更适合你:https://www.kjdsnews.com/a/1603030.html
如何解读GA4的访客行为指标:https://www.kjdsnews.com/a/1603031.html
桂林酒店销售多少钱 桂林旅游宾馆价格:https://www.vstour.cn/a/410227.html
十里银滩旅游攻略玩什么住哪里怎么去?:https://www.vstour.cn/a/410228.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流