一、填空(15分)1、类之间的静态联系称作关联。•在实例化后,由类产生对象,链是关联的实例。•在系统实现时,关联采用对象的属性来实现。2、用例图用于建立需求模型,描述用户的需求。对象图是面向对象分析中的基本模型,属于静态结构模型。3、顺序图(时序图)、通信图、活动图、状态图用于描述系统的行为方面的特征,属于动态结构模型。4、时序图构成:参与者、相互协作的对象、对象的生命线、参与者与对象之间发送的消息、执行规约5、表示[可见性]属性名[:类型][=初始值]可见性分为+表示:(公有的)、#表示:(受保护的)、-表示:(私有的)、~(包,只有在同一包中声明的类能够使用这一属性)。二、名词解释(15分)1、面向对象方法:是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。2、类:是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作务两个主要部分。类的作用是用来创建对象,对象是类的一个实例。3、抽象:指从事物中舍弃个别的、非本质的、与问题域无关的特征,而抽取共同的、本质特征的、相关的做法。4、多态性:在具有继承关系的类层次结构中可以定义同名的操作或属性,但这些属性或操作具有不同的含义,即具有不同的数据类型或表现出不同的行为。(“同名不同参”或“同名不同类”)5、OOA模型:就是通过面向对象的分析所建立的系统分析模型。用况:一个用况是对参与者使用系统的一项功能的描述,是一组动作序列的描述,是一项请求与响应。(三、简答(45分)1、继承和泛化关系特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承。一般类对特殊类的抽象关系叫泛化关系(简称泛化)。2、聚合与组合有区别,请说明他们间的区别,并指出下图中哪图是聚合?聚合刻画了现实事物之间的构成关系,体现“整体——部分”关系。而关联没有组成关系或拥有关系。如例题中的c图3、简述下图中体现的面向对象的基本思想答:(1)第一次抽象封装:事物——对象①首先,直接以问题域(现实世界)中的事物为中心来思考问题、认识问题;②然后,根据这些事物的本质特征和系统责任,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。(对象)这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌.①用对象的属性(attribute)表示事物的性质(静态特征);用对象的操作(operation)表示事物的行为(动态特征)。②对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节。(对象的封装)③复杂的对象可以用简单的对象作为其构成部分,对象之间是相互联系的。(聚合)④对象之间通过消息进行通讯,以实现对象之间的动态联系.(消息)(2)第二次抽象(分类):对象——类①通过抽象对对象进行分类。把具有相同属性和相同操作的对象归为一类,类(class)是这些对象的抽象描述,每个对象是它的类的一个实例。(分类)②通过关联表达类(一组对象)之间的静态关系。(关联)(3)第三次抽象:子类——父类通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档。(继承)4、为什么说面向对象语言使得从客观世界到计算机世界的语义鸿沟变窄?5、简单说明OOA与OOD有何区别答:OOA用面向对象的建模语言对系统要实现的需求进行建模,不考虑与系统的具体实现有关的因素或环境(如编程语言、界面、数据库等);OOD是针对系统的一组具体实现条件或环境,继续用面向对象的建模语言进行系统设计与实现。包括两部分工作:•第一、根据具体实现条件或环境对OOA模型进行修改和调整•第二、根据具体实现条件或环境建立人机界面、数据存储和控制驱动等。6、软件复用有何益处、有哪些级别的软件复用,为什么说继承是软件复用的重要形式益处:•提高软件开发效率;•改善软件质量。复用级别:•程序(代码)级复用•分析、设计结果的复用继承是重要的软件复用形式7、如何发现参与者?人员——系统的直接使用者设备——与系统直接相联的设备为系统提供信息在系统控制下运行不与系统相联的设备计算机设备外系统——上级系统子系统其它原有系统8、使用扩展用况描述下用例9、类和对象的联系有何联系?•对象是类的实例——由类创建出对象,系统是由若干个对象在计算机中的运行协作完成具体的功能;•属性相似——一个类的所有对象都具有相同个数、名称、类型和含义的属性,但不同的对象属性具有不同的值;•操作相同——一个类的所有对象的操作都具有相同的声明和实现•生命周期——对象具有生命周期,类没有。10、OO方法中有“实例属性”和“类属性”之分,请说明什么是“实例属性”和“类属性”?答:实例属性包含同一属性的每一个对象(实例)都具有自己的值。类属性是描述类的所有对象共同特征的一个数据项,对于任何对象实例,它的属性值都是相同的,系统中只存在同一数据空间。C++中冠以static的成员变量是类属性,这样的属性对一个类的全部对象实例只是一份共同的数据空间,所以对任何对象而言,该属性的值总是相同的。11、在下图中,根据指定的条件标明A、B间的多重性。给定类A的一个对象a:(1)a可以恰好与类B的一个对象关联(2)a可以最多与类B的一个对象关联(3)a可以与类B的一个或多个对象关联(4)a可以与类B的零个或多个对象关联12、如果在具有关联关系的类中,存在着一个属性放在哪个类中都不合适的情况,就考虑使用关联类。请举例说明:举例:13、特殊类继承了一般类的关联。请对下列类图,加以说明。答:一个系统管理员可以操作1..*的计算机,那么一个系统管理员也可以操作1..*的服务器或客户机答:教授可以指导学生、也可以指导教授的含义。答:学生可以指导学生、教授可以指导教授。学生可以指导教授,教授可以指导学生的含义(学生和教授都是人)答:学生可以指导学生、教授可以指导教授,教授可以指导学生的含义14、简述对象生命线在时序图中的特点答:生命线代表着类对象在当前模块中的存活期,即代表了某个对象何时被创建,何时别销毁。•生命线自上而下,上端出现与对象被创建时,下端结束于对象被销毁时。否则,生命线应当从图的顶部一直延续到底部。•创建对象的消息箭头的头部画在对象符号上。如果对象在图中被销毁,那么用一个大的“×”标记它的析构,该标记或者放在调用析构的消息箭头处,或者放在从被销毁的对象最终返回处理结果的箭尾处(在自析构的情况下)。生命线可以分裂成两条或更多条并发的生命线,并在某个后续点处合并,以表示条件性。即,消息的分支可能导致同一对象在生命周期的同一时刻表现出不同的行为,也就产生了生命线上的分支结构。15、时序图中,包含下图形,请说明其含义一个对象的操作递归地调用自己或调用本对象的其他操作,将出现自调用的情形。四、分析建模(25分)1、ATM终端处理取款的用况图,动作序列如下:系统从持卡人处获得取款命令;系统检查口令;系统完成用户的取款处理;判断是否打印回单,并打印回单;结束操作并退卡要求使用扩展用例或包含用例转换上同例图答:2、很多软件系统都需要登录,若用户登录成功,就可以操作系统的功能,主要有以下方式:打开登录页面,用户输入登录信息,系统执行用户验证;系统验证成功后,系统弹出功能提示框,等待用户选择执行功能;用户选择执行某个功能。打开登录页面,用户输入登录信息,系统执行用户验证;系统验证成功后,转入主界面;用户可以执行界面中的任何一个功能。用户执行主界面的某个功能,系统打开登录页面,用户输入登录信息,系统执行验证,验证通过后,系统继续执行用户选择功能的动作序列,完成用户选择的功能。如下以一个研究生学籍管理系统为例,描述三种登录方法。为了简化起见,假设此处仅描述登录、选课和查看学分这3项功能。要求:分别设计出上三种处理方式的用例图:3、用关联类为公司和雇员之间的薪水关系建模。4、使用多重性、聚合建立大学、系、学生、课程、教师间的类图5、销售部接受到订货单后,进行审核,未被批准的订单,直接送档案科归档;批准的订单,在系统中录入,开具出库单;配送部根据出库单发货并运送货物,财务部对已发货的订单开具销售发票并寄送给客户;客户在收到货物后,验货付款;财务对已经收到的货款,开具收款凭证,连同订单归档。要求:画出以上活动的活动图。