类之间的关系(C++)

合集下载

UML必考45道选择题

UML必考45道选择题

UML课程题库一、选择题(共45个)1.用例图不包括以下哪方面的内容()A 参与者。

B 用例。

C 依赖、泛化和关联关系。

D 生命线2.面向对象的三个要素不包括以下哪个()A 封装 B继承 C 多态 D 接口3.UML图分为静态图和动态图,以下哪个属于静态图A 状态图 B协作图 C 类图 D 顺序图4.在UML建模时,应该最先画什么图()A 顺序图 B用例图 C 类图 D构造图5.类图的表示方法如下,其中B区应该是类的()A 方法 B名称 C 属性 D以上都不是6.下图中,表示()图或()图的开始和结束A 类图和对象图B 类图和部署图C 状态图和活动图 D顺序图和活动图7.“泳道”的概念出现在 ( ) 图中A活动图 B状态图 C顺序图 D协作图8.UML图不包括 ()(A)用例图(B)类图(C)状态图(D)流程图9.在类图中,下面哪个符号表示继承关系()10.在类图中,下面那种不是类属性的可见性()(A)Public (B)Protected (C)Private (D)Package11.类之间的关系不包括()(A)依赖关系(B)泛化关系(C)实现关系(D)分解关系12.在UML中,协作图的组成不包括()(A)对象(B)消息(C)发送者(D)链13.下面哪个符号代表包图()14.顺序图由类角色,生命线,激活期和()组成(A)关系(B)消息(C)用例(D)实体15.UML中关联的多重度是指()(A)一个类有多个方法被另一个类调用(B)一个类的实体类能够与另一个类的多个实体类相关联(C)一个类的某个方法被另一个类调用的次数(D)两个类所具有的相同的方法和属性16.在()中每个参与者以及系统都用一条垂直的生命线表示,每条消息用从发送方指向接收方的水平箭头表示。

A、类图B、顺序图C、状态图D、活动图17.UML图明确地在关联线的两端列出了多重性,UML用区间来确定多重性,其中特殊符号“*”表示()A、零B、1C、多D、1或多18.UML有两种类型的部分-整体关系:()A、聚合和合成B、组合和合成C、聚合和组合D、聚合与关联19.下面哪些图形可以清楚地表达并发行为()(A)类图(B)状态体(C)活动图(D)顺序图20.UML提供了一系列的图支持面向对象的分析与设计,其中____(1) ___给出系统的静态设计视图;___(2) ___对系统的行为进行组织和建模是非常重要的;____(3) __和____(4) ___都是描述系统动态视图的交互图,其中___(5) __描述了以时间顺序组织的对象之间的交互活动,___(6) ___强调收发消息的对象的组织结构。

UML考试题及答案

UML考试题及答案

UML考试题及答案《UML与面向对象方法学》复习题二、单选题1.(A)不是UML体系的组成部分。

A.应用领域B.规则C.基本构造块D.公共机制2.在UML中,有四种事物,下面哪个不是(B)。

A.结构事物B.静态事物C.分组事物D.注释事物3.以下(C)不是RUP中的优秀方法。

A.迭代的开发软件B.不断的验证软件质量C.配置管理与变更管理D.支持正向与逆向工程4.下面(D)属于UML中的动态视图。

A.类图B.用例图C.对象图D.状态图5.在UML中,()把活动图中的活动划分为若干组,并将划分的组指定给对象,这些对象必须履行该组所包括的活动,它能够明确地表示哪些活动是由哪些对象完成的。

AA.泳道B.同步条C.活动D.组合活动6.用例之间有几种不同的关系,下列哪个不是他们之间可能的关系()。

BA.include B.connect C.generalization D.extend7.event表示对一个在时间和空间上占据一定位置的有意义的事情的规格说明,下面哪个不是事件的类型()。

CA.信号B.调用事件C.源事件D.时间事件8.通常对象有很多属性,但对于外部对象来说某些属性应该不能被直接访问,下面哪个不是UML中的类成员访问限定性()。

DA.public B.protected C.private D.friendly9.在UML中,类之间的关系有一种关系称为关联,其中多重性用来描述类之间的对应关系,下面哪个不是其中之一()。

AA.*....*B.0....*C.1....*D.0.(1)10.关于包的描述,不正确的是()。

BA.和其他建模元素一样,每个包必须有一个区别于其他包的名字B.export使一个包中的元素可以单向访问另一个包中的元素C.包的可见性分为public、protected、privateD.包中可以包含其他元素,比如类、接口、组件、用例等等11.Use Case用来描述系统在事件做出响应时所采取的行动。

面向对象中类和类的关系

面向对象中类和类的关系

⾯向对象中类和类的关系在⾯向对象⽅法中,我们在确定了类及类的属性和⽅法后。

不可避免的要研究类和类之间的关系,正是这些关系将整个事情串联起来。

使彼此之间有了联系,就像现实⽣活中,⼈与⼈交往中存在着不同的关系。

了解这些关系,对于我们开发系统百利⽽⽆⼀害,能够让我们轻松、⾼效的⼯作,相同像我们在⽇常⽣活中处理好⼈与⼈之间的关系。

会给我们带来巨⼤的优点。

那么我们就来认识⼀下。

⾯向对象中类与类之间有那些关系。

类和类之间的关系⼤概能够分为⼀下⼏种类型:泛化关系(Generalization)、实现关系(realization)、依赖关系(Dependency)、关联关系(Association)(关联、聚合(Aggregation)、组合(Composition))。

泛化关系和实现关系体现的是⼀种类和类、或者类和接⼝间的关系。

不存在引⽤,归结为纵向关系。

依赖关系和关联关系体现的是类和类、类与接⼝间的引⽤。

归结为横向关系。

⼀、泛化关系泛化关系是⼀个类(⼦类、⼦接⼝)继承另外的⼀个类(⽗类、⽗接⼝)的功能,⽽且能够有⾃⼰的新功能。

也既是我们所说的继承关系。

在java中通过extends来标识。

在UML中⽤⼀条带空⼼箭头的实现表⽰,从⼦类指向⽗类,或者⼦接⼝指向⽗接⼝。

