绘制该机票预定系统的类图。_UML学习-类图ClassDiagram

绘制该机票预定系统的类图。_UML学习-类图ClassDiagram 架构和开发基于UML学习-鲁棒图(Robustness Diagram)已经理解了对应的⽤例场景要实现哪些业务能⼒、参与者如何通过界⾯进⾏交互的、有什么样的控制逻辑、需要读写哪些数据。在此基础上要进⼀步精细化设计,⽽且希望这个阶段设计的结果要能够映射到代码的具体实现。在开发阶段我们通常使⽤⾯向对象语⾔进⾏开发,所以在类图设计的时候采⽤通⽤的⾯向对象语⾔,但不绑定到特定的某种编程语⾔。
静态图和动态图
静态图将⾏为实体描述成离散的模型元素,但是不包括它们动态⾏为的细节。静态图将这些⾏为实体看作是被类所指定、拥有并使⽤的物体。这些实体的动态⾏为由描述它们内部⾏为细节的其他视图来描述,包括交互视图和状态视图。动态视图依赖静态图描述动态交互的事物是什么,彼此间的静态关系如何。
类图
类图是⾯向对象系统建模中最常⽤的图,它是定义其他图的基础,在类图的基础上,状态图、协作图、组件图和配置图等将进⼀步描述系统的其他⽅⾯的特性。类图包含7个元素:类、接⼝、依赖关系、泛化关系、实现关系以及关联关系。关于类、接⼝、类的属性、操作、可见性、接⼝这些⾯向对象编程的基本概念这⾥就不复述了。主要介绍如何通过类图表达这些元素的关系。
类(Class)
类 ⽤ 矩形 来 表⽰, 并且 该矩形被划分为3个部分:名称部分( Name)、属性部分( Attribute) 和操作部分( Operation, 也可以 称为 ⽅法)。 其中, 顶端 的 部分 存放 类 的 名称, 中间 的 部分 存放类的属性(Attribute)、属性的类型(AttributeType) 及其初始值( InitialValue),底部的部分 存放类的操作(Operation)、 操作的参数表( arg: ArgumentType )和返回类型(ReturnType)。类的属性和操作都有可见性修饰符。可见性修饰符有公有(Public)、 私有(Private)、受保护( Protected)和包内公有(Package)这四种。
接⼝(Interface)
接⼝ 是在没有给出对象的实现和状态的情况下对对象⾏为的描述。 接⼝包含操作但不包含属性, 且它没有对外界可见的关联。 ⼀个类可以实现⼀个或多个接⼝, 且所有的都可以实现接⼝中的操作。 拥有良好接⼝的类具有清晰的边界, 并成为系统中职责均衡分布的⼀部分。⼀个类可以实现⼀个或多个接⼝, 且所有的都可以实现接⼝中的操作。
实现关系(Realization)
接⼝和它的实现类之间通过关系相连,表⽰类是接⼝所有特征和⾏为的实现.
依赖关系(Dependency)
依赖表⽰两个或多个模型元素之间存在语义上的关系。从⼴义上来讲关联、实现和泛化都是依赖关系。当出现了下⾯⼏种场景的时候就⽤以来表达类和类之间的关系恒功率直流电源
纸制品加工
一氧化氮 笑气
使⽤:⼀个模型元素需要⽤到另⼀个模型元素,这样才能正确的实现使⽤者的功能(包括了调⽤、实例化、参数化、发送)
调⽤:⼀个类调⽤其他类提供的⽅法
参数:⼀个操作和他的参数之间的关系
实例化:声明⽤⼀个类的⽅法创建了另⼀个类的实例
消防快速接头冰车当⼀个接⼝是在某个特定类中实现时,使⽤该接⼝的类通过⼀个依赖关系(⼀条带箭头的虚线)与该接⼝相连接。这时,依赖类仅依赖于指定接⼝中的那些操作,⽽不依赖于接⼝实现类中的其他部。
泛化关系(Generalization)
泛化关系是⼀种继承关系, 表⽰⼀般与特殊的关系, 它指定了⼦类如何继承⽗类的所有特征和⾏为. 接⼝和类那样进⾏泛化和特化处理。接⼝和接⼝之间、类和类之间都有泛化关系。
关联关系(Association)
关联关系是指⼀个事物的对象与另⼀个事物的对象间的关系。关联关系有⼀些修饰符。
名称:使⽤⼀个动词或动词短语来命名关联,以表明源对象在⽬标对象上执⾏的动作。关联的名称并不是必需的,只有在需要明确地给关联提供⾓⾊名,或⼀个模型存在很多关联且要查阅、区别这些关联时,才有必要给出关联名称。
⾓⾊:当⼀个类处于关联的某⼀端时,该类就在这个关系中扮演⼀个特定的⾓⾊。具体来说,⾓⾊就是关联关系中⼀个类对另⼀个类所表现的职责。当它们由这个关系的实例所连接时,⾓⾊名称应该是名词或者是名词短语。⾓⾊是⼀个很重要的修饰符。有时候⼀个类和另外⼀个类关联的时候,其关联的业务含义需要加以描述读者才能理解,也有⼀个类扮演多种⾓⾊的情况。例如有⼀个客户类和订单类关联,客户就可以在订单⾥⾯扮演多种⾓⾊,例如“下单⼈”、“收获⼈”、“⽀付⼈”,这个时候“⾓⾊”就很有助于理解⼀个类和其他类关联时候所具备的业务含义。⾓⾊的名称标注在关联关系靠近⼀侧。
多重性(Multiplicity):约束是UML三⼤扩展机制之⼀,多重性是其中的⼀种约束,也是使⽤最⼴泛的约束。关联的多重性是指有多少对象可以参与该关联,多重性可以⽤来表达⼀个取值范围、特定值、⽆
限定的范围或⼀组离散值。多重性的语法
0..1:0或者1
1:恰好为1
0..*:0或者更多
鞋帮
1..*:1或者更多
*:0或者更多
⽅向。关联关系从⽅向来分类可以分成单向关联和双向关联。单向关联有箭头、⽽双向关联没有箭头。例如,”订单“和买家"可以双向关联,⽽订单和地址是单向关联,订单可以关联到地址,⽽地址不能关联到订单。还存在可以建成双向关系,也可以建成单向关系的
情况,还是以“订单”和“收货⼈”为例,如果系统没有从“收货⼈”查关联的“订单”的需求,就使⽤从“订单”指向“收货⼈”的单向关联,⽽先不建⽴双向的关联。
关联关系和依赖关系的不同之处在于,依赖关系想表达的是对象之间临时的、动态的关系,例如⼀个
邮件发送的服务依赖了邮件服务器,⽽关联关系想表达的是对象和对象之间稳定的、强烈的关系,例如⽗亲和⼉⼦直接的关系。
聚合关系(Aggregation)
聚合关系是⼀种特殊类型的关联,它表⽰整体与部分关系的关联。简单地说,关联关系中⼀组元素组成了⼀个更⼤、更复杂的单元,这种关联关系就是聚合。例如订单是有多个订单⾏组成的。汽车可以由发动机、车架等部件聚合⽽成,发动机和车架都是独⽴⽣产的。聚合关系是⽤空⼼菱形头的实线组成,其头部指向整体。聚合关系有关联关系的修饰符
组合关系(Composition)
组合关系是聚合关系中的⼀种特殊情况,是更强形式的聚合,⼜被称为强聚合。在组合中,成员对象的⽣命周期取决于聚合的⽣命周期,聚合不仅控制着成员对象的⾏为,⽽且控制着成员对象的创建和解构。例如订单是由订单⾏组合⽽成,订单⾏的⽣命周期取决于订单,不能独⽴存在。组合关系是⽤实⼼菱形头的实线组成。组合关系有关联关系的修饰符
案例
这个案例⾥⾯订单可以分成采购订单和销售订单,两者都是订单所以都有订单的共同抽象,例如采购
订单⾥⾯有供应商的信息可以对应到订单⾥⾯的卖家,但两种类型的订单也有各⾃特有的业务信息,⽐如销售订单⾥⾯要记录对应的销售和提成。销售订单的买家是客户,⽽采购订单的买家是本企业内的某个机构、卖家是供应商,所以抽象出当事⼈这个概念⽤于统⼀客户、供应商、企业组织机构。订单⾏和订单是组合的关系,⼀个订单对应⼀到多个订单⾏。订单⾏⾥⾯涉及到具体订购什么产品、数量等,销售订单⾏⾥⾯包括了销售提成等销售订单特有的业务信息。订单的状态发⽣变化以后需要触发相应的业务流程,例如发货以后通知买家和收货⼈。所以抽象⼀个公共的订单事件监听接⼝,由具体的业务进⾏实现,这些实现依赖消息⽹关,调⽤消息⽹关的发送服务。
编写类图的要点
1. 组合关系是强聚合关系,在组合关系中,成员对象的⽣命周期完全由整体对象管理。
2. 关联关系、组合关系、聚合关系上有“⾓⾊”修饰符,这个修饰符能说明⼀个对象和另外⼀个对象关联时候扮演的⾓⾊。
3. 依赖关系⽤于描述对象间临时的、动态的关系,依赖关系是有⽅向的,以避免对象间出现循环依赖的情况。
4. ⾯向对象的设计不等同于数据库ER图的设计,是先有类图的设计作为数据库设计的输⼊,⽽不是反过来。

本文发布于:2024-09-24 09:26:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/100584.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:关系   关联   订单   对象   依赖   聚合   类图   实现
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议