单选题
在某银行业务的用例模型中,“取款”用例需要等到“存款”用例执行之后才能执行,两个用例之间的关系属于{{U}}
{{U}} 26 {{/U}}
{{/U}};“取款”和“存款”两个用例中都需要执行查询余额的功能,将查询余额提取成独立的用例,那么“取款”和“存款”用例与“查询余额”用例之间的关系属于{{U}}
{{U}} 27 {{/U}} {{/U}}。
单选题
- A.关联关系
- B.扩展关系
- C.使用关系
- D.依赖关系
单选题
- A.扩展关系
- B.使用关系
- C.依赖关系
- D.继承关系
【正确答案】
B
【答案解析】[解析] 用例是在系统中执行的一系列动作,这些动作将生成特定参与者可见的价值结果。它确定了一个和系统参与者进行交互并可由系统执行的动作序列。用例模型描述的是外部执行者(actor)所理解的系统功能。用例模型用于需求分析阶段,它的建立是系统开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成的共识。
两个用例之间的关系可以概括为两种情况。一种是用于重用的包含关系,用include表示(在UML 1.x版本中用use表示);另一种是用于分离出不同行为的扩展,用extend表示(在UML 1x版本中用extends表示)。
(1)包含关系。当可以从两个或两个以上的原始用例中提取公共行为,或者发现能够使用一个构件来实现某一个用例的部分功能很重要时,我们应该使用包含关系来表示它们。
(2)扩展关系。如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种事情,则将这个用例分为一个主用例和一个或多个辅用例描述可能更加清晰。
另外,用例之间还存在一种泛化关系。用例可以被特别列举为一个或多个子用例,这被称为用例泛化。当父用例能够被使用时,任何子用例也可以被使用。例如,我们购买飞机票,既可以是电话订票,也可以是网上订票,则订票用例就是电话订票和网上订票的抽象。
用UML建立业务模型时,可以把业务人员看做是系统中的角色或者类。在建立抽象模型时,很少有类会单独存在,大多数都将会以某种方式彼此通信,因此还需要描述这些类之间的关系。关系是事物间的连接,在UML中,有几个很重要的关系。
(1)依赖关系。有两个元素A、B,如果元素A的变化会引起元素B的变化,则称元素B依赖于元素A。在类中,依赖关系有多种表现形式,例如,一个类向另一个类发消息;一个类是另一个类的成员;一个类是另一个类的某个操作参数等。
(2)泛化关系。描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。继承关系是泛化关系的反关系,也就是说子类是从父类中继承的,而父类则是子类的泛化。在UML中,对泛化关系有3个要求。
·子类应与父类完全一致,父类所具有的关联、属性和操作,子类都应具有。
·子类中除了与父类一致的信息外,还包括额外的信息。
·可以使用父类实例的地方,也可以使用子类实例。
(3)关联关系。关联表示两个类的实例之间存在的某种语义上的联系。例如,一个老师为某所学校工作,一所学校有多间教室。我们就认为老师和学校、学校和教室之间存在着关联关系。关联关系为类之间的通信提供了一种方式,它是所有关系中最通用、语义最弱的。关联关系通常可以再细分成以下两种:
·聚集关系。聚集关系(聚合关系)是关联关系的特例,表示一种整体和部分的关系,
其中整体和部分的生命周期不相同。例如,电话机和话筒的关系,计算机和显示器的关系等都是聚集关系的例子。
·组合关系。组合关系也是表示一种整体和部分的关系,其中整体和部分的生命周期相同。例如,公司与部门之间的关系就是组合关系的例子。
(4)实现关系。类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。在UML中,活动图用来表示系统中各种活动的次序,它的应用非常广泛,既可用来描述用例的工作流程,也可用来描述类中某个方法的操作行为。活动图是由状态图变化而来的,它们各自用于不同的目的。活动图依据对象状态的变化来捕获动作(将要执行的工作或活动)与动作的结果。活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的变迁可能需要事件的触发)。
单选题
雇员类含有计算报酬的行为,利用面向对象的{{U}} {{U}} {{/U}}
{{/U}},可以使得其派生类专职雇员类和兼职雇员类计算报酬的行为有相同的名称,但有不同的计算方法。
【正确答案】
A
【答案解析】[解析] 在面向对象技术中,多态考虑的是类与类之间的层次关系,以及类自身内部特定成员函数之间的关系问题,解决功能和行为的再抽象问题。多态是指类中具有相似功能的不同函数用同一个名称来实现,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数。这也是人类思维方式的一种直接模拟,比如一个对象中有很多求两个数最大值的行为,虽然可以针对不同的数据类型,写很多不同名称的函数来实现,但事实上,它们的功能几乎完全相同。这时,就可以利用多态的特征,用统一的标识来完成这些功能。这样,就可以达到类的行为的再抽象,进而统一标识,减少程序中标识符的个数。
严格地说,多态性可分为4类,分别为过载多态(重载多态)、强制多态、包含多态和参数多态,其中前两种统称为专用多态(特定多态),后面两种也称为通用多态。
包含多态是研究类族中定义于不同类中的同名成员函数的多态行为,主要通过虚函数来实现。包含多态最常见的例子就是子类型化,即一个类型是另一类型的子类型。
参数多态的应用比较广泛,被称为最纯的多态。这是因为同一对象、函数或过程能以一致的形式用于不同的类型。参数多态与类属(类模板)相关联,类属是一个可以参数化的模板,其中包含的操作所涉及的类型必须用类型参数实例化。这样,由类模板实例化的各类都具有相同的操作,而操作对象的类型却各不相同。
过载多态是同一算子(操作符、函数名等)被用来表示不同的功能,通过上下文以决定一个算子所代表的功能,即通过语法对不同语义的对象使用相同的算子,编译能够消除这一模糊。
强制多态是通过语义操作把一个变元的类型加以变换,以符合一个函数的要求,如果不做这一强制性变换将出现类型错误。类型的变换可在编译时完成,通常是隐式地进行,当然也可以在动态运行时来做。
从实现的角度来看,多态可划分为两类,分别是编译时的多态和运行时的多态。前者是在编译的过程中确定同名操作的具体操作对象,而后者则是在程序运行过程中才动态地确定操作所针对的具体对象。这种确定操作的具体对象的过程就是联编(编联、束定或绑定)。联编是指计算机程序自身彼此关联的过程,也就是把一个标识符名和一个存储地址联系在一起的过程;用面向对象的术语讲,就是把一条消息和一个对象的方法相结合的过程。
按照联编进行阶段的不同,可以分为两种不同的联编方法,分别为静态联编和动态联编,这两种联编过程分别对应着多态的两种实现方式。
联编工作在编译连接阶段完成的情况称为静态联编。因为联编过程是在程序开始执行之前进行的,因此有时也称为早期联编或前联编。在编译和连接过程中,系统就可以根据类型匹配等特征确定程序中操作调用与执行该操作代码的关系,其确定了某一个同名标识到底是要调用哪一段程序代码。有些多态类型,其同名操作的具体对象能够在编译、连接阶段确定,通过静态联编解决,比如过载、强制和参数多态等。
和静态联编相对应,联编工作在程序运行阶段完成的情况称为动态联编,也称为晚期联编或后联编。在编译、连接过程中无法解决的联编问题,要等到程序开始运行之后再来确定,包含多态的操作对象的确定就是通过动态联编完成的。
单选题
面向对象分析的一项重要任务是发现潜在对象并进行筛选,错误的做法是删除{{U}} {{U}}
{{/U}} {{/U}}。
- A.系统范围之外的名词
- B.表示事件的名词
- C.不具有独特行为的名词
- D.一个对象的同义词
【正确答案】
B
【答案解析】[解析] 在OOA中,并不是所有的名词都表示了问题域内有用的业务对象,通过删除对象的同义词、系统范围之外的名词、不具有独特行为的名词、不清楚的名词和另一个对象的行动或属性的名词来最终清理候选对象列表。
单选题
面向对象分析的任务不包含{{U}} {{U}} {{/U}} {{/U}}。
- A.建模系统功能
- B.发现并确定业务对象
- C.建模各对象的状态
- D.组织对象并确定对象间的关系
【正确答案】
C
【答案解析】[解析] OOA基于用例模型,通过对象建模记录确定的对象、对象封装的数据和行为,以及对象之间的关系。OOA包括3个活动,分别是建模系统功能、发现并确定业务对象、组织对象并确定对象间的关系。
单选题
关于用例和类,错误的说法是{{U}} {{U}} {{/U}} {{/U}}。
- A.两者都属于模型图的构成元素
- B.存在抽象用例和抽象类
- C.类图描述系统的部分静态视图,用例图描述系统与用户之间的交互视图
- D.两者都可以用来描述系统的内部结构
【正确答案】
D
【答案解析】[解析] 用例描述业务场景或事件,系统必须对这些场景或事件提供确定的响应,用例是用例图的主要结构元素,用例图用来描述系统与外部系统以及用户之间的交互视图。
类是共享相同属性和行为的对象集合,是类图的主要组成元素,类图是系统静态对象结构的图形描述。
抽象用例通过组合几个用例公共的步骤降低用例之间的冗余,抽象类是包含一种或多种抽象方法的类,它本身不需要构造实例。
单选题
{{U}} {{U}} {{/U}} {{/U}}适用于描述复杂算法的执行流程。
A.活动图 B.状态图 C.类图D.用例图
【正确答案】
A
【答案解析】[解析] 活动图用来描述一个业务流程,说明活动之间的依赖关系。状态图显示出对象可能的状态以及由状态改变而导致的转移。活动图和状态图之问是有关系的。状态图把焦点集中在过程中的对象身上,而活动图则集中在一个单独过程中的动作流程。
单选题
在面向对象方法中,信息流是通过向参与者或内部对象发送消息形成的。{{U}} {{U}} {{/U}}
{{/U}}用于描述进出系统的信息流。
【正确答案】
B
【答案解析】[解析] 状态图描述一个对象在其生命周期中可能的状态组合,顺序图描述对象按照时间顺序的消息流。
数据流图和流程图是结构化方法中的概念。数据流图是一种描述数据通过系统的流程以及系统实施的工作或处理过程的过程模型;流程图以图形化的方式展示了应用程序从数据输入开始到获得输出为止的逻辑过程。