代码例如以下:Class _A{}Class _B extends _A{}Public class Test{Public static void main(String args[]){_A a = new _B();}}⼆、实现关系实现关系指的是class类实现interface接⼝(能够使多个接⼝)。

在java中⽤implements标识,在UML中⽤⼀条带空⼼三⾓箭头的虚线标识,从类指向实现的接⼝。

代码例如以下:Interface A{}Class B implements A{}Public class Test{Public static void main( String args[] ){B b = new B();}}说明:以上泛化和实现为⼀对,两者都⽤空⼼三⾓形。

c语言映射关系的

c语言映射关系的

c语言映射关系的【原创实用版】目录1.C 语言映射关系的基本概念2.C 语言映射关系的分类3.C 语言映射关系的应用实例4.总结正文一、C 语言映射关系的基本概念C 语言映射关系,又称为 C 语言数据类型映射关系,是指 C 语言程序中各种数据类型之间的对应关系。

在 C 语言编程过程中,开发者需要了解和掌握这些映射关系,以便正确地使用和操作各种数据类型。

二、C 语言映射关系的分类C 语言映射关系主要分为以下几类:1.基本数据类型映射关系C 语言中,基本数据类型包括整型、浮点型、字符型等,它们之间存在一定的映射关系。

例如,整型可以分为有符号整型和无符号整型,浮点型可以分为单精度浮点型和双精度浮点型等。

2.复合数据类型映射关系C 语言中的复合数据类型包括数组、结构体、联合体等,它们之间的映射关系主要体现在内存布局和访问方式上。

例如,数组类型与指针类型之间的映射关系,结构体类型中各个成员变量之间的映射关系等。

3.指针与数据类型之间的映射关系C 语言中,指针是一种特殊的数据类型,可以用来存储其他数据类型的地址。

指针与数据类型之间的映射关系主要体现在指针类型与基类型之间的转换关系上。

三、C 语言映射关系的应用实例下面举一个 C 语言映射关系应用实例:```c#include <stdio.h>int main(){int a = 5;float b = 3.14;char c = "A";printf("整型变量 a 的地址:%p", &a);printf("浮点型变量 b 的地址:%p", &b);printf("字符型变量 c 的地址:%p", &c);return 0;}```在这个例子中,我们分别声明了整型、浮点型和字符型变量,并使用取地址运算符获取它们在内存中的地址。

这里就涉及到了 C 语言数据类型之间的映射关系。

UML选择、填空

UML选择、填空

一、填空题1、软件对象可以这样定义:所谓的软件对象,是一种将状态和行为有机结合起来形成的软件构造模型,它可以用来描述现实世界中的一个对象。

2、类是具有相同属性和操作的一组对象的组合,即抽象模型中的“类”描述了一组相似对象的共同特征,为属于该类的全部对象提供了统一的抽象描述。

3、面向对象程序的基本特征是抽象、封装、继承和多态。

4、在UML中主要包括的视图为静态视图、用例视图、交互视图、状态机视图、活动视图、物理视图和模型管理视图。

5、UML图包括:用例图、类图、状态图、序列图、活动图、构件图和部署图。

6、用例图描述了系统的参与者与系统进行交互的功能,是参与者所能观察和使用到的系统功能的模型图。

一个用例是系统的一个功能单元,是参与者与系统之间进行的一次交互作用。

7、状态机视图是通过对象的各种状态建立模型来描述对象随时间变化的动态行为,并且它是以独立的对象为中心进行描述的。

8、用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的“角色”关系,以及系统内用例之间的关系。

9、在UML中定义了4种基本的面向对象的事物,分别是结构事物、行为事物、分组事物和注释事物等。

10、使用Rational Rose建立的Rose模型中包括4种视图,分别是用例视图、逻辑视图、构件视图和部署视图。

11、在用例视图中包括了系统中的所有参与者、用例和用例图,必要时还可以在用例视图中添加顺序图、协作图、活动图和类图等。

12、逻辑视图关注系统如何实现用例中所描述的功能,主要是对系统功能性需求提供支持,即系统应该提供的功能。

13、构件视图用来描述系统中的各个实现模块以及它们之间的依赖关系,包含模型代码库、执行文件、运行库和其他构件等信息。

14、部署视图显示的是系统的实际部署情况,它是为了便于理解系统如何在一组处理节点上的物理分布,而在分析和设计中使用的构架视图。

15、Rational统一过程以一种能够被大多数项目和开发组织适应的形式建立起来,其所包含的6项最佳实践为:迭代式软件开发、需求管理、基于构件的架构应用、建立可视化的软件模型、软件质量验证、软件变更控制。

管理信息系统练习题及答案(总结版)

管理信息系统练习题及答案(总结版)

第一章信息系统和管理1.信息( C ) a.是形成知识的基础b是数据的基础c是经过加工后的数据d.具有完全性3.管理信息是( A )。

a.加工后反映和控制管理活动的数据b.客观世界的实际记录c.数据处理的基础d.管理者的指令4.信息化( A )。

A、是推动工业化的动力B、是工业化的基础C、代替工业化D、向工业化发展9.数据资料中含信息量的大小,是由( C )。

a.数据资料中数据的多少来确定的b.数据资料的多少来确定的c.消除不确定程度来确定的d.数据资料的可靠程度来确定的10.信息( C )。

a.不是商品b.是数据c.是一种资源d.是消息11.计算机输入的是( C )。

a.数据,输出的还是数据b.信息,输出的还是信息c.数据,输出的是信息d.信息,输出的是数据13.信息流是物质流的( C )。

A定义B运动结果C表现和描述D假设14.管理信息系统科学的三要素是( C )。

a.计算机技术、管理理论和管理方法b.管理方法、运筹学和计算机工具c.系统的观点、数学方法和计算机应用d.计算机技术、通信技术和管理工具15.按照不同级别管理者对管理信息的需要,通常把管理信息分为(D)三级a.公司级、工厂级、车间级b.工厂级、车间级、工段级c.厂级、处级、科级d.战略级、策略级、作业级第二章管理信息系统概论2.管理信息系统是一个( D )。

