• 【面向对象设计基础】UML统一建模语言初学


    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

    1.UML是Object Management Group推出的用于简化复杂软件工程流程的工具,使用UML,用户可以定制并且可视化软件和非软件的设计。注意UML只是一种建模语言,它只定义了words和grammar,而并没有定义建模的过程或流程。

    2.上文中提到的静态模型和动态模型的分类也可以如下分类,一共十二种图:

    STRUCTURE DIAGRAMS:可以用来代表一个应用的结构

    • Class diagrams
    • Object diagrams
    • Component diagrams
    • Deployment diagrams

    BEHAVIOR DIAGRAMS:可以用来代表一个应用的行为:

    • Use Case diagrams
    • Sequence diagrams
    • Activity diagrams
    • Collaboration diagrams
    • Statechart diagram

    MODEL MANAGEMENT DIAGRAMS:可以用来代表不同的程序模块是如何组织和管理的:

    • Packages
    • Subsystems
    • Models

    此文只详细介绍类图和时序图。

    3.类图详解:

    1)构成形式:

    image

    举一个例子:

    image

    2)内部类:

    我们使用诸如下边的方式表示内部类,定义在方法区

    image

    例如:

    image

    3)访问描述符:

    对于Java,我们用如下的符号表示访问描述符:

    image

    我们在下图详细说明了各个访问描述符的一些权限设定:

    image

    4)抽象类和方法:

    在类中定义的没有body 的方法称为抽象方法,至少有一个抽象方法的类是抽象类。使用斜体来描述:

    image

    5)异常:

    使用虚线以及箭头表示:

    image

     

    6)便签(包含限制、注释和代码解释):

    只用这种dog-eared 的框框:

    image

     

    7)泛化:描述一种继承关系。

    image

     

    8)接口:

    和类表示差不多,在前边加上<>,

    image

    9)实现:

    这是描述接口和具体实现的方式,有两种表示方法:

    image

    或者:

    image

     

    10)依赖:

    描述源和目的组件之间存在依赖关系,也就是说,一旦target有变,source就必须改变,而不是反之,看下边的例子。

    image
    Order类利用DBUtil类的execute方法调用SQL语句,所以Order类依赖于DBUtil(DBUtil为target)

     

    11)类关联:

    多重性(Multiplicity ),修饰符暗示着实例之间的关系。一个类的一些实例与另一个类的实例有关,下图是表示多重性的一些符号:

    image

    下边有三种:

    a)Navigability:当A包含有到达B的必须信息,也就是说A知道B,但是B不知道A。如下图:

    image

    LogAbstraction 里面有LoggerBridge类的实例。

    当然这样的也可能是双向的,

    b)Composition:类A包含类B

    image

    这个图表达两点意思:

    A line item is part of an order.

    A line item cannot exist without an order.

     

    c)Aggregation:聚合,较之b更加轻量一些,

    image

    这个图有两点意思:
    A Player is part of a Team.

    A Player can be part of more than one Team and hence, when a Team
    is dissolved, the Player still remains.

     

    4.时序图详解:

    1)时序图对象:由类型和它前边的冒号表示:

    image

    2)消息:

    时序图对象之间的通信,一般的,消息都是映射到类操作上的,若是并不是和类进行互动的话,比如一个用户与ATM取款机的操作,那么直接使用这样的消息就不合适了。消息也可以表示business工作流。

    image

    3)自我调用:
    时序图对象作用于自身的一种消息,

    image

     

    我们在下边举一个综合的时序图小例子:

    image

    一个用户在线先填写注册表单,所有提交的信息都先被Controller对象接收,Controller创建对象Account,并且把信息都存入Account对象,Account对象创建并且使用DBManager 将数据保存到数据库中(使用自我调用)。

    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

  • 相关阅读:
    10 行Python代码实现批量压缩图片500 张,面试必学
    用Python邮件发送,新手必学
    用Python监控男女朋友每天都在看哪些网站?这招绝了
    不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据?新手必学
    用Python做一个520表白神器,值得收藏
    微分不等式
    零点问题
    2019英语一 Text4分析
    A1065. A+B and C(64bit)
    A1046. Shortest Distance
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2822370.html
Copyright © 2020-2023  润新知