小孩子的UML:类图





Ave,编码器!UML类图说明了系统的结构,描述了类,类的属性,方法以及对象之间的关系。



即使最小的孩子也知道UML来自统一建模语言,如果是俄语的话-一种统一建模语言,正如传说中所说的,是当严肃的叔叔和阿姨终于厌倦了在各种各样的圈子,破折号和乌云中游泳时才开发的。



对于那些懒得阅读的人:



主角







首先,让我们提醒自己什么是课程?简而言之,类是用于创建提供初始状态值的对象的模板:变量字段的初始化以及字段和方法的行为的实现。



本质上,类描述对象可以是什么。







类代表描述状态(属性)和行为(方法)的概念。每个属性都有其自己的类型,每个方法都有其自己的签名,但是在类图中仅需要填写类名信息,这是合乎逻辑的-即使是世界上最好的心理学家也无法理解这个未命名的正方形是什么以及它通常指的是什么。



类名写在最上面的部分中,然后是类属性,其类型写在冒号之后,最后在下面的部分中有方法。



方法可以返回的类型在方法签名的最后一个冒号后面编写。范围修饰符显示在类属性和方法的前面。







方法中的每个参数也可以描述方法的方向:输入,输出,输入输出。

在此图示中,method1使用p1作为输入,并且该方法以某种方式使用p1的值,并且该方法不会更改p1。



Method2将p2作为I / O参数,方法以某种方式使用p2的值并获取方法的输出,但是方法本身也可以更改p2。



Method3使用p3作为输出参数,换句话说,该参数用作方法输出值的存储库。



软件开发生命周期中的类图透视图



我们可以在软件开发生命周期的不同阶段使用类图,并且通常随着我们逐步深入细节层次,从三个不同的角度逐步对类图建模。







概念透视是指将图表解释为描述现实世界中的事物。因此,如果我们从概念的角度出发,我们将绘制一个表示研究区域中的概念的图表。这些概念与实现它们的类有关。概念角度被认为与语言无关。







规范的观点是将图解释为描述具有规范和接口的软件或组件的抽象,但不依赖于特定的实现。







实现角度是将图解释为以特定技术和语言描述软件实现时。

因此,如果您从实现的角度出发,那么您正在研究软件的实现。



关系类型



接下来,我将介绍六种主要类型的类关系符号,它们是UML图中最常见的。



协会。





像链接对象的链接一样,关联链接类。为了使对象具有连接,它们之间必须有关联。



如果我们假设有两个相互影响的类,则应在它们之间绘制一条连续的连接线,以指示图中的关联。通常,我们还可以看到动词传达其含义。



另外,我们还可以指定多重性,即可以参与关系的对象的数量。将多样性指定为以逗号分隔的间隔列表,其中每个间隔均表示为最小最大值。



例如,一个学生可以向许多老师学习。

但是老师可以教很多学生。



继承







有时也称为-泛化。



顾名思义,这是父类及其后代之间关系的示意图。空心箭头始终指向父类。

继承的经典示例:正方形,矩形和圆形类,它们从父图形类继承。



我们有权为每个类分别描述继承并将其合并。

如果继承来自抽象类,则此类父类的名称用斜体字表示。



实作







通常,这是指接口与实现该接口的对象之间的关系。



例如,所有者接口具有买卖私有财产的方法,实现该接口的Person类和Corporation类的关系将在图中用虚线表示,箭头指向该接口。



依赖性







一类的对象可以在其方法中使用另一类的对象。

如果对象未存储在class字段中,则将这种类间关系建模为依赖项。



实际上,依存关系是两个类别关联的一种特殊情况,在这种情况下,一个类别的更改将不可避免地导致另一类别的更改。



例如,Person类具有带有book输入参数的hasRead方法,例如,如果该人已阅读一本书,则返回true。



依赖关系由带有指向类的箭头的虚线表示,例如,另一类的方法所依赖。



聚合







类之间的一种特殊类型的关系,其中一个类是另一个类的一部分。



例如,程序员的工作场所由椅子,桌子,计算机和风扇组成,但是如果删除了“工作场所”类,我们将简单地拥有所有这些类,仅将它们分开。



聚集显示为带有空心菱形的实线,空心菱形从一个类的一部分定向到一个聚集器类。



组成







实际上,只有在这种情况下,当聚合器类被销毁时,属于另一个类的类的聚合才被销毁。



例如,我们的身体是由器官组成的,但靠它们自身是不可行的。



以类似于聚集的方式指示成分,但是这次钻石被完全填充。



芬奇卡



UML对于处于了解“继承者应该去哪里以及从哪里继承”的阶段的初学者非常有用。正如我们说英语的同事所说:“这有助于了解整个森林在树干后面的样子”。



因此,在开始您的项目(尽管规模不大但令人惊叹)之前,请不要立即抓取代码。首先,在UML中设计您的应用程序体系结构。



大道!



All Articles