a.网络系统b计算机系统c操作系统d.人机系统4.管理信息系统的应用离不开一定的环境和条件,环境具体指的是( C ). a.组织所处的自然环境b.组织所处的社会环境c.组织内外各种因素的综合d.组织所处的自然环境和社会环境的综合5.从管理决策问题的性质来看,在业务操作层上的决策大多属于( A )的问题。

a.结构化b.半结构化c.非结构化d.以上都有该题可以改成:决策支持系统解决的问题是(BC)7.对管理信息系统进行综合,我们可以了解到,管理信息系统是由多个功能子系统组成的,这些功能子系统又可以分为业务处理、运行控制、管理控制和( D )几个主要的信息处理部分。

《系统分析与设计技术》练习题(选择)

《系统分析与设计技术》练习题(选择)

信息管理与信息系统第一章信息系统项目管理一、选择题A.单选题1.从社会经济发展的角度来看,信息化是指( D)。

A.计算机和网络的应用规模与效益不断增长的过程B.计算机硬件产业、软件产业、信息服务产业不断发展的过程C.社会上进行交换的信息量不断增长的过程D.人们的信息活动的规模不断扩大以致在国民经济中起主导作用的过程2.项目主要管理人员应参与( D )。

A.系统规划 B.系统设计 C.系统分析 D.系统开发和运行全过程B.多选题1. IT项目风险识别的方法有(ABCD )。

A.专家调查法 B.面谈或访谈法 C.鱼骨图法 D.风险分解结构法第二章信息系统工程体系一、单选题1.用户开发应用系统的主要手段是(A )。

A.生命周期法 B.原型法 C.第四代语言D.面向对象方法2.系统规划的主要任务是( A )。

A.明确组织的信息需求、制定系统总体结构方案B.对系统进行经济、技术和使用方面的可行性研究C.选择计算机和网络系统的方案D.确定软件系统的模块结构3.RUP中的软件生命周期在时间上被分解成四个顺序的阶段,分别是初始阶段,细化阶段,构造阶段和交付阶段,每个阶段结束于一个主要的里程碑,构造阶段结束时的里程碑是( B)。

A.生命周期目标里程碑 B.初始功能里程碑C.产品发布里程碑 D.生命周期结构里程碑4.RUP中的软件生命周期中初始阶段结束时的里程碑是( D)。

A.初始功能里程碑 B.生命周期结构里程碑C.产品发布里程碑 D.生命周期目标里程碑5.在原型法中,原型是开发系统的( A)。

A. 反映用户最基本需求的可以运行的实验模型B. 某一主要部分的详细设计方案(物理模型)C. 反映用户需求的逻辑模型D. 反映用户全部需求符合系统开发规范的应用软件程序6.信息系统开发方法有哪些( A )。

A. 原型法B. BSP法C. CSF法D. CASE法B.多选题1. 对于结构化设计思想的描述( ABC )是正确的。

软工课后选择题

软工课后选择题

一、选择题1.结构化程序设计主要强调程序的( C )。

A.效率B.速度C.可读性D.大小2.开发软件需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作( B)。

A.软件投机B.软件危机C.软件工程D.软件产生3.以下说法中错误的是( C )。

A.软件的质量保证工作不能等到编码阶段结束之后再进行B.在软件开发过程中需求是经常变化的C.软件产品的开发过程比一般产品的开发过程更容易评价和管理D.软件开发小组的组成人员的素质应该好,而人数则不宜过多二、选择题1.瀑布模型本质上是一种()。

A.线性顺序模型B.顺序迭代模型C.线性迭代模型D.及早见产品模型2.需求分析是由分析员了解用户的要求,认真细致地调研。

分析,最终应建立目标系统的逻辑模型并写出()。

A.模块说明书B.软件规格说明书C.项目开发计划D.合同文档三、选择题1.研究硬软件资源的有效性是进行()研究的一方面。

A.技术可行性B.经济可行性C.社会可行性D.操作可行性2.可行性研究要进行的需求分析和设计应是()。

A.详细的B.全面的C.简化、压缩的D.彻底的3.分层DFD是一种比较严格又易于理解的描述方式,它的顶层图描述了系统的()。

A.细节B.输入与输出C.软件的作者D.绘制的时间4.需求规格说明书的内容还应包括对()的描述。

A.主要功能B.算法的详细过程C.用户界面及运行环境D.软件的性能5.需求规格说明书的作用不应包括()。

A.软件设计的依据B.用户与开发人员对软件要做什么的共同理解C.软件验收的依据D.软件可行性研究的依据6.SA方法用DFD描述()A.系统的控制流程B.系统的数据结构C.系统的基本加工D.系统的功能7.一个局部数据存储只有当它作为()时,就把它画出来。

A.某些加工的数据接口B.某个加工的特定输入C.某个加工的特定输出D.某些加工的数据接口或某个加工的特定输入/输出8.对于分层的DFD,父图与子图的平衡指子图的输入、输出数据流同父图相应加工的输入、输出数据流()。

UML考试题及答案

UML考试题及答案

UML考试题及答案UML 统⼀建模⼀、选择题 (共40分,每⼩题2分)1、下⾯的模型图中,哪个能正确表⽰“1个教师可以指导0个到多个学⽣的论⽂,1个学⽣必须有1个教师指导其论⽂” 的意思(C )2、计算机由CUP 、内存、硬盘、显⽰器、⿏标等构成,那么计算机类和⿏标类之间的关系是( C )A 继承关系B 关联关系C 聚合关系D 依赖关系 3、下⾯( B )图形表⽰依赖关系。

4、关于UML ,下⾯说法正确的是( D )A UML 是⼀种⾯向对象的建模⽅法。

B UML 是⼀种形式化的语⾔,使⽤UML 建⽴的模型可被计算机编译执⾏。

C UML 是⼀种⾯向对象的编程语⾔。

D UML 是⼀种⾯向对象的建模语⾔,但不是建模⽅法。

