目录
一、下午题总结(试题三)(⭐⭐⭐)
1、第一问
1.补全用例图中参与者和用例名称
- ①一般情况下用例图中都会出现英文,注意填写名字时与图中的英文相对应。
- ②注意说明中出现的“如果......那么.......”、“若......那么.......”(出现这种可选可不选的情况)可以理解为是扩展用例,对应扩展extend中的特殊情况。
- ③如果某一关键词仅仅在某一句中出现,一定要注意此段中的必然联系。
2、第二问
1.给出类图中对应的名称
- ①注意与图中的英文相对应的名词。
3、第三问
1.简要解释用例之间的include(包含)、extend(扩展)、generalize(泛化)关系的内涵。
- include(包含):一个用例包含另一个用例,当基本用例执行时,被包含用例一定会执行。包含关系由基本用例指向被包含用例,关系是一条带箭头的虚线,虚线上包含<<include>>
- extend(扩展):当一个用例执行时,可能会出现特殊情况和可选情况,这个时候就会执行扩展用例。扩展关系由扩展用例指向基本用例,关系是一条带箭头的虚线,虚线包括<<extend>>
- generalize(泛化):父用例泛化子用例,子用例继承父用例的所有属性和行为,并且子用例可以将父用例替换。空心箭头子用例指向父用例。
2.根据说明中的描述,给出在线购买书籍的用例描述。(用例描述中必须包括基本事件流和所有的备选事件流)
注册成功的顾客可以登录系统在线购买书籍(Buy books)。 购买时可以浏览书籍信息,包括书名(title)、 作者(author)、内容简介(introduction)等。 如果某种书籍的库存量为0,那么顾客无法查询到该书籍的信息。 顾客选择所需购买的书籍及购买数量(quantities), 若购买数量超过库存量,提示库存不足; 若购买数量小于库存量,系统将显示验证界面,要求顾客输入注册码。 注册码验证正确后,自动生成订单(Order), 否则,提示验证码错误。如果顾客需要,可以选择打印订单(Print order)。 ---------------------------------------------------------------- 一、基本事件流: 顾客登陆系统,顾客浏览书籍信息、顾客选择所需购买是书籍及购买质量、 系统显示验证信息、顾客输入注册码、系统自动生成订单。 二、备选事件流: 1.如果某种书籍的库存量为0,那么顾客无法查阅到该书籍的信息。 2.如果购买数量超过库存量,提示库存不足。 3.注册验证码错误,提示验证码错误。 4.如果顾客需要,可以打印订单。
二、面向对象基本概念(⭐⭐)
- 面向对象方法包括:面向对象分析、面向对象设计、面向对象实现
- 面向对象=对象+分类+继承+通过消息的信息
- 三大特征:封装、继承、多态。
- 基础:抽象是面向对象的基础(类是对象的抽象,对象是类的实例)。
1.对象:是基本的运行实体,既包括(数据、状态、成员变量)【属性】,也包括作用于数据的(操作、方法、函数)【行为】。
- 对象是封装一组属性和行为的整体。
- 对象的特性:具有清晰的边界、良好定义的行为、可扩展性
2.消息:对象之间进行通信的一种构造叫做消息。
3.类:定义了一组大体相似的对象结构。
- 一个类所包含的方法和数据描述一组对象的共同行为和属性。
- 类是对象的抽象,对象是类的实例。
- 类可以分为三种:实体类、接口类(边界类)、控制类。
- 实体类:对必须存储的信息和相关行为建模的类,应用领域的核心类。
- 边界类:系统内部与系统外部的业务主角之间进行交互建模的类。
- 控制类:用于对一个或几个用例所特有的控制行为进行建模,充当协调者。
4.封装:是一种信息隐蔽技术。
- 目的:使对象的使用者和生产者分离。
- 不需要知道软件内部是如何工作的,只需要知道如何使用组件。
- 当类中设计为private(权限修饰符)时,只有此类中定义的方法才能进行访问。
5.继承:父类和子类之间共享数据和方法的机制(在已存在类中创建新类)。
- (父类=超类=基类)(子类=派生类)(一个父类可以有多个子类)
- 一个子类继承父类的属性和操作(不必再重复定义,但前提是非私有化private)
- 子类可以创建自己的属性和操作,从而覆盖父类的行为。
6.多态:不同对象收到同一个消息可以产生完全不同的结果(由继承机制来支持)。分为如下四类:
- 参数多态(不同类型参数多种结构类型):比较广泛的多态,最纯的多态。
- 包含多态(父子类型关系):许多语言中都存在,子类型化。
- 过载多态(类似于重载,一个名字不同含义):同一名字在不同上下文含义不同。
- 强制多态(强制类型转换)
7.绑定:在编译时绑定叫做静态绑定,在运行时绑定叫做动态绑定。(动态绑定是和类的继承以及多态相联系的)
8.函数重载:与覆盖要区分开,函数重载与子类父类无关,且函数是同名不同参数。
9.经典例题
三、面向对象开发技术(⭐⭐)
1.面向对象分析(OOA):侧重于理解问题(抽取和整理用户需求并建立问题域精确模型)。
- 面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、确定对象的操作、定义对象的内部信息。
2.面向对象设计(OOD):侧重于解决方案。(协作以满足需求、延续分析)
- OOD在复用OOA的基础上包含了对应的五个活动:识别类与对象、定义属性、定义服务、识别关系、识别包。
3.面向对象测试(OOT):分为算法层、类层、模板层、系统层四个层次设计。
面向对象五大设计原则:
- ①单一责任原则:就一个类而言,应该仅有一个引起它变化的原因。
- ②开放-封闭原则:软件实体应该是可以扩展开放的;但是不可修改的 ,即封闭的。
- ③里氏替换原则:子类型必须能够替换掉它们的基类型,基类出现的地方子类一定可以出现。
- ④依赖倒置原则:细节依赖于抽象但不依赖于细节。(高层模块不应该依赖于底层模块,二者都应该依赖于抽象)
- ⑤接口分离原则:依赖于抽象而不依赖于实体。
- ⑥共同重用原则:如果重用了包中一个类,那么就要重用包中所有的类。
- ⑦共同封闭原则:一个变化若对一个包产生影响,则将对该包所有的类产生影响, 而对于其它的包不构成任何影响。
四、UML概述(⭐⭐⭐)
UML 是统一建模语言,和程序设计语言并无关系。
- UML3种构造块:事物(对模型中最具有代表性的成分的抽象)、关系(把事务结合在一起)、图(聚集了相关的事物)。
1、事物
UML中有4种事物:结构事物、行为事物、分组事物、注释事物。
- 结构事物:是UML模型的静态部分,描述概念或物理元素。(包括:类、接口、协作、用例、主动类、构件、制品、结点)
- 行为事物:是UML模型的动态部分,描述了跨越时间和空间的行为。(包括:交互、状态、活动)
- 分组事物:是UML模型的组织部分。最主要的分组事物是包(Package)。
- 注释事物:是UML模型的解释部分。注解是一种主要的注释事物。
2、关系
UML中有4种关系:依赖、关联、泛化、实现(关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖)
1.依赖:一个事物变化会影响另一个事物(带箭头的虚线,指向被使用者)。
2.关联:对象之间的连接。
- 组合:部分不可以脱离整体存在(生命周期相同)。
- 聚合:部分可以脱离整体存在。
3.泛化:是一种特殊和一般的关系(类似继承,带三角箭头的实线,特例指向基类)。
4.实现:一个类指定另一个类,保证执行的契约(带三角箭头的虚线,箭头指向父类)。
3、图
五、UML中的图(⭐⭐⭐)
1、类图
1.类图:静态图,展现一组对象、接口、协作和它们之间的关系。
- (“+”:表示public)(“-”:表示private)(“#”:表示protected)
- 系统静态建模时,通常只对如下三种方式使用类图:对系统的词汇建模、对简单的协作建模、对逻辑数据库模式建模。
2.经典例题
2、用例图
1.用例图:静态图,展现了一组用例、参与者以及它们之间的关系。
- 用例:参与者完成的一系列操作。
- 参与者:外部实体。
- 扩展关系《extend》:一个用例执行的时候,可能会发生一些特殊的情况或可选的情况(“如果......那么.......”、“若......那么.......”)可以理解为是扩展用例,对应扩展extend中的特殊情况。。
- 包含用例《include》:一个用例包含另一个用例,当基本用例执行时,被包含用例一定会执行。
2.经典例题
3、状态图
1.状态图:用于描述一个对象之间的交互(反应型对象建模)(事件[监护条件] / 动作)。
- 转换包括两个状态(源状态、目标状态)、事件监护条件、动作。
- 活动(动作)可以在状态内执行,也可以在状态转换(迁移)时执行。
- 事件触发转换。
- 可以出现多个源状态,也可以没有目标状态,但一定要有源状态。
2.经典例题
4、其余六种图
1.对象图:静态图,展现了某一时刻一组对象以及他们之间的关系。(类名下面需要加下划线)
2.序列图(顺序图):动态图,强调消息时间顺序的交互图。
- 序列图有对象生命线,是一条垂直的虚线。
- 序列图有控制焦点,是一个瘦高的矩形,表示一个 对象执行一个动作所经历的时间段。
- 同步消息:进行阻塞调用,需要等待返回消息,用实心三角箭头表示。
- 异步消息:发出消息后继续执行,不引起调用者阻塞,也不等待返回消息,用空心箭头表示。
- 返回消息:由从右到左的虚线箭头表示。
3.通信图(通信图):动态图,只强调事件之间的通信,和顺序图统称为交互图。
- 通信图有路径,有顺序号。
4.活动图:动态图,一种特殊的状态图,展现了在系统内从一个活动到另一个活动的流程。
5.构件图(组件图):静态图,展现了一组构建之间的组织和依赖。
- 半圆是需接口,整圆是供接口。
6.部署图:静态图,展现了系统的软件和硬件之间的关系。
- 立体的图