C++UML–类和目标

当UML中,类图显示了平组类、接口、协作和它中的涉。在UML的静态机制中类图是一个生死攸关,它不只为规划人员所关切,更为实现人口所关心,建模工具也根本根据类图来闹代码(正向)工程。因此,类图在UML的各种图中据为己有了一对一关键的地位。

于类图中类用矩形框来表示,它的属性和操作分别列于分格中,若无待抒发详细信息时,分格可以大概。一个接近或出现于某些单图被。同一个看似的特性与操作才以相同种图中列有,在其它图被可是粗略。图1吃出Student类。
C++ 1

祈求1类的表示 

类间关系

于类图中,除了需要描述单独的类的称谓、属性与操作外,我们还索要描述类里的关联,因为无接近是独在的,它们通常要以及别的类合作,创造较单独工作再度可怜的语义。在UML类图中,关系之所以类框之间的连线来代表,连线上跟连线端头处的不等修饰符表示不同之涉嫌。类中的涉及发生继承(泛化)、关联、聚合和组合。

(1)继承:指的凡一个接近(称为子类)继承另外的一个类(称为基类)的效用,并加其和谐的新力量的力量,继承是类似和类似中最为普遍的涉。类图中继承的象征法是自子类拉起同长闭合的、单键头(或三角形)的实线指向基类。例如,图2给来了students类和全校被某团组织成员a_member的持续关系。

C++ 2
图2 类的后续 

类的存续在C++中见为:

class B { }
class A : public B{ }

(2)关联:指的是范元素中的一致种植语义联系,是近似里的同等栽特别弱的牵连。关联好生方向,可以是只有为关系,也可以是双向关联。可以给涉嫌加上关联名来叙述关联的意图。关联两端的好像为可为某种角色与关联,角色好享多重性,表示可有小只对象与关联。可以透过关联类进一步描述关联的性、操作以及其他消息。关联类通过同样长虚线与关系连接。对于涉嫌好加上有束缚,以增长涉及的意义。

关联以C++中表现为:

class A{…} 
class B{ …}
A::Function1(B &b) //或A::Function1(B b) //或A::Function1(B *b)

就是一个像样作为任何一个近似措施的参数。

(3)聚合:指的凡圆以及有的涉。通常在概念一个完全类后,再夺分析是整体类的结结构。从而寻找来有组成类,该整体类和组成类之间便形成了集聚关系。例如一个汽车包括轮胎及引擎等。需求描述负“包含”、“组成”、“分为…部分”等词常意味着聚合关系。

C++ 3
祈求3 类的集合

(4)组合:也代表类中完全和有些的干,但是结合关系被有些以及整体有所合并的生存期。一旦整体目标非存,部分靶为拿无存在。部分对象和整体目标中有协同生死之涉嫌。

聚和组合的界别在:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示完全和局部的干比弱,而重组于大;聚合关系遇意味有些物之目标同代表聚集事物的靶子的生存期无关,一旦删除了集对象不肯定就去了表示有些东西的目标。组合中如果删除了咬合对象,同时也不怕去了象征有些东西的靶子。

咱们之所以深入浅出的例证来证明聚合和整合的区别。“国破家亡”,国灭了,家本来吧从不了,“国”和“家”显然也是整合关系。而相反的,计算机与它们的外设之间就是会师关系,因为她中间的干相对松散,计算机没有了,外设还可以独自在,还足以通在别的电脑及。在联谊关系面临,部分可以单独为聚集而在,部分的所有权为可以由几个聚合来共享,比如打印机就好于办公室外给大面积同事共用。

当C++语言中,从贯彻之角度讲,聚合可以代表也:

class A {…} 
class B { A* a; …..}

即类B包含类A的指针;

苟结缘可代表为:

class A{…} 
class B{ A a; …}

即类B包含类A的对象。

准确的UML类图中因故空心和殷切菱形对聚集和组成展开了分别。

C++ 4

图4组合 

C++ 5
贪图5 银行管理系统类图 

祈求3.5被起了一个银行保管体系的类图,基本上一看便亮:

银行类聚合了账号库(AccountSet)、客户库(CustomerSet)和员工库(EmployeeSet);

账号库中含有了n个账号(account)、客户库中蕴藏了n个客户(customer),员工库包含了n个员工(employee);

职工类和客户类都继承自人(person)类,而职工类吃以发生同种特有的职工,即职工负责人类(employeeAdmin);

账号类和客户类之间体现出一致种植关系关系;

连下,我们深受起建立类图的手续:

(1)研究分析问题领域确定系要求;

恍如的辨识是一个亟待大量技术的工作,寻找类似的一部分技巧包括:名词识别法;根据用例描述确定类;使用CRC分析法;根据边界类、控制类、实体类的撤并来帮忙分析体系受之近乎;参考设计模式确定类;对天地开展辨析或行使曾发出天地分析结果取近似;利用RUP中哪在分析与筹划被找寻类似的步子。

(2)确定类,明确类的义和任务、确定属性和操作;

(3)确定类中的涉。

2对象图

对象图显示有时刻对象和对象之间的关系,是类图的变动,一个目标图可当一个类图的以身作则(example),对象图表示的是接近的目标实例而无是诚心诚意的类似。由于目标有生命周期,因此对象图只会以网某一时间段在。

对象图被并随便新的意味拟(除了对象名下要加下划线以外),与类图中之代表法平,可以当,只有靶要无类的类图就是一个“对象图”。

C++ 6
图6 对象图 

以对象图中,对象名好生三栽表示形式:

(1)对象名:类名

(2):类名

(3)对象名

祈求6蒙的是第1栽,即“对象名:类名”格式。

真相上,对象图几乎很少受用到(它包含的信息量太小,仅仅用于呈现某平天天对象的价值,对软件的筹划几乎从来不尽特别的扶持),使用多没有类图广泛。我们好如此看似比类图和目标图里的涉:

“动词+名词”构成“动名词”,例如动词“爱”+名词“国”构成动名词“爱国”。

咱得以看来,“动名词”的信息量大老,很肤浅,而当动名词的例证的“爱国”信息量大有点,具体水平非常高。

动名词 ―――――> 类图

爱国  ―――――> 对象图