ABCD5、顺序图和交互图的关系,类似与下⾯的哪种关系(C )A 类和对象的关系B 类和参与者关系C Java和编程语⾔的关系D UML和Java的关系6、要对⼀个企业的⼯作流程建模,下⾯4种图中的(B )是最重要的。

A 交互图B 活动图C 状态图D 类图7、关于参与者,错误的说法是(C )A 参与者是与所建⽴的系统交互的⼈或物。

B 参与者可以是实际的⼈,也可以其他系统。

C 参与者是系统的⼀部分,是⽤例图的重要组成部分。

D 参与者之间可以存在泛化关系。

8、UML中关联的多重性是指(B )A ⼀个类有多个⽅法被另⼀个类调⽤。

B ⼀个类的实例对象能够与另⼀个类的多少个实例对象相关联。

C ⼀个类的某个⽅法被另⼀个类调⽤的次数。

D 两个类所具有的相同的⽅法和属性。

9、关于类图的说法正确的是(A )A 类图分为3个层次:对象层、特征层和关系层,其中对象层给出系统中所有反映问题域和系统责任的对象。

B 类图分为3个层次:对象层、特征层和关系层,其中特征层给出系统中所有反映问题域和系统责任的对象。

C 类图只是⼀种辅助模型,不如其他图重要。

D 类图定义了系统的功能需求,描述了系统的动态⾏为。

10、根据Coad/Yourdon的定义,⾯向对象的概念不包括(D )A 对象B 继承C 消息D 封装11、使⽤UML对系统进⾏动态建模,不能使⽤以下哪种图(A )A 类图B 顺序图C 状态图D 活动图12、UML 的结构事物不包括( D )A 接⼝B 类C 协作D 状态机 13、分析下⾯的顺序图,并指出哪种说法是正确的( C )A “求战”、“怎么办”以及“⽕烧连营”这3条消息并没有严格的次序,⽐如:“求战”消息有可能在“⽕烧连营”之前产⽣。

c++选择题题集

c++选择题题集

C++选择题集1.下列的各类函数中,不是类的成员函数。

(C)A)构造函数B)析构函数C)友元函数D)拷贝初始化构造函数2.作用域运算符“::”的功能是:(B)A)标识作用域的级别的B)指出作用域的范围的C)给定作用域的大小的D)标识成员是属于哪个类的3.A)C)4.已知:A)5.A)C)public6.7.A)C)一个类的对象只有一个D)一个对象必属于某个类8.在C++中,类与类之间的继承关系具有(C)A)自反性B)对称性C)传递性D)反对称性9.结构化程序设计所规定的三种基本控制结构是:(C)A)输入、处理、输出B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数10.C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是:(B)A)面向过程B)面向对象C)安全性D)复用性11.在C++中实现封装是借助于(B)A)枚举B)类C)数组D)函数12.C++语言是从早期的C语言逐渐发展演变而来的与C语言相比,它在求解问题方法上进行的最大改进是:(B)A)13.在a)数组b14.(C)15.A)C)16.已知A)int&Z;17.对于A)paB)paC)pa[5]D)pa是一个具有5个元素的指针数组,每个元素是一个int型指针18.定义析构函数时,应该注意:(C)A)其名与类名完全相同B)返回类型是void类型C)无形参,也不可重载D)函数体中必须有delete语句19.在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(B)A)受限制B)保持不变C)受保护D)不受保护20.下列不是函数重载所要求的条件是:(D)A)函数名相同B)参数个数不同C)参数类型不同D)函数返回值类型不同21.在C++中执行以下4条语句后输出rad值为:(C)staticinthot=200;int&rad=hot;}A)C)A)析构函数B)构造函数C)其它成员函数D)友元函数25.关于构造函数的说法,不正确的是:(A)A)没有定义构造函数时,系统将不会调用它B)其名与类名完全相同C)它在对象被创建时由系统自动调用D)没有返回值26.按解释中的要求在下列程序划线处填入的正确语句是:(C)#include<iostream.h>classBase{public:voidfun(){cout<<"Base::fun"<<endl;}};classDerived:publicBase{public:voidfun(){//};A)fun();27.在28.A)受限制29.int(*pfA)int(*p)(float)=&f1;B)pf=&f4;C)pf=&f2;D)pf=&f3;30.通常拷贝构造函数的参数是:(C)A)对象名B)对象的成员名C)对象的引用名D)对象的指针名31.系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是:(D)A)参数个数B)参数类型C)函数名称D)函数的返回值类型32.下列描述中,正确的是:(D)A)所有的运算符号都可以重载。

类与类之间的六种关系

类与类之间的六种关系

类与类之间的六种关系在面向对象编程中,类与类之间有六种关系,分别是继承、实现、聚合、组合、关联和依赖。

这些关系描述了不同类之间的联系和依赖,有助于我们更好地设计和组织程序。

继承是一种类与类之间的关系,它描述了一个类从另一个类继承属性和方法的过程。

继承可以减少代码的重复,提高代码的可维护性和可扩展性。

例如,一个动物类可以作为其他类的父类,其他类可以继承动物类的属性和方法,如狗类、猫类等。

实现是一种类与接口之间的关系,它描述了一个类实现接口的过程。

接口定义了一组方法,实现了接口的类必须实现这些方法。

实现可以使代码更加灵活,可以在不同的类中实现相同的接口,从而实现代码的复用。

聚合是一种“整体-部分”的关系,它描述了一个类包含其他类的实例的过程。

聚合表示一种弱的“拥有”关系,即一个类可以包含多个其他类的实例,但这些实例可以独立存在。

例如,一个汽车类可以包含多个轮子类的实例,但轮子类的实例可以独立存在。

组合是一种“整体-部分”的关系,它描述了一个类包含其他类的实例,并且这些实例不能独立存在的过程。

组合表示一种强的“拥有”关系,即一个类包含其他类的实例,这些实例不能独立存在。

例如,一个房子类可以包含多个房间类的实例,但房间类的实例不能独立存在。

关联是一种类与类之间的关系,它描述了一个类与另一个类之间的联系。

关联可以是单向的或双向的,可以是强的或弱的。

例如,一个人类可以与一个手机类之间存在关联,表示这个人拥有这个手机。

