成都个人做网站,钟情建网站公司,在线直播系统开发,什么时候网站建设目录 前言第7章 面向对象技术 #xff08;上#xff09;7.1 面向对象基础(3-4分#xff09;7.1.1 面向对象的基本概念7.1.2 面向对象分析#xff08;熟记#xff09;7.1.3 面向对象设计7.1.4 面向对象程序设计7.1.5 面向对象测试 7.2 UML(3~4分)7.2.1 事务7.2.2 关系7.2.2… 目录 前言第7章 面向对象技术 上7.1 面向对象基础(3-4分7.1.1 面向对象的基本概念7.1.2 面向对象分析熟记7.1.3 面向对象设计7.1.4 面向对象程序设计7.1.5 面向对象测试 7.2 UML(3~4分)7.2.1 事务7.2.2 关系7.2.2.1 多重度 7.2.3 UML中的的图 结语 前言
在备考软件设计师中级考试的过程中我遇到了些许挑战也收获了宝贵的经验。为了帮助其他同样正在为这门考试证书奋斗的朋友们我决定将我的笔记整理出来与大家分享。这些笔记不仅包含了书本上的知识还加入了我对重点和难点的个人理解以及考试技巧力求帮助大家更加高效地复习。我希望这份笔记能够成为你备考路上的一份支持也祝愿你在考试中取得理想的成绩
如果有写的不好或者需要改进的地方恳请在评论区指正 第7章 面向对象技术 上
7.1 面向对象基础(3-4分
7.1.1 面向对象的基本概念 对象 在面向对象的系统中对象是基本的运行时的实体它既包括数据属性)也包括作用于数据的操作行为)。所以一个对象把属性和行为封裝为一个整体。封装是一种信息隐蔽技术它的目的是使对象的使用者和生产者分离使对象的定义和实现分开。从程序设计者来看对象是一个程序模块从用户来看对象为他们提供了所希望的行为。在对象内的操作通常称为方法。一个对象通常可由对象名、属性(状态)和方法3个部分组成。 消息 对象之间进行通信的一种构造叫作消息。当一个消息发送给某个对象时包含要求接收对象去执行某些活动的信息。接收到信息的对象经过解释然后子以响应。这种通信机制称为消息传递。发送消息的对象不需要知道接收消息的对象如何对请求予以响应。 类 类可以分为三种实体类、接口类边界类和控制类。实体类的对象表示现实世界中真实的实体如人、物等。接口类边界类的对象为用户提供一种与系统合作交互的方式分为人和系统两大类其中人的接口可以是显示屏、窗口、Web 窗体、对话框、菜单、列表框、其他显示控制、条形码、二维码或者用户与系统交互的其他方法。系统接口沙及到把数据发送到其他系统或者从其他系统接收数据。控制类的对象用来控制活动流充当协调者。 例题 在面向对象分析与设计中38是应用领域中的核心类一般用于保存系统中的信息以及提供针对这些信息的相关处理行为39是系统内对象和系统外参与者的联系媒介40主要是协调上述两种类对象之间的交互。(2009 年上半年 (38A. 控制类 B. 边界类 C.实体类 D.软件类 (39A. 控制类 B. 边界类 C. 实体类 D. 软件类 (40) A. 控制类 B. 边界类 C.实体类 D. 软件类 答案C B A在某销售系统中容户采用扫描二维码进行支付。若采用面向对象方法开发该销售系统则客户类属于39类二维码类属于40类。2018 年下半年 (39) A. 接口 B.实体 C.控制 D.状态 (40) A. 接口 B.实体 C.控制 D.状态 答案BA在面向对象的系统中对象是运行时实体其组成部分不包括37一个类定义了一组大体相似的对象这些对象共享38。2015 年下半年 (37 A. 消息 B. 行为操作 C.对象名 D.状态 (38 A. 属性和状态 B. 对象名和状态 C. 行为和多重度 D. 属性和行为 答案A;D 方法重载 在Java中方法重载是指在同一个类中定义多个同名但参数列表不同的方法。方法的参数列表包括参数的个数、类型或顺序。通过方法重载可以根据不同的参数来调用相应的方法。 方法重载的特点包括 方法名必须相同但参数列表必须不同。方法的返回类型可以相同也可以不同。方法的修饰符可以相同也可以不同。方法的异常类型可以相同也可以不同。 封装 在Java中封装是面向对象编程的一个重要概念它将数据和对数据的操作封装在一个类中通过访问修饰符控制对数据的访问权限。封装的目的是保护数据的完整性隐藏实现细节提供公共接口供其他对象使用。 封装通过以下方式实现 访问修饰符Java提供了访问修饰符如public、private、protected和默认无修饰符。这些修饰符用于控制类、属性和方法的访问级别。 public任何类都可以访问。private只能在声明的类内部访问。protected只能在相同包内或子类中访问。默认无修饰符只能在相同包内访问。 Getter和Setter方法通过定义公共的Getter和Setter方法来访问和修改私有属性。Getter方法用于获取属性的值Setter方法用于设置属性的值。这样可以控制对属性的读取和修改确保数据的一致性和安全性。 封装提供了许多优点包括 数据隐藏封装隐藏了类的实现细节只暴露必要的接口防止直接访问和修改对象的内部数据。数据安全性通过访问修饰符和Getter、Setter方法的控制可以防止未经许可的访问和修改数据提高了数据的安全性。代码灵活性封装使得类的实现和内部结构可以灵活修改而不影响其他类的使用。类的内部实现可以进行优化或改进而不需要影响外部调用方的代码。 总之封装是面向对象编程中重要的概念通过访问修饰符和Getter、Setter方法来控制对类的属性和方法的访问提高了代码的可维护性、安全性和灵活性。 习题 一个类是38〉。在定义类时将属性声明为 private 的目的是39。(2011年下半年 38 A. 一组对象的封装 B. 表示一组对象的层次关系 C.一组对象的实例 D.一组对象的抽象定义 (39 A. 实现数据隐藏以免意外更改 B.操作符重载 C.实现属性值不可更改 D. 实现属性值对类的所有对象共享 答案DA在面向对象软件开发中封装是一种42技术其目的是使对象的使用者和生产者分离。2011 年下半年 (42) A. 接口管理 B. 信息隐藏 C.多态 D.聚合 答案B面向对象程序设计语言 C、JAVA中关键字37可以用于区分同名的对象属性和局部变量名。2020年下半年 (37) A. private B. protected C. public D. this 答案D 继承 继承是父类和子类之间共享数据和方法的机制。这是类之间的一种关系在定义和实现一个类的时候可以在一个已经存在的类的基础上进行把这个己经存在的类所定义的内容作为自己的内容并加入若干新的内容。图7-1表示了父类A 和它的子类B之间的继承关系。 一个父类可以有多个子类这些子类都是父类的特例父类描述了这些子类的公共属性和方法。一个子类可以继承它的父类或祖先类中的属性和方法这些属性和操作在子类中不必定义子类中还可以定义自己的属性和方法。 图7-1中的B只从一个父类A 得到继承叫作“单重继承”。如果一个子类有两个或更多个交类则称为“多重继承”。 习题 以下关于面向对象继承的叙述中错误的是37。2010 年上半年 A.继承是父类和子类之间共享数据和方法的机制 B.继承定义了一种类与类之间的关系 C.继承关系中的子类将拥有父类的全部属性和方法 D.继承仅仅允许单重继承即不允许一个子类有多个父类 解析面向对象技术中继承是父类和子类之间共享数据和方法的机制。这是类之间的一种关系在定义和实现一个类的时候可以在一个己经存在的类的基础上来进行把这个已经存在的类所定义的内容作为自己的内容并加入若干新的内容。可以存在多重继承的概念但不同的程序设计语言可以有自己的规定。 参考答案(37) D 在面向对象技术中41定义了超类和子类之间的关系子类中以更具体的方式实现从父类继承来的方法称为42不同类的对象通过43相互通信。2013年下半年 (41 A. 覆盖 B.继承 C.消息 D.多态 (42) A. 覆盖 B. 继承 C. 消息 D. 多态 (43) A. 覆盖 B.继承 C.消息 D.多态 答案B;A;C “超类”的别名是“父类”“基类”“子类”的别名是“派生类” 在面向对象方法中两个及以上的类作为一个类的超类时称为37使用它可能造成子类中存在_38的成员。2017 年上半年 A. 多重继承 B. 多态 C.封装 D. 层次继承 A. 动态 B. 私有 C.公共 D. 二义性 答案A;D 多态 在收到消息时对象要子以响应。不同的对象收到同一消息可以产生完全不同的结果这一现象称为多态Polymorphism)。在使用多态的时候用户可以发送一个通用的消息而实现的细节则由接收对象自行决定。这样同一消息就可以调用不同的方法。 多态的实现受到继承的支持利用类的继承的层次关系把具有通用功能的消息存放在高层次而不同的实现这一功能的行为放在较低层次在这些低层次上生成的对象能够给通用消息以不同的响应。 多态有不同的形式Cardelli 和 Wegner 把它分为4类如下所示。其中参数多态和包含多态称为通用的多态过载多态和强制多态称为特定的多态。 参数多态是应用比较广泛的多态被称为最纯的多态。包含多态在许多语言中都存在最常见的例子就是子类型化即一个类型是另一个类型的子类型。过载Overloading)多态是同一个名字在不同的上下文中所代表的含义不同。 多态指的是某类(客户类)无需知道所调用方法的特定子类的实现。 动态绑定 绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中绑定是在编译时进行的叫作静态绑定。动态绑定则是在运行时进行的因此一个给定的过程调用和代码的结合直到调用发生时才进行。 动态绑定是和类的继承以及多态相联系的。在继承关系中子类是父类的一个特例所以父类对象可以出现的地方子类对象也可以出现。因此在运行过程中当一个对象发送消息请求服务时要根据接收对象的具体情况将请求的操作与实现的方法进行连接即动态绑定。
7.1.2 面向对象分析熟记
同其他分析方法一样面向对象分析 (Object-Oriented Analysis, 00A 的目的是为了获得对应用问题的理解。理解的目的是确定系统的功能、性能要求。面向对象分析方法与功能/数据分析法之间的差别是前期的表述含义不同。功能/数据分析法分开考虑系统的功能要求和数据及其结构面向对象分析方法是将数据和功能结合在一起作为一个综合对象来考虑。面向对象分析技术可以将系统的行为和信息间的关系表示为迭代构造特征。
面向对象分析包含5个活动认定对象、组织对象、描述对象间的相互作用、确定对象的操作、定义对象的内部信息。
认定对象 在应用领域中按自然存在的实体确立对象。在定义域中首先将自然存在的“名词”作为一个对象这通常是研究问题、定义域实体的良好开始。通过实体间的关系寻找对象常常没有问题困难在于寻找选择系统关心的实质性对象实质性对象是系统稳定性的基础。例如在银行应用系统中实质性对象应包含客户账务、清算等而门卫值班表不是实质性对象甚至可不包含在该系统中。组织对象 分析对象间的关系将相关对象抽象成类其目的是为了简化关联对象利用类的继承性建立具有继承性层次的类结构。抽象类时可从对象间的操作或一个对象是另一个对象的一部分来考虑如房子是由门和窗构成的。由对象抽象类通过相关类的继承构造类层次所以说系统的行为和信息间的分析过程是一种迭代表征过程。对象间的相互作用 描述出各对象在应用系统中的关系如一个对象是另一个对象的一部分一个对象与其他对象间的通信关系等。这样可以完整地描述每个对象的环境由一个对象解释另一个对象以及一个对象如何生成另一个对象最后得到对象的界面描述。基于对象的操作 当考虑对象的界面时自然要考虑对象的操作。其操作有从对象直接标识的简单操作如创建、增加和删除等也有更复杂的操作如将几个对象的信息连接起来。一般而言避免对象太复杂比较好当连接的对象太复杂时可将其标识为新对象。当确定了对象的操作后再定义对象的内部对象内部定义包括其内部数据信息、信息存储方法、继承关系以及可能生成的实例数等属性。 分析阶段最重要的是理解问题城的概念其结果将影响整个工作。经验表明从应用定义域概念标识对象是非常合理的完成上述工作后写出规范文档文档确定每个对象的范围。 早期面向对象的目标之一是简化模型与问题城之间的语义差距。事实上面向对象分析的基础是软件系统结构这依赖于人类看待现实世界的方法。当人们理解求解问题的环境时常采用对象、分类法和层次性这类术语。面向对象分析与功能/数据分析方法相比面向对象的结果比较容易理解和管理。面向对象分析方法的另一个优点是便于修改早期阶段的修改容易提高软件的可靠性。
面向对象分析侧重于理解问题、系统责任面向对象分析描述软件要做什么面向对象设计侧重于理解解决方案
7.1.3 面向对象设计
面向对象设计 (Objiect-Oriented Design OOD是将 OOA 所创建的分析模型转化为设计模型其目标是定义系统构造蓝图。通常的情况是由概念模型生成的分析模型被装入到相应的执行环境中时需要考虑实现问题加以调整和增补如根据所用编程语言是否支持多继承或继承而调整类结构。OOA与OOD之间不存在鸿沟采用一致的概念和一致的表示法OOD同样应遵循抽象、信息隐蔽、功能独立、模块化等设计准则。
面向对象设计的活动(熟记) OOD 在复用 OOA 模型的基础上包含与 OOA 对应如下五个活动。 (1)识别类及对象。 (2)定义属性。 (3)定义服务。 (4)识别关系。 (5)识别包。面向对象设计的原则【必背知识点】 (1)单一责任原则 (Sinele Responstbility Prineiple, SRP)。就一个类而言应该仅有一个引起它变化的原因。即当街要修改菜个类的时候原因有且只有一个让一个类只做一种类型责任。 (2)开放-封闭原则(Open Close Principle, OCP)。软件实体类、模块、函数等应该是可以扩展的即开放的但是不可修改的即封闭的。对扩展开放修改关闭 (3)里氏替换原则(Liskoy Substitution Principle, LSP)。子类型必须能够替换掉他们的基类型。即在任何父类可以出现的地方都可以用子类的实例来赋值给父类型的引用。当一个子类的实例应该能够替换任何其超类的实例时它们之间才具有是一个is-a关系。基类出现的地方子类一定可以出现 (4)依赖倒置原则(Dependence Inversion Prineiple DIP)。抽象不应该依赖于细节细节应该依赖于抽象。即高层模块不应该依赖于低层模块二者都应该依赖于抽象。依赖于抽象而不依赖于细节(实现) (5)接口分离原则(Interface Segregation PrineipleIsP)。不应该强迫客户依赖于它们不用的方法。接口属于客户不属于它所在的类层次结构。即依赖于抽象不要依赖于具体同时在抽象级别不应该有对于细节的依赖。这样做的好处就在于可以最大限度地应对可能的变化。 上述15是面向对象方法中的五大原则。除了这五大原则之外Robert C. Martin提出的面向对象设计原则还包括以下几个。 (6)重用发布等价原则 (Release Reuse Eguivalency Principle, REP)。重用的粒度就是发布的粒度。 (7)共同封闭原则(Common Closure Principle, CCP)。包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响则将对该包中的所有类产生影响而对于其他的包不造成任何影响。 (8)共同重用原则(Common Reuse Principle, CRP)。一个包中的所有类应该是共同重用的。如果重用了包中的一个类那么就要重用包中的所有类。 (9) 无环依赖原则 (Acyclie Dependencies Principle, ADP)。在包的依赖关系图中不允许存在环即包之间的结构必须是一个直接的五环图形。 (10) 稳定依赖原则(Stable Dependencies Principle SDP)。朝着稳定的方向进行依赖。 (11) 稳定抽象原则(Stable Abstractions Principle, SAP)。包的抽象程度应该和其稳定程度一致。
7.1.4 面向对象程序设计
类继承和类层次结构对象、消息传递和方法对象自身引用重置类属类无实例的类
7.1.5 面向对象测试
熟记 (1)算法层。测试类中定义的每个方法基本上相当于传统软件测试中的单元测试。 (2)类层。测试封装在同一个类中的所有方法与属性之间的相互作用。在面向对象软件中类是基本模块因此可以认为这是面向对象测试中所特有的模块测试。 (3)模板层。测试一组协同工作的类之间的相互作用大体上相当于传统软件测试中的集成测试但是也有面向对象软件的特点例如对象之间通过发送消息相互作用)。 (4)系统层。把各个子系统组裝成完整的面向对象软件系统在组装过程中同时进行测试。软件工程中传统的测试用例设计技术如逻辑覆盖、等价类划分和边界值分析等方法仍然可以作为测试类中每个方法的主要技术。面向对象测试的主要目标也是用尽可能低的测试成本和尽可能少的测试用例发现尽可能多的错误。但是面向对象程序中特有的封裝、继承和多态等机制也给面向对象测试带来一些新特点增加了测试和调试的难度。
7.2 UML(3~4分)
7.2.1 事务
UML中有4种事物结构事物、行为事物、分组事物和注释事物。 (1) 结构事物Struetural Thing)。结构事物是 UML模型中的名词。它们通常是模型的静态部分描述概念或物理元素。结构事物包括类(Class、接口(Interface、协作 (Collaboration)、用例(Use Case)、主动类 (Active Class)、构件(Component)、制品(Artifact和结点(Node)。各种结构事物的图形化表示如图7-2所示。
(2) 行为事物 (Behavior thing)。行为事物是 UML 模型的动态部分。它们是模型中的动词描述了跨越时间和空间的行为。行为事物包括交互(Interaction、状态机State Machine)和活动Activity)。各种行为事物的图形化表示如图7-3 所示。
(3) 分组事物(Grouping Thing)。分组事物是 UIML模型的组织部分是一些由模型分解成的“盒子”。在所有的分组事物中最主要的分组事物是包Package)。包是把元素组织成组的机制这种机制具有多种用途。结构事物、行为事物甚至其他分组事物都可以放进包内。包与构件仅在运行时存在不同它纯粹是概念上的即它仅在开发时存在)。包的图形化表示如图 7-4所示。
(4) 注释事物(Annotational Thing)。注释事物是 UML 模型的解释部分。这些注释事物用来描述、说明和标注模型的任何元素。注解Note是一种主要的注释事物。注解是一个依附于一个元素或者一组元素之上对它进行约束或解释的简单符号。注解的图形化表示如图 7-5所示。 7.2.2 关系
UML中有4 种关系依赖、关联、泛化和实现。 1依赖 Dependeney)。依赖是两个事物间的语义关系其中一个事物独立事物发生变化会影响另一个事物依赖事物的语义。在图形上把一个依赖画成一条可能有方向的虚线如图7-6所示。 2关联(Association)。关联是一种结构关系它描述了一组链链是对象之间的连接。聚集 (Aggregation是一种特殊类型的关联它描述了整体和部分间的结构关系。关联和聚集的图形化表示如图 7-7 和图 7-8 所示。 聚合部分和整体的生命周期不一致整体消失了部分仍然存在部分可以脱离整体存在。 组合部分和整体的生命周期一致整体消失了部分也消失了部分不可以脱离整体而存在。
在关联上可以标注重复度Multiplicity和角色 (Role)。 3泛化(Generalization)。泛化是一种特殊/一般关系特殊元素子元素的对象可替代一般元素父元素的对象。用这种方法子元素共享了父元素的结构和行为。在图形上把一个泛化关系画成一条带有空心箭头的实线它指向父元素如图 7-9 所示。 4实现(Realization)。实现是类元之间的语义关系其中一个类元指定了由另一个类元保证执行的契约。在两种情况下会使用实现关系一种是在接口和实现它们的类或构件之间另一种是在用例和实现它们的协作之间。在2024年4月7日图形上把一个实现关系画成一条带有空心箭头的虚线如图7-10 所示。 这4种关系是UML 模型中可以包含的基本关系事物。它们也有变体例如依赖的变体有精化、跟踪、包含和延伸。
7.2.2.1 多重度
进行面向对象设计时类图中可以展现类之间的关联关系还可以在类图中图示关联中的数量关系即多重度。表示数量关系时用多重度说明数量或数量范围表示有多少个实例对象能被连接起来即一个类的实例能够与另一个类的多少个实例相关联。
把一组对象的共同特征加以抽象并存储在一个类中不同个数的类之间可能有不同的关系。关联关系是类之间的一种结构关系描述了对象之间连接的一组链。一辆汽车中有多个座位一个座位隶属于一辆汽车。一个主人可以养多只宠物一只宠物有一个或同一家庭的多个主人。医生可以为多个病人看病病人也可以去找多位医生看病而且同一个病人可以在不同时间多次找同一个医生看病这一过程只通过关联关系难以建模出两者之间的关系需要在关联关系上创建新的类。一个部门有多名员工一个员工隶属于一个部门。
7.2.3 UML中的的图
图Diagram是一组元素的图形表示大多数情况下把图画成顶点代表事物和弧代表关系的连通图。为了对系统进行可视化可以从不同的角度面图这样图是对系统的投影。UML 2.0 提供了 13 种图分别是类图、对象图、用例图、序列图、通信图、状态图、活动图、构件图、组合结构图、部署图、包图、交互概览图和计时图。序列图、通信图、交互概览图和计时图均被称为交互图。
类图 类图(Class Diagram展现了一组对象、接口、协作和它们之间的关系。在面向对象系统的建模中所建立的最常见的图就是类图。类图给出系统的静态设计视图。包含主动类的类图给出了系统的静态进程视图。 类图中通常包括下述内容如图 7-11 所示)。 (1)类。 (2)接口。 (3)协作。 (4)依赖、泛化和关联关系。 类图中也可以包含注解和约束。类图还可以含有包或子系统二者都用于把模型元茶聚集成更大的组块。
类图用于对系统的静态设计视图建模。这种视图主要支持系统的功能需求即系统要提供给最终用户的服务。当对系统的静态设计视图建模时通常以下述3种方式之一使用类图。
(1)对系统的词汇建模。 (2)对简单的协作建模。 (3)对逻辑数据库模式建模。 对象图 对象图(Objeet Diagram 展现了某一时刻一组对象以及它们之间的关系描述了在类图中所建立的事物的实例的静态快照。对象图一般包括对象和链如图 7-12所示。 对象名的三种表示法如下 对象名:类名stu:Student标准表示法:Student 匿名表示法stu省略类名的表示法 用例图 用例图Use Case Diagram展现了一组用例、参与者Actor以及它们之间的关系。 用例图通常包括以下内容如图7-13 所示)。 (1)用例。 (2)参与者。 (3)用例之间的扩展关系extend和包含关系sinclude)参与者和用例之间的关联关系用例与用例以及参与者与参与者之间的泛化关系。 关联是参与者和用例之间的关系包含是用例和用例之间的关系扩展是用例和用例之间的关系 一个用例执行的时候可能会发生一些特殊的情况或可选的情况 泛化是参与者和参与者之间的关系也是用例和用例之间的关系 当对系统的静态用例视图建模时可以用下列两种方式来使用用例图。 (1) 对系统的语境建模。对一个系统的语境进行建模包括围绕整个系统画一条线并声明有哪些参与者位于系统之外并与系统进行交互。在这里用例图说明了参与者以及它们所扮演的角色的含义。 (2) 对系统的需求建模。对一个系统的需求进行建模包括说明这个系统应该做什么(从系统外部的一个视点出发),而不考虑系统应该怎样做。在这里用例图说明了系统想要的行为。通过这种方式用例图使我们能够把整个系统看作一个黑盒子采用矩形框表示系统边界可以观察到系统外部有什么,系统怎样与哪些外部事物相互作用但却看不到系统内部是如何工作的。 交互图 交互图用于对系统的动态方面进行建模。一张交互图表现的是一个交互由一组对象和它们之间的关系组成包含它们之间可能传递的消息。交互图表现为序列图、通信图、交互概览图和计时图每种针对不同的目的能适用于不同的情况。序列图是强调消息时间顺序的交互图通信图是强调接收和发送消息的对象的结构组织的交互图交互概览图强调控制流的交互图。 序列图顺序图 序列图(Sequence Diagram 是场景Scenario的图形化表示描述了以时间顺序组织的对象之间的交互活动。如图7-14所示 序列图有两个不同于通信图的特征。 (1)序列图有对象生命线。对象生命线是一条垂直的虚线表示一个对象在一段时间内存在。 (2)序列图有控制焦点。控制焦点是一个瘦高的矩形表示一个对象执行一个动作所经历的时间段既可以是直接执行也可以是通过下级过程执行。矩形的顶部表示动作的开始底部表示动作的结束可以由一个返回消息来标记。 通信图 通信图(Communication Diagram 强调收发消息的对象的结构组织在早期的版本中也被称作协作图。通信图强调参加交互的对象的组织。产生一张通信图如图 7-15所示首先要将参加交互的对象作为图的顶点然后把连接这些对象的链表示为图的弧最后用对象发送和接收的消息来修饰这些链。这就提供了在协作对象的结构组织的语境中观察控制流的一个清晰的可视化轨迹。 通信图有两个不同于序列图的特性。 通信图展现了对象之间的消息流及其顺序 通信图有路径。 通信图有顺序号。为表示一个消息的时间顺序可以给消息加一个数字前缀从1号消息开始)在控制流中每个新消息的顺序号单调增加如2、3 等)。为了显示联套可使用带小数点的号码1 表示第一个消息1.1 表示嵌套在消息1中的第一个消息1.2 表示嵌套在消息1中的第二个消息等等)。嵌套可为任意深度。还要注意的是沿同一个链可以显示许多消息可能发自不同的方向)并且每个消息都有唯一的一个顺序号。序列图和通信图是同构的它们之间可以相互转换。 序列图和通信图是同构的它们之间可以相互转换。 状态图 状态是状态机图的重要组成部分它描述了一个对象稳定处于的某一个持续过程或所处状况与动态行为的执行所产生的结果。当对象满足某一状态的条件时该状态被称为激活的。 在 UML,中,状态分为简单状态与复合状态。简单状态就是没有嵌套的状态,一般表示为具有一个或两个分档的圆角矩形。初态(initial state)和终态(final state)是两个特殊的状态分别表示状态机的人口状态和出口状态。对于一个不含嵌套结构的状态机,只能有一个初态,可以有一个或多个终态甚至没有终态。初态表示为一个小的实心圆,终态表示为初态的符号外部再围上一个圆。图10-2显示了简单状态的各种表示法。 三种标准事件entryexitdo entry入口动作进入状态立即执行 exit出口动作退出状态立即执行 do内容不活动占有优先时间并可以中断的工作 调用事件(call event)改变事件(change event)信号事件(signal event)时间事件(time event)
【熟记】 转换包括两个状态源状态目标状态事件监护条件动作 时间触发转换迁移 活动动作可以在状态内执行也可以在状态转换迁移时执行。 状态图State Diagram 展现了一个状态机它由状态、转换、事件和活动组成。状态图关注系统的动态视图对于接口、类和协作的行为建模尤为重要强调对象行为的事件顺序。
可以用状态图对系统的动态方面建模。这些动态方面可以包括出现在系统体系结构的任何视图中的任何一种对象的按事件排序的行为这些对象包括类各主动类)、接口、构件和结点。 当对系统、类或用例的动态方面建模时通常是对反应型对象建模。 一个反应型或事件驱动的对象是这样一个对象其行为通常是由对来自语境外部的事件做出反应来刻画的。反应型对象在接收到一个事件之前通常处于空闲状态。当它接收到一个事件时它的反应常常依赖于以前的事件。在这个对象对事件做出反应后它就又变成闲状态等待下一个事件。对于这种对象将着眼于对象的稳定状态、能够触发从状态到状态的转换的事件以及当每个状态改变时所发生的动作。
用于描述一个对象在多个用例中的行为用于某些具有多个状态的对象而不是系统中大多数或者全部对象可以用于用户界面或控制对象 活动图 活动图 (Activity Diagram是一种特殊的状态图它展现了在系统内从一个活动到另一个活动的流程如图7-19 所示。活动图专注于系统的动态视图它对于系统的功能建模特别重要并强调对象间的控制流程。 活动图一般包括活动状态和动作状态、转换和对象。 活动图可以表示分支、合并、分岔和汇合。 当对一个系统的动态方面建模时通常有两种使用活动图的方式。 (1)对工作流建模。此时所关注的是与系统进行协作的参与者所观察到的活动。工作流常常位于软件系统的边缘用于可视化、详述、构造和文档化开发系统所涉及的业务过程。在活动图的这种用法中对对象流的建模是特别重要的常采用泳道将活动图中的活动状态分组。 (2)对操作建模。此时是把活动图作为流程图使用对一个计算的细节部分建模。在活动图的这种用法中对分支、合并、分岔和汇合状态的建模是特别重要的。用于这种方式的活动图语境包括该操作的参数和它的局部对象。 构件图组件图 构件图(Component Diagram 展现了一组构件之间的组织和依赖。构件图专注于系统的静态实现视图如图7-20 所示。它与类图相关通常把构件映射为一个或多个类、接口或协作。 组合构件图 部署图 部署图(Deployment Diagram是用来对面向对象系统的物理方面建模的方法展现了运行时处理结点以及其中构件制品的配置。部署图对系统的静态部署视图进行建模它与构件图相关。通常一个结点是一个在运行时存在并代表一项计算资源的物理元素至少拥有一些内容常常具有处理能力包含一个或多个构件。部署图如图 723 所示其中attifact表示制品。 部署图展现了系统的软件和硬件之间的关系在实施阶段使用 静态建模类图、对象图、用例图 动态建模序列图顺序图时序图、通信图协作图、状态图、活动图 物理建模构件图组件图、部署图 交互图序列图顺序图时序图、通信图协作图 结语
这份笔记由我在备考软件设计师中级考试的过程中编写包含了我对知识点的理解与总结。如果您觉得这份笔记对您有帮助并希望分享给更多的人我十分乐意。但请在转载时务必注明出处以尊重作者的劳动成果感谢您的理解与支持。
在此特别强调本人编写笔记的所需部分资源均源于网络公开资源旨在为大家提供一个学习和交流的内容未经原作者授权如若不慎侵犯您的合法权益请您立即通过有效联系方式通知我并附上相关证明材料。一旦核实无误我将在第一时间删除涉事资源全力保障您的合法权利不受损害。 每篇一句“没有白费的努力也没有碰巧的成功。只要认真对待生活终有一天你的每一份努力都将绚烂成花。” 如果觉得对您有用请点个赞或者收藏鼓励我持续更新吧【努力加更中……】 恭喜您已挑战成功第七关上请前往第七关下进行挑战吧【整理中……】