问答题 阅读下列说明及UML类图,回答问题1、问题2和问题3。 【说明】 某客户信息管理系统中保存着两类客户的信息: (1)个人客户。对于这类客户,系统保存了其客户标识(由系统生成)和基本信息(包括姓名、住宅电话和E-mail)。 (2)集团客户。集团客户可以创建和管理自己的若干名联系人。对于这类客户,系统除了保存其客户标识(由系统生成)之外,也保存了其联系人的信息。联系人的信息包括姓名、住宅电话、E-mail、办公电话及职位。 该系统除了可以保存客户信息之外,还具有以下功能: ①向系统中添加客户(addCustomer)。 ②根据给定的客户标识,在系统中查找该客户(getCustomer)。 ③根据给定的客户标识,从系统中删除该客户(removeCustomer)。 ④创建新的联系人(addContact)。 ⑤在系统中查找指定的联系人(getComact)。 ⑥从系统中删除指定的联系人(removeContact)。 该系统采用面向对象方法进行开发。在面向对象分析阶段,根据上述描述,得到如表3-1所示的类。描述该客户信息管理系统的UML类图如图3-1所示。
问答题 请使用说明中的术语,给出图3-1中类Customer和类Person的属性。
【正确答案】正确答案:Cusomer类属性:客户标识。 Person类属性:姓名、住宅电话、email。
【答案解析】
问答题 识别关联的多重度是面向对象建模过程中的一个重要步骤。根据说明中给出的描述,完成图中的(1)~(6)。
【正确答案】正确答案:(1) 1 (2) 0..* (3) 1 (4) 1 (5) 1 (6) 1..*
【答案解析】
问答题 根据说明中的叙述,抽象出如表3-2所示的方法,请指出图3-1中的类 CustomerInformafionSystem和InstitutionalCustomer应分别具有其中的哪些方法。
【正确答案】正确答案:CustomerInformationSystem类方法:getCustomer、addCustomer、removeCustomer。 InstitutionalCustomer类方法:addContact、getContact、removeContact。
【答案解析】解析:本题考查UML类图,包括类的属性和方法的识别及类间关联重复度。 从UML类图(见图3-1)中可以看出,类Customer是类IndividualCustomer和类 InstitutionalCustomer的父类,应该包含两者的共有属性。根据题中说明,两者共有属性为“客户标识”。故类Customer应有属性:客户标识。 同样,类Person是类Contact的父类,因此其属性应包含在Contact类的属性集中,Contact类的属性有:姓名、住宅电话、email、办公电话及职位;又Contact与类IndividualCustomer有关联,而Individual包含属性:姓名、住宅电话和email,故类Person应有属性:姓名、住宅电话和email。 根据题中说明,可知客户管理相关方法应该属于类CustomerInformationSystem,有:查找客户getCustomer、添加客户addCustomer和删除客户removeCustomer;联系人相关方法应该属于类InstitutionalCustomer,有:创建新联系人addContact、查找联系人getContact和删除联系人removeContact。 下面分析类间的关联重复度。 客户管理系统自然是管理多个客户信息,即一个CustomerInformationSystem类对象与多个客户Customer类实例相关联,故空(1)应填1,空(2)为0..*,或*。 一个类IndividualCustomer实例同时也是一个Person实例,即其间是一对一关联,故空(3)和空(4)均为1。 一个集团客户类InstitutionalCustomer的实例可以包含多名联系人Contact,且至少有一名,而一个联系人隶属于某个特定的集团。故空(5)应填1,空(6)为1..*。