依赖是一种类与类之间的关系,它描述了一个类依赖于另一个类的过程。

依赖表示一个类使用了另一个类的实例或方法,但不拥有这个实例或方法。

例如,一个人类可以依赖于一个汽车类的实例,表示这个人需要使用这个汽车来出行。

类与类之间的六种关系描述了不同类之间的联系和依赖,有助于我们更好地设计和组织程序。

在实际编程中,我们需要根据具体情况选择不同的关系,以实现代码的复用、可维护性和可扩展性。

C 课后习题答案第七章

C  课后习题答案第七章

C++作业答案第7章继承7.1 选择题1.在c++中,类与类之间的继承关系具有( c )。

(a) 自反性 (b) 对称性 (c) 传递性 (d) 反对称性2.下列关于类的继承描述中,( a,b )是错误的。

(a) 派生类可以访问基类的所有数据成员,调用基类的所有成员函数(b) 派生类也是基类,所以基类具有派生类的全部属性和方法(c) 继承描述类的层次关系,派生类可以具有与基类相同的属性和方法(d) 一个基类可以有多个派生类,一个派生类可以有多个基类3.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( a )。

(a) public 成员 (b)private成员(c) protected成员 (d)友员4.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( b )。

(a) public 成员 (b)private成员(c) protected成员 (d)友员5.当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( c )。

(a) public 成员 (b)private成员(c) protected成员 (d)友员6.不论派生类以何种方式继承基类,都不能使用基类的( b )。

(a) public 成员 (b)private成员(c) protected成员 (d)public 成员和protected成员7.下面描述中,错误的是( b, c )。

(a) 在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问(b) 在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问(c) 在基类定义的public和protected成员在保护继承的派生类中不可见(d) 在派生类中不可见的成员要变成可访问的需进行访问声明8.在c++中,不能被派生类继承的函数是( b,c )。

(a) 成员函数 (b)构造函数(c) 析构函数 (d)静态成员函数9.在创建派生类对象时,构造函数的执行顺序是( d )。

电大考试2017年软件工程选择题(整理篇)

电大考试2017年软件工程选择题(整理篇)

软件工程1.以下哪一项不是软件危机的表现形式(C)A.成本高B.生产率低C.技术发展快D.质量得不到保证2.哪种模型分批地逐步向用户提交产品,每次提交一个满足用户需求子集的可运行的产品。

(A)A.演化模型B.喷泉模型C.原型模型D.螺旋模型3.可行性研究的目的不包括(B)A.分析开发系统的必要性B.确定系统建模的方案C.分析系统风险D.确定是否值得开发系统4.可行性分析研究的费用大约是项目总经费的(B)。

A.2%B.8%C.20%D.50%5.在E-R 模型中,包含以下基本成分(C)。

A.数据、对象、实体B.控制、联系、对象C.实体、联系、属性D.实体、属性、联系6.软件需求分析产生一个重要文档是(B)。

A.软件维护说明书B.需求规格说明书C.可行性报告D.初步用户手册7.内聚程度较低的是(D)。

A.通信内聚B.过程内聚C.顺序内聚D.时间内聚8.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是(D)A.把软件划分成模块B确定模块之间的调用关系C.确定各个模块的功能D.设计每个模块的伪代码9.UML 语言支持的建模方式不包括有(C)。

A.静态建模B.动态建模C.模块化建模D.功能建模10.以下哪一项不是面向对象的特征。

(D)A.多态性B.继承性C.封装性D.过程调用11.在软件生产的程序系统时代由于软件规模扩大和软件复杂性提高等原因导致了(A)A.软件危机B.软件工程C.程序设计革命D.结构化程序设计12.瀑布模型的关键不足在于(B)A.过于简单B.不能适应需求的动态变更C.过于灵活D.各个阶段需要进行评审13.可行性研究的四大要素是(A)。

A.经济、技术、法律和社会环境B.经济、技术、开发组织能力和领导者水平C.经济、技术、计算机硬件环境和网络带宽D.经济、技术、软件开发工具和人员的稳定性14.经济可行性研究的主要内容包括(D)A.开发过程B.开发工具C.风险分析D. 效益分析15.在需求分析过程中,分析员要从用户那里解决的最重要的问题是(A)。

UML期末考试试题

UML期末考试试题
/ 13 C、用例A扩展用例B D、用例A包括用例B 30. 在构件中图中,(D )用于显示构件之间的关联关系。 A、节点 B、包 C、构件 D、依赖关系 31. (D )是一种不包含操作的实现部分的特殊类。 A、概念类 B、分析类 C、实现类 D、接口 32. (A )关系是类元的一般描述和具体描述之间的关系,具体描述建立在一般描述的基础之上,并对其进行了扩展,具体描述与一般描述完全一致所有特性、成员和关系,并且包含补充的信息,它用从子指向父的箭头表示,指向父的是一个空三角形。 A、泛化 B、继承 C、组成 D、聚集 33. ( C)使用类图的一个子集,用于强化某个时间点类实例之间的关系。 A、交互图 B、协作图 C、对象图 D状态图 34. ( A)是用来反映代码的物理结构。 A、构件图 B、用例图 C、类图 D、状态机 35. 以下对部署图说法不正确的是(A ) A、部署图有主要建模元素是构件 B、使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件的配置的部署方式 C、从部署图中,可以了解到软件与硬件之间物理关系及处理节点的组件分布情况 D、部署图是用来显示系统中软件和硬件的物理结构 36. (B )是一个类对象所可能经历的所有历程的模型图 A、模型管理视图 B、状态机视图 C、动态视图 D、静态视图 37. UML的( B )是由建模者设计的新的建模元素,但是这个模型元素的设计要建立在UML已定义的模型元素基础上 A、标记值 B、构造型 C、注释 D、约束 38. UML通过图形化的表示机制从多个侧面对系统的分析和设计模型进行刻画,其中(C )包括构件图,它描述软件系统中各组成构件,构件的内部结构以及构件之间的依赖关系 A、行为视图 B、结构视图 C、构件视图 D、用例视图 39、在UML中,( B )可以对模型元素进行有效组织,如类,用例,构件,从而构成具有一定意义的单元。 A连接 B包 C构件 D节点 40、在UML中(D )表示参与者为达成一项相对独立、完整的业务目标而要求软件系统完成的功能。 A用例图 B边 C执行者 D用例 41.下列不属于属性的可见性的是( C )。 A.公有的 B.私有的 C.私有保护的 D.保护的 42.通常对象有很多属性,下面仅能在对象内部访问的属性可见性限制是( D )。 A.公有的(public) B.受保护的(protected) C.友员(friendly) D.私有的(private) 43.下面不是活动图中的基本元素的是( D )。 A.状态、判定 B.分叉、汇合 C.泳道、初态 D.用例、消息 44.在类图中,“ #”表示的可见性是( B ) (A)Public (B)Protected (C)Private (D)Package

