第八章面向对象设计
8.1 面向对象设计和结构化方法有什么不同?它具有哪些优势?
答:不同点:出发的角度不一样:结构化方法从系统角度出发,而面向对象从对象出发。
优点:能够满足人们的需求,开发条理,可重用性好。
8.2解释继承、封装、消息和多态性的概念。
他们分别带来什么好处?
答:
继承:是指特殊类的对象拥有其一般类的全部属性和服务。
好处:(1)可以简化系统的描述和实现(2)直接实现了软件重用,提高软件开发效率
封装:是软件模块化思想的体现,也是面向对象方法的一个重要原则。
好处:(1)实现了信息隐藏(2)简化了接口,降低了系统耦合度
消息:向对象发出的服务请求。
好处:(1)更接近人们日常所采用的术语,对象间课可通过消息实现交互,体现了对象的自治性和独立性,更真实地模拟现实世界(2)其涵义更具有一般性,具有更强的适应性。
多态性:指相同的操作(函数或过程)可作用于多种类型的对象并获得不同的结果。
好处:(1)当给不同子类的
对象发送相同的消息时,消息的发送者可以不用关心具体的对象类型,而由对象自身做出不同的响应处理(2)需要扩充一种新类型时,只需要从父类中在派生一个子类,覆盖父类的某些业务,而不需要改的其他外部程序。
8.3 面向对象方法中的关系有哪些关系?试举例说明。
答:
类关系:
继承:例如银行值班经理完全可以充当收银员这一角色。
实现:对接口的实现
对象关系:
关联:如学生和课程的选修关系
依赖:一个对象A在执行事务过程中向另一个对象B发送消息,请求某种服务,那么就说A依赖于B
8.4什么是UML?它定义了哪几种视图?每个视图描述了什么?
答:
UML:是由单一模型支持的一组图示法。
视图:
用例视图:描述系统的功能需求
逻辑视图:描述系统的基本逻辑结构
进程视图:描述系统性能、可伸缩性和吞吐量的设计。
实现视图:描述系统组装和配置管理、表达软件或成分的组织结构。
部署视图:描述组成物理系统的部件的分布。
支付和安装。
8.5 什么是迭代开发过程?采用迭代过程有什么好
处?
答:
迭代开发:根据系统功能子集而不是软件开发活动将项目分解为多个迭代周期,每个迭代周期需要完成
需求定义、分析、设计、实现等活动,能够生
产出经过测试和集成的、可执行的系统子集。
好处:每个阶段能够产生可以使用的阶段性成果。
8.6使用用例图的目的是什么?
答:
(1)用例是对系统需求的规范化的描述,用例模型是面向
对象分析的关键输入;
(2)用例图及用例的事件流描述集中体现了系统责任;
(3)通过用例建立交互图8.7
8.8
8.9对于一个餐馆点菜和结账系统,可以识别出哪些类?各自有什么属性? 答:
什么是对象关联?给出一个例子,并说明其多重性。
答:表示不同类的对象之间的结构关系。
举例:在银行贷款中,一个客户只能有一项贷款,一项贷款账户只能对应一个客户;一项贷款可能有0或1个担保人,一个客户可以为0个或多个贷款做担保。
8.12顺序图和协作图的目的是什么?二者有什么差别?
答:
目的:
协作图:用来表示用例中的行为顺序。
顺序图:表示一个类操作的实现。
差别:
顺序图:强调时间,但是没有明确对象间的关系;
协作图:强调空间,但时间顺序必须从顺序图中获得。
8.15描述状态图、交互图、类图和用例图之间的关系?
答:需求分析:用例图和顺序图
基本设计、总体设计:用例图和用例文档、类图和顺序图
详细设计和功能设计:类图和顺序图。