资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
面向对象思考题1 面向对象的程序与面向过程的程序区别?面向对象的程序 = 对象+数据和施加在其上的操作封装在数据内组代码 面向过程的程序 = 数据结构十算法 数据和施加在其上的操作分离 在过程内说明数据,组织代码。2 面向对象的喷泉模型谁提出? 特点? Seller 和Eduarols提出.无隙性,复用,概括、聚集对客观世界对象的模型化3 面向对象的基本概念4列出图书馆系统参与者的最小用例集。 列出图书馆系统基本功能? 各个图书馆系统的不同特征? 借阅者:l 按题目查询书藉 l 按作者查询书藉l 按主题查询书藉l 预定己被其他人借出的书藉借书员:l 借阅者的所有用例l 为借阅者查找某一书藉l 登记己归还的书藉l 续借一本书l 登记交纳的罚款l 添加新的借阅者l 更新借阅者的个人信息(地址、电话号码等) 图书管理员:l 所有借阅者和借书员的所有用例l 添加藏书l 册除藏书l 改变系统对己有书籍的记录 会计系统(独立):l 获得借阅者支付的超期罚款图书馆系统基本功能:l 一个用户界面,提供标准类型的搜(作者、标题、主题),浏览书藉、期刊或者作者列表的能力.l 用来表示图书、客户、借出等基本类,及操作各个图书馆系统的不同特征:l 目录编制方案(杜威分类 Dewey Decimal或美国国会图书分类 Library Congress ).l 保存客户和书的信息类型(顾客权限, 只能借特定种类的书)l 借出的类型和期限、续借、罚金支付等规则.l 从图书馆借走的特殊种类( 录像、杂志、光碟、地图等)l 图书馆独有的特殊数据( 条形码的特殊类型,多语言支持等)l 图书馆拥有的特殊硬件(扫描仪,校验机)l 安全机制(操作权限, 图书馆登录密码与其他系统密码集成在一起.l 本系统与在线图书馆资源、现存图书、期刊数据库、记账等其他系统集成.5 写出类图的开发过程. 1)建立领域模型和系统模型(1) 领域分析,创建非正式的类图构成探索性领域模型(exploratory domain model)的一部分. 了解领域,仅知道实体及属性和关系. (2) 建立系统领域模型(system domain model)为系统表示建模. (3) 系统模型,包含系统领域模型l 用户界面类:窗口、菜单、表单、命令。l 系统体系结构的类客户机、服务器、文件、数据库。l 实用工具类。用户界面类和系统体系结构类的实例通常在程序启动时创建,在终止时释放。大部分直接从类库中重用,或表示为库中类的子类。 2) 确定类l 开发领域模型时,发现(discover)类。它们存在于需求描述、面谈记录原始材料,头脑风暴中。l 在进行用户界面或系统体系结构工作时,要创造(invent)解决特定设计问题的类.如创建泛化类.l 优化类(冗余、模糊)3) 确定关联和属性.4) 确定泛化和接口.5) 为类指定职6) 确定操作.6 创建两个或三个由关联所链接的类来表示如下情况。指出关联的多重性和标签。若有多于一个的合理选择,说明每个优缺点。 (1)有轮子的交通工具。 (2)一个影像出租商店,要想租东西必须先成为会员。 (3)国家和首都。 (4)在学校中学习的学生。 (5)在体背馆注册进行锻练的人。7为下面多对多的关联添加关联类。SportGamePlayer * * ShowSpectator * *HotelRoomGuest * * 8. 类图和实例图有什么区别? 类图描述给定系统中存在的类。但它们是抽象的,但很难将运行时对象之间关系可视化. 实例图( Instance diagram) 给出了存在于程序执行过程中某个特定点的对象与链接的配置示例. 实例图用来分析特定场景. 实例图包含类图中的类和关联所派生的实例和链接. 一个类图可以生成无数个实例图.9. 实例图中关联与泛化的比较. 关联描述了运行时实例之间的关系. 关联只有在它的链接存在于任何特定操作的执行过程中才是合理的.领域模型中的关联通常存储在数据库中. 泛化描述了类图中类之间的关系. 实例图永远不可能包含泛化,并且只能包含由关联生成的链接,而不是关联本身.当显示由关联生成的实例时,显示的是由该关联所连接的两个类的实例. 当显示由继承层次生成的实例时,显示的是具体类的单个实例.该单个实例包含了其所属类定义的属性和从超类继承来属性的值.换句话,任何类的实例也都应该看作是该类超类的实例.10. 何时把关联标为聚合?l 部件是聚集的一部分或聚集由部件组成.l 在拥有或控制聚集的同时,也拥有或控制了部件.l 聚合为设计者提供有用信息,通过部件对象隐藏在聚集对象内部来提高封装性.在聚集上执行大多数操作,无需知道部件存在.11. 评价下面的两组聚合哪个好?为什么?VehiclePartVehicle 组1:Vehicle 组2: ChassisDoorBodyPanel * * *TransmissionWheelEngineFrame组1容易地适应具有不同部件配置的新型交通工具组2缺乏灵活性.12. 证明使用组合表示多边形与组成它的线段之间的关系是正确的.LineSegmentPolygon.l 多边形由线段组成.l 操作多边形的对象也操作这些线段.l 当多边形平移或改变比例时, 线段也平移或改变比例.l 多边形的周长是所有线联长度之和.l 从多边形移走一条线段,则该多边形就不再是多边形,因此多边形必须具有完全的控制以避免这种变化.l 多边形被删除时,线段也被删除.13检查一个关联是否存在,要在模型中另一个类查找什么关系? 拥有(possess)、 控制(control)、 连接到(is connected to)、关联到(is related to) 、是一部分(is a part of)、拥有部分(has as parts)、是一个成员(is a member of)、拥有成员(has as member). 14. 区分如下关联哪个好? (不要把动作表示为关联.)Library PatronLoanborrowedDatedueDatereturnDate Library Patron *CollectionItem * * *borrow return CollectionItem * * 较好, borrow 操作创建了一个 Loan,而return操作设置了returnerDate属性 关联表示动作(不好)15. 如何确定属性? 属性可以通过查看系统描述并查找每个类中必须维护的实例的信息来确定. 属性通常是简单的变量,一般是整数或字符串. 属性通常不表示数量可变的事物(不应有复数名称) 属性不应有隐含的内部结构.如在应用程序中获取人的名不是姓,就不能用单一属性表示姓名.否则, 应用程序要解析该属性来提取名.易出错. 若类属性的一个子集形相关组(如地址),应创建一个包含这些属性的类,使系统简单、灵活,易用.16. 下面对属性描述方式,哪种好?(图1不好复数形式,图2不好属性太多)addressstreetmunicipalityprovOrStatecountrypostalCodetype(家还是工作地址)Personname Personnamestreet1municipality1provOrState1country1postalCode1 street2.Personnameaddresses Address es * 17. 确定职责的方法是什么? 职责(responsibility)就是要求系统做的事情.进行用例分析. 在陈述中查找动作的动词和名词.几类职责广泛存在于各种类中:l 设置(setting)和获取(getting)属性值. 把属性设置为私有,并在必要时创建公有方法进行存取是好的实现方法.允许类对它的属性有更多的控制-确保属性只能赋予有效值.可以修改类的内部设计而不影响类与用户的交互方式.l 创建(creating)和初始化(initializing)新的实例. 创建一个类的实例基本职责经常被赋予其他某个类(其他类必须调用被实例化类的构造函数)然而,有时这个职责直接放在创建实例的类中(作为静态操作实现),在这种类型的职责中经常需要几个类协同工作.l 加载(loading)和保存(s
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号