统一建模语言UML复习参考答案

统一建模语言UML复习参考答案

统⼀建模语⾔UML复习参考答案《统⼀建模语⾔UML》复习题⼀、填空题1. ⾯向对象程序的基本特征是:抽象、封装、继承和多态。

2. Rose的正向⼯程以组件为单位,把模型中的⼀个或多个类图转换为java源代码的过程。

逆向⼯程是把代码转换为设计模型。

3. ⽤例图两个最核⼼的元素是参与者与⽤例。

4. 顺序图是由对象、⽣命线、控制焦点和消息等构成的5. 在UML的表⽰中顺序图将交互关系表⽰为⼀张⼆维图,其中纵向是时间轴,时间沿竖线向下延伸。

横向代表了在协作中各独⽴对象的⾓⾊。

6. 状态机图图描述从状态到状态的控制流程,常⽤来对系统的动态特征进⾏建模。

7. 在UML中,状态机由对象的各个状态和连接这些状态的转换组成,是展⽰状态与状态转换的图。

8、在某个信息系统中,存在如下的业务陈述:①⼀个客户提交0个或多个订单;②⼀个订单由⼀个且仅由⼀个客户提交。

系统中存在两个类:“客户”类和“订单”类。

对应每个“订单”类的实例,存在 1 个“客户”类的实例;对应每个“客户”类的实例,存在 0个或多个“订单”类的实例。

9、UML提供⼀系列的图⽀持⾯向对象的分析与设计,其中类图给出系统的静态设计视图;⽤例图对系统的⾏为进⾏组织和建模是⾮常重要的;序列图和协作图都是描述系统动态视图的交互图,前者描述了以时间顺序组织的对象之间的交互活动,后者强调收发消息的对象的组织结构。

供选择的答案:状态图、⽤例图、状态图、序列图、部署图、协作图、类图10、Rational Rose2003具有⾮常友好的图形⽤户界⾯,其初始界⾯主要包括标题栏、菜单栏、⼯具栏、模型浏览器窗⼝、⽂档窗⼝、模型图窗⼝、⽇志窗⼝、状态栏等部分。

11、Rational Rose2003⽤户界⾯包含两种⼯具栏,为⽤户操作提供了⽅便,其中,图⼯具栏依赖于所打开的模型图,⽽标准⼯具栏则与模型图⽆关。

12、如果需要在模型图绘制窗⼝中多放置⼏个相同的图标,在编辑⼯具栏中,先单击选择锁定图标,进⼊“锁定”状态,⽽不必重复多次地返回道编辑⼯具栏中重复选择同⼀个图标。

国家开放大学《软件工程》形考任务1、2、4参考答案

国家开放大学《软件工程》形考任务1、2、4参考答案

国家开放大学《软件工程》形考任务1、2、4参考答案形考任务11.()是职业软件工程师的必要条件。

A. 编程速度快B. 语言天赋C. 自律、善于沟通、具有一定的软件技能D. 熟悉众多的软件环境2.根据软件工程的7条基本原理判断下面正确的选项是()。

A. 软件错误只能通过运行代码才能发现B. 需求阶段一般不会引入错误C. 软件错误发现的时机不重要,重要的是错误的严重程度D. 软件错误发现的越早改正的成本越低3.美国著名软件工程专家B.W.Boehm于1983年提出了软件工程的()条基本原理。

A. 7B. 5C. 3D. 124.软件、程序和代码是()。

A. 三个不同的概念B. 程序语言写的代码C. 计算机代码和数据D. 相同的软件概念5.软件对硬件和环境有着不同程度的依赖性,这导致了软件()问题。

A. 复杂性B. 升级和移植C. 通用性D. 脆弱性6.软件工程的出现是由于()。

A. 计算机硬件技术的发展B. 计算机软件技术的发展C. 软件危机D. 软件社会化的需要7.软件工程四个层次由下至上是(),它们的顺序不能互换。

A. 质量层、过程层、方法层、工具层B. 方法层、过程层、质量层、工具层C. 过程层、方法层、质量层、工具层D. 方法层、质量层、过程层、工具层8.软件可行性研究一般不考虑()A. 待开发软件是否有市场、经济上是否合算B. 是否有足够的人员和相关的技术来支持系统开发C. 待开发的软件是否会有质量问题D. 是否有足够的工具和相关的技术来支持系统开发9.软件与程序的区别是()。

A. 软件包括程序、相关数据及其文档,程序是软件的一部分B. 程序价格便宜,软件价格昂贵C. 程序是用户自己编写的,而软件是由厂家提供的D. 程序是用高级语言编写的,而软件是由机器语言编写的10.在软件生产的程序系统时代由于软件规模扩大和软件复杂性提高等原因导致了()。

A. 结构化程序设计B. 软件危机C. 程序设计革命D. 软件工程11.软件工程学科出现的主要原因是()。

CDE基本概念

CDE基本概念

面向对象问题处理的关键是建模问题。

建模可以把在复杂世界的许多重要的细节给抽象出来。

许多建模工具封装了UML(也就是Unified Modeling Language),UML中有九种建模的图标,即:用例图、类图、对象图、顺序图、协作图、状态图、活动图、组件图、配置图。

本文重点讲述类图。

为什么UML很重要?为了回答这个问题,我们看看建筑行业。

设计师设计出房子。

