软考系统分析师必考知识五分钟一文

哪家医院治白癜风好 http://www.xxzywj.com/m/

UML图(在UML2.0中,一共定义了14种图)

一、用例图:从用户角度描述系统功能

用例图(UseCaseDiagrams):主要用来描述角色及角色与用列之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示这些元素之间的名种关系,如泛化、关联、包含和依赖,它展示了一个外部用户能够观察到的系统功能模型图。

:帮助开发团队以一种可视化的方式理解系统的功能需求

(一)、包含的元素

1.参与者(Actor)——与应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示。

2、用例(UseCase)——用例就是外部可见的系统功能,对系统提供的服务进行描述,用椭圆表示。

3、子系统(Subsystem)——用来展示系统的一部分功能,这一部分功联联系紧密。

(二)、包含的关系(关联、泛化、包含、扩展)

a、关联(Association):表示参与者与用例之间的通信,任何一方都可发送或接受消息。

:无箭头,将参与者与用例相连接,指向消息接收方

b、泛化(Inheritance):就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。

:指向父用例

c、包含(Indude):包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。包含关系对典型的应用就是复用,也就是定义中说的情景。但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。

例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那添加、修改以及删除都要在用例详述中描述,过于复杂;如果分成添加用例、修改用例和删除用例,则划分太细。这时包含关系可以用来理清关系。

:指向分解出来的功能用例

d、扩展(Extend):扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(ExtensionPoint)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。对于一个扩展用例,可以在基用例上有几个扩展点。

:指向基础用例

e.依赖(Dependency):以上4种关系,是UML定义的标准关系。但VS的用例模型图中,添加了依赖关系,用带箭头的虚线表示,表示源用例依赖于目标用例。

:指向被依赖项

(三)、包含(include)、扩展extend)、泛化nheritance)的区别:

条件性:泛化中的子用例和includer中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;

直接性:泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而jinclude中被包含的用例为参与者提供间接服务。

对extendi而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。

对Inheritance而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;

泛化侧重表示子用例间的互斥性:

包含侧重表示被包含用例对Acto提供服务的间接性;

扩展侧重表示扩展用例的触发不定性:

另外一点需要提及的是:泛化中的子用例和扩展中的扩展用例均可以作为基本用例事件的备选择流而存在。

二、类图:描述系统中类的静态结构

类题(ClassDiagrams),用户根据用例图抽象成类,描述类的内部结构和类与类之间的关系,是一种静态结构图。

类一股由三部分组成:

类名(Clss:每个类都必须有一个名字,类名是一个字符串。

属性(Attributes):属性是指类的性质,即类的成员变量。类可以有任意多个属性,也可以没有属性。

操作(Operations):操作是美的任意一个实例对象都可以使用的行为,操作是类的成员方法。

属性和方法之前可附加的可见性修饰符

(一)、类的关系

各种关系的强弱顺序:泛化=实现组合聚合关联依赖:

1、★关联关系(Association):

通常关联关系用来实现连接有关联的对象所对应的类,即将一个类的对象作为另一个类

的属性。

还有就是关联关系可以是单向的也可以是双向的。双向的符号是没有方向标的,只是

条直线。

关联关系——单向

关联关系——双向

关联关系——自己

多重性关联关系:记住下面的表格。是另一个类与该类是什么关系。

例如:

在这里要注意,看完此图中1..1以后不要认为一个Fom是对应一个Button的。

不是的,应该是一个Button是对应一个Fom的。1.1是表示另一个类的一个对象只与一个该类对象有关系。记住上面的表格。是另一个类与该类是什么关系。

2、★聚合关系(Aggregation):

表示整体与部分的关系。考虑到一个整体类的组成结构。找出成员类。即成员对象是整体对象的一部分,但是成员对像可以队里整体对象独立存在。所以也有人说此关系是一种弱关系,那么强关系是什么后面我们会降到组成关系。

聚合关系有一个特点,那就是可替换。

直观的来看此图Car中必须得有一个Engine,这样才可以认为是一个完整体。

但是这个Engine是可替换的。是以传参的形式给Car赋一个Engine.

再次强调一下聚合是可替换的。Car中必须有一个Engine,但是此Engine可以是一个抽象的具体的Engine是在当你使用Car时可以具体去找一个合适的Engine装到Car上就行,如果没有Engin那么这个Car是跑不了。

3、★组合关系(Composition):

表示整体与部分的关系。但是与聚合不同此关系是整体与部分是同生共死关系。即如果整体对象销毁了部分也会被销毁。

上图Heac是整体Mlouth是部盼,如Head没了Moutht也跟着销毁了。如果剽Mouth设了Head也将是面目全非。在代码中Head中Mouth是直接new出来的。

就是说当你去newHead时Mouth也被new出来。记住一同创建一同销毁关系。也强关系。那么有人会问关联,聚合,组合我怎么认为是一样呢

可以说他们是一样的都可以说是关联关系,是的,但是关联关系的强弱来区分了一下关联关系强度来看组合聚合关联。

4、★依赖关系(Dependency):

是一个使用关系。特定事物的改变有可能会影响到使用该事物的其他事物。简单说在一个类中通过另外一个类来调用其方法的表示。

从图中可以看出Studentt也是Person,Teachert也是Person.,他们有共同的特征name,age。但是也有独自的特征一个是stud心y一个是teach的特征。

子类那么就是Student,Teacher类是Person。继承了父类那么子类可以直接适用类的方法或属性(家产)

5、★泛化关系(Generalization):

继承(extends)关系,父类与子类关系。

从图中可以看出Studentt他,是Person,Teachert也,是Person。他们有共同的特征name,age。但是也有独自的特征一个是study一个是teach的特征。

子类那么就是Student,Teacher父类是Person。继承了父类那么子类可以直接适用父类的方法或属性(家产)

6、实现关系(Realization):

类实现(implements)了接口。当多个类有类似的行为方式的时候我们通常会适用接口。

Ship,Car都有move的特征他们都属于交通工具Vehicle)只是他们move的方式不一样。那么,我们就可以适用接口实现的方式去设计。代码中是oublicclassCarimplementsVehice

最后:完整的类图例子




转载请注明:http://www.jiaju1314.com/jbjj/jbjj/17290.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了