施工人员使用这个设计来建造房子。

建筑越复杂,设计师和施工人员之间的交流就越重要。

蓝图就成为了这个行业中的设计师和施工人员的必修课。

写软件就好像建造建筑物一样。

系统越复杂,参与编写与配置软件的人员之间的交流也就越重要。

在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”。

现在它已经成为了软件行业的一部分了。

UML提供了分析师,设计师和程序员之间在软件设计时的通用语言。

UML被应用到面向对象的问题的解决上。

想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的。

一个模型model就是根本问题的抽象。

域domain就是问题所处的真实世界。

模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的。

记住把一个对象想象成“活着的”。

对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations)。

对象的属性的值决定了它的状态state。

类Classes是对象的“蓝图”。

一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数)。

对象是类的实例instances。

UML中的4种关系UML 中类与类, 类与接口, 接口与接口之间的关系有: 泛化(generalization) 关系, 关联(association)关系( 关联, 聚合, 合成), 依赖(dependency)关系,实现(realization)关系.泛化(generalization)关系是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。

软件工程习题(1)

软件工程习题(1)

3.输入三个正整数作为边长,判断该三条边构成的三角形是等边、等腰还是一般三角形。

使用流程图、PAD图4、什么是判定/条件覆盖?为以下程序流程图设计判定/条件覆盖测试用例并标明程序执行路径。

判定/条件覆盖——它是指设计足够的测试用例,即满足条件覆盖又满足判定覆盖。

测试用例:x=2,y=0,z=3(覆盖x>1,y=0,x=2,z>1,通过路径abcde);x=1,y=1,z=1(覆盖x≤1,y≠0,x≠2,z≤1,通过路径ace)。

5、根据下列条件使用等价类划分法设计测试用例。

(书P118 例)某一8位微机,其八进制常数定义为:以零开头的数是八进制整数,其值的范围是-177~177,如05,0127,-065(1)划分等价类并编号,如下表示:(2)为合理等价类设计测试用例,表中有两个合理等价类,设计两个例子(3)为不合理等价类测试用例,至少设计一个测试用例6、将下面给出的伪码转换为N-S 图。

(8分)void root ( float root1, float root2 ) { i = 1; j = 0; while ( i <= 10 ) {输入一元二次方程的系数a, b, c; p = b*b – 4*a*c;if ( p < 0 ) 输出“方程i 无实数根”; else if ( p > 0 ) 求出根并输出; if ( p == 0 ) {求出重根并输出; j = j + 1; }i = i +1; }输出重根的方程的个数j; }7、某航空公司规定,乘客可以免费托运重量不超过30kg 的行李。

当行李重量超过30kg 时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。

用判定树表示与上述每种条件组合相对应的计算行李费的算法。

i = 1; j = 0; while ( i <= 10 ) 输入a, b, c; 计算 p = b 2 - 4ac ; p < 0 ? 输出“方程i ”无求出根并输出 ↓p > 0 ? p == 0 ? 求出重根并输出; j = j + 1; ↓i = i + 1; 输出重根的方程个数i T T T F FF8、使用PAD图描述在数组A(1)~A(10)中找最大数的算法9、假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。

类与类之间的六种关系

类与类之间的六种关系

类与类之间的六种关系在面向对象的编程中,类与类之间可以存在多种关系,这些关系表现出不同的结构和行为。

本文将介绍类与类之间的六种关系,并对其做简要说明。

1. 继承关系(Inheritance)继承是一种类与类之间最基本的关系之一。

通过继承,一个类可以继承另一个类的属性和方法,从而构建出一个新的类,新的类在功能方面可以包含父类的所有特性,也可以在此基础上增加自身的新特性。

2. 实现关系(Implementation)实现关系是一种类与接口(接口是一种规范,只包含方法定义)之间的关系。

一个类可以实现一个接口,从而获得该接口定义的所有方法,该类必须实现接口中所有的方法。

实现关系实现了接口与类的分离,提高了代码的灵活性和可重用性。

3. 聚合关系(Aggregation)聚合关系是一种“部分与整体”的关系,即一个类(整体)可以包含另一个类(部分)作为它的一个组成部分,与此同时,一个部分可以属于多个整体。

聚合关系常常用于构建复杂对象,可以形成一些常见的设计模式,如观察者模式、组合模式等。

4. 组合关系(Composition)组合关系也是一种“部分与整体”的关系,与聚合关系不同的是,组合关系强调整体与部分的生命周期一致,即一个整体被销毁时,它的所有部分也将被销毁。

组合关系常用于构建复杂的对象,例如 window 对象里面包含了多个控件。

5. 依赖关系(Dependency)依赖关系是一种“使用与被使用”的关系,即一个类使用了另一个类的服务,而这种使用关系通常是一种短暂的关系,只存在于方法调用的过程中。

依赖关系体现了类与类之间的耦合性,降低了代码的灵活性。

6. 关联关系(Association)关联关系是一种“拥有与被拥有”的关系,它比依赖关系更强,表现为一个类知道另一个类的存在,并且能够通过实例变量、静态变量等方式保存对另一个类的引用。

关联关系通常用于构建一些复杂的系统,比如 UML 中的类图,它们用集合来表示关联关系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

类之间的关系在大体上分为两种,一种是纵向的,另一种是横向的。

一、纵向的就是继承,它是OO的三个特征之一。

在UNL中称作:泛化(Generalization) 表示为:实现(Realization) 表示为:◆泛化泛化关系: 是一种继承关系, 表示一般与特殊的关系, 它指定了子类如何特化父类的所有特征和行为。

表示类与类之间的继承关系,接口与接口之间的继承关系。

一般化的关系是从子类指向父类的,与继承或实现的方法相反。

// Animal.hclass CAnimal{public:// implementvirtual HRESULT EatSomething(){// Do something}};// Tiger.h#include "Animal.h"class CTiger : public CAnimal{// Do something};◆实现实现关系: 是一种类与接口的关系, 表示类是接口所有特征和行为的实现。

// Animal.hclass CAnimal{public:// interfacevirtual HRESULT EatSomething() = 0;};// Tiger.h#include "Animal.h"class CTiger : public CAnimal{// Do something};注: 泛化和实现的区别就在于子类是否继承了父类的实现, 如有继承则关系为泛化, 反之为实现.二、横向关系,按UML关系分为4种,依赖(Dependency),表示为:--------→即虚线+箭头关联(Association),表示为:实线+箭头聚合(Aggregation),表示为:空心菱形+实线组合(Composition),表示为:实心菱形+实线它们的强弱关系是:依赖< 关联< 聚合< 组合,◆依赖依赖就是某个对象的功能依赖于另外的某个对象,而被依赖的对象只是作为一种工具在使用,而并不持有对它的引用。

对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。

是一种使用的关系, 即一个类的实现需要另一个类的协助, 所以要尽量不使用双向的互相依赖.类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用;// Car.hclass CCar{// Do something};// Person.h#include "Car.h"class CPerson{void MoveFast(CCar &pCar);};上图中人的快速移动需要有车的协助, 但是这种依赖是比较弱的, 就是人也可以不用车而用其他工具, 与关联不同的是人不必拥有这辆车只要使用就行.关联关联就是某个对象会长期的持有另一个对象的引用,而二者的关联往往也是相互的。

关联的两个对象彼此间没有任何强制性的约束,只要二者同意,可以随时解除关系或是进行关联,它们在生命期问题上没有任何约定。

被关联的对象还可以再被别的对象关联,所以关联是可以共享的。

他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B 以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;双向关联是指双方都拥有对方的引用, 都可以调用对方的公共属性和方法:// Husband.h#include "wife.h"class CHusband{public:CWife* pWife;};// Wife.h#include "Husband.h"class CWife{public:CHusband* pHuband;};上图中丈夫和妻子是比较公平的关系, 都可以使用对方公共的属性.单向关联是指只有某一方拥有另一方的引用, 这样只有拥有对方者可以调用对方的公共属性和方法.如下程序代码// Husband.hclass CHusband{public:int nMoney;void GoShopping();};// Wife.h#include "Husband.h"class CWife{public:CHusband* pHuband;};上图中妻子拥有丈夫, 可以使用对方的属性, 比如钱, 可以让对方做能做的事, 比如去买东西.自身关联是指拥有一个自身的引用// SingleMan.hclass CSingleMan{public:CSingleMan *pSingleMan;};◆聚合聚合是强版本的关联。

它暗含着一种所属关系以及生命期关系。

被聚合的对象还可以再被别的对象关联,所以被聚合对象是可以共享的。

虽然是共享的,聚合代表的是一种更亲密的关系。

聚合是整体与部分的关系,且部分可以离开整体而存在,如,车和轮胎是整体和部分的关系,轮胎离开车还可以存在。

是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分// Car.h#include "Tyre.h"class CCar{public:CTyre cTyre;};// Tyre.h#include "Car.h"class CTyre{// Do something};◆组合组合是关系当中的最强版本,它直接要求包含对象对被包含对象的拥有以及包含对象与被包含对象生命期的关系。

被包含的对象还可以再被别的对象关联,所以被包含对象是可以共享的,然而绝不存在两个包含对象对同一个被包含对象的共享。

组合是整体与部分的关系,但部分不能离开整体而存在,如,公司和部门是整体与部分的关系,没有公司就不存在部门。

组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;// Company.h#include "Department.h"class CCompany{public:CDepartment cDepartment;};// Tyre.h#include "Company.h"class CDepartment{// Do something};释义:组合关系就是整体与部分的关系,部分属于整体,整体不存在,部分一定不存在,然而部分不存在整体是可以存在的,说的更明确一些就是部分必须创生于整体创生之后,而销毁于整体销毁之前。

部分在这个生命期内可以被其它对象关联甚至聚合,但有一点必须注意,一旦部分所属于的整体销毁了,那么与之关联的对象中的引用就会成为空引用,这一点可以利用程序来保障。

心脏的生命期与人的生命期是一致的,如果换个部分就不那么一定,比如阑尾,很多人在创生后的某个时间对其厌倦便提前销毁了它,可它和人类的关系不可辩驳的属于组合。

在UML中存在一种特例,就是允许被包含对象在包含对象销毁前转移给新的对象,这虽然不自然,但它给需要心脏移植的患者带来了福音。

关联与聚合的区别(1)关联关系所涉及的两个对象是处在同一个层次上的。

比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。

聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。

比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。

(2)对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。

部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。

比如张三的电脑被偷了,那么电脑的所有组件也不存在了,除非张三事先把一些电脑的组件(比如硬盘和内存)拆了下来。

举一个简单的例子:一个图书馆可以有十万本书,也可以一本也没有。

但空的图书馆还是图书馆。

这是聚合。

一个车(我们平常能看到的普通的交通工具车)有轮子,有的车是四轮子的,有的车是三轮的,自行车是二轮的,还有独轮车,但车至少要有一个轮子,不然就不是车。

这是组合关系。

关联、组合、聚合、依赖关系比较类之间的关系种类:Generalization(泛化),Dependency(依赖关系)、Association(关联关系)、Aggregation(聚合关系)、Composition(合成关系)。

其中Aggregation(聚合关系)、Composition(合成关系)属于Association(关联关系),是特殊的Association关联关系。

Generalization(泛化)表现为继承或实现关系(is a)。

具体形式为类与类之间的继承关系,接口与接口之间的继承关系,类对接口的实现关系。

Association关联系表现为变量(has a )。

类与类之间的联接,它使一个类知道另一个类的属性和方法。

例如如果A依赖于B,则B体现为A的全局变量。

关联关系有双向关联和单向关联。

双向关联:两个类都知道另一个类的公共属性和操作。

单向关联:只有一个类知道另外一个类的公共属性和操作。

大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可服用的类。

Aggregat ion(聚合关系) 是关联关系的一种,是强的关联关系。

聚合关系是整体和个体的关系。

普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分。

同时,是一种弱的“拥有”关系。

体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。

具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。

Composition(组合关系)是关联关系的一种,是比聚合关系强的关系。

它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

相关文档
最新文档