面向对象软件工程第八章8.1.什么是面向对象方法学,它有哪些优点?答:面向对象方法学是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类解决问题的方法与过程,使描述问题的问题空间与实现揭发的解空间在结构上尽可能一致的方法学科。
优点:1、与人类的习惯的思维方法一致;2、稳定性好;3、可重用性好;4、适合用于大型软件产品;5、所开发的软件有较好的可维护性;6、面向对象的软件比较容易修改;7、面向对象软件比较容易理解;8、易于测试和调式。
8.2.什么是对象,它与传统的数据有何异同?答:对象是对问题域中某个实体的抽象。
相对于传统数据的静态被处理,对象既有静态的属性,又有动态的行为,是进行处理的主体。
8.3.什么是类?答:类是对具有相同数据和相同操作的一组相似对象的定义。
8.4.什么是继承?答:继承是指能够直接获得已有事物的性质和特征,而不必重复定义他们。
8.5.什么是模型,开发软件为何要建模?答:所谓模型就是为了理解事物而对该事物做出的一种抽象,是对事物的一种无歧视定义的书面描述。
由于模型忽略了事物的非本质东西,因此模型比原始事物更容易操作。
对于那些因过分复杂而不能直接理解的系统,特别需要建立模型,建模的目的主要是为了降低复杂性。
人的头脑每次只能出来少量信息,模型通过把系统的重要部分分解成人的头脑一次能处理的若干个子部分,从而减少了系统的复杂程度。
8.6.什么是对象模型,建立对象模型时主要使用哪些图形符号,这些符号的含义是什么?答:对象模型表示静态的、结构化的系统性质,是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。
在UML中,用类图来建立对象模型,表示一个类及属于该类的对象。
8.7.什么是动态模型,建立动态模型时主要使用哪些图形符号,这些符号的含义是什么?答:动态模型时描述系统控制结构,即行为化的一种模型。
在UML中主要用状态图、交互图、活动图来建立动态模型。
状态图用多个状态及这些状态之间的迁移描述单个对象的动态行为。
8.8.什么是功能模型,建立功能模型时主要使用哪些图形符号?答:功能模型表示变化的系统的功能性质,指明了系统应有的功能,更直接的反应了系统的需求。
在UML中主要用用例图表示功能模型,从用户观点描述系统的功能。
8.9.试用面向对象观点分析、研究本书的订票系统的例子。
在这个例子中有哪些类,试建立其系统的对象模型。
8.10.建立订票系统的用例模型。
8.11.考虑一下ATM系统。
至少标识出于系统交互的三个不同的参与者。
答:储户、中央计算机、柜员。
8.12.场景和用例之间,有何不同,这两个工具在何时使用?答:一个用例是能够被行为者感受到的、系统将完成的一个完整的功能。
场景是一种说i明人们将做什么的陈述性描述。
一个用例是描述相关功能的所有可能场景的抽象,场景是用例的实例。
在需求文档中,为了标明系统的一些功能时,使用用例。
在需求获取中,开发者和用户通过撰写并求精一系列场景,以达到系统应该做什么的共同理解,对用户而言,场景相对于用例,易于理解。
8.13. 画出列车售票系统的用例图。
该系统包括两个参与者:可以购买不同类型车票的旅客和中心计算机系统管理一个价格表引用数据库。
用例应该包括BuyOneWayTicket、BuyWeeklyCard、BuyMonthlyCard和UpdataTariff.。
也应该包括意外情况:TimeOut(即旅行这=者等待时间太长而无法输入正确的数据)、TransactionAborted(即旅行者选择终止按钮,未完成交易)、DistributorOutOfChange和DistributorOutOfPaper。
8.14.按如下定义要求画出表示书的类图:“一本书有数个部分组成,每个部分由数章组成。
各章又由数节组成”。
画图时将注意力放在类及其关系上。
答:他们的关系属于组合聚集关系。
第九章9.1. 考虑一下带有图形用户界面的文件系统,如 Macintosh 的Finder 、 Microsoft 的 Windows Explorer 和 Linux 的 KDE 。
从描述怎样从一个软盘拷贝一个文件到硬盘的用例中标识出了如下对象: File 、 Icon 、 TrashCan 、 Folder 、 Disk 和 Pointer 。
说明哪些对象是实体对象,哪些对象是边界对象,哪些对象是控制对象。
答:实体对象:Folder、Disk 、File;边界对象:Icon、TrashCan ;控制对象:Pointer 。
9.2. 假设如前所述的同一文件系统,考虑一个包含了从软盘上选择文件并拖动该文件到 Folder 再释放鼠标的场景。
标识和定义至少一个关联到此场景的控制对象。
复制文件:(1)将鼠标移动到所需要移动的文件的图形上,并点击确认;(2)按住左键不放;(3)将文件移到指定的文件夹Folder;(4)释放鼠标;9.3. 在顺序图中水平地排列习题 9-1 和习题 9-2 中列出的对象,将边界对象放在左边,将你要标识的控制对象放在中间,将实体对象放在右边。
画出将文件拖入文件夹的交互顺序。
在本题中,忽略异常情况。
9.4. 检查你在练习 9-3 中画出的顺序图,标识出这些对象之间的关联。
9.5. 标识出与场景(将一个文件从一张软盘拷贝硬盘)相关的每一个对象的属性。
考虑如下异常情况“在该文件夹中存在同一文件名”和“磁盘中没有足够的空间”。
答:如果在操作过程中,发现文件的名字属性有相同的,给出提示“文件夹中已有改文件,是否修改文件名!”;如果其文件的所占内存大于磁盘的总内存,给出提示“磁盘容量不够!”9-6 考虑9-10所示的对象模型,给出有关日历的知识,列出有关该模型的所有问题。
修改该模型的每一个问题。
答:一般情况下一年有365天,一年共分12个月。
12个月中分大月、小月和平月,大月有31天,小月30天,平月(二月)只有28天。
而有时候会是闰年,即年份是4的倍数,四年一闰,百年不闰,四百年再闰,但不能闰年是366天,二月有29天。
模型中画的是年、月、星期、日的共享聚集关系。
应该是组合聚集的关系。
图如下题所示。
9.7 考虑上图中的对象模型,仅使用关联多样性,可以修改该模型,以便不熟悉日历的系统分析员可以减少每一个月中的天数吗?如果需要,标识出外部类。
9.8 考虑四方向十字路口的交通灯系统(两条成直角的相交道路)。
假设为了考虑循环通过交通灯的最简单算法(即当一个十字路口的在一条路上的交通是允许的话,则同时另一条路上的交通停止)。
标识出这一系统的状态,并画很粗描述这一状态的状态图。
记住每一个单独的交通灯具有三个状态(绿、黄和红)。
第十章10.1 将一个系统分解成多个子系统会降低复杂性,同时设计者是通过简化各模块、增加这些模块的一致性来处理这一复杂性的。
但分解后常常会增加另一些不同的复杂性,如更小的模块意味着更多的模块及接口。
如果内聚是让设计者将子系统分解成更小的指导性原则,那么让设计者保持各模块数目之和比较小的原则是什么呢?答:如果模块数目的增加,各个模块之间关系的复杂程度就会增加,从而导致设计模块间接口所需要的工作量和成本加大,显得不经济,所以设计者会保持各模块数目之和比较小。
10.2 将设计目标分成了5类:性能、可靠性、成本、维护和最终用户。
将上面的一类或多类设计目标赋给下面的例子:(1).当用户发出任何命令后系统必须在一秒钟内将信息反馈给用户。
性能、可靠性(2).即使在网络失败的情况下,火车票发行器也必须能够成功地提交火车票。
可靠性(3).火车票发行器的房间必须考虑安装新的按钮以防火警的数目有所上升。
维护(4).自动出纳机必须能够抵御字典攻击(即用户通过不断的系统尝试试图得到认证码)。
可靠性10.3 假设你正在开发一个系统,该系统要将数据存储在UNIX文件系统上。
并且你预测到以后会发布运行在其他操作系统上的系统新版本,提供对不同的文件系统支持。
给出一个考虑到了将来变更的子系统分解方案。
10.4 老的编译器是根据管道过滤器体系结构风格来设计的,没一个阶段均要把输入转换成中间表示传给下一个阶段。
现代开发环境中的编译器,是一个包括带有句法文本编辑器和源代码调试器在内的集成交互开发环境,这一环境采用了仓库体系结构风格。
请说明将管道过滤器风格转换为仓库风格的设计目标是什么?答:管道过滤器体系结构的编译器是通过过滤器一步一步的转换而处理数据,这个过程容易受到某一个因素而阻碍整个编译过程。
仓库风格适合于发生改变的且有复杂数据处理的任务,可以提高编译器的性能,性能更高。
10.5 考虑模型/视/控制器的例子。
讨论模型/视/控制器体系结构对下列设计目标是有帮助的还是有副作用的:(1)可扩展性(如增加新的视类型)有帮助(2)响应时间(如用户输入与所有视被更新的时间间隔)副作用(3)可修改性(如在模型中增加新的属性)有帮助(4)访问控制(如确保只有合法用户才能访问模型中特定部分的能力)。
有帮助10.6 列出当采用带有多层的封闭体系结构时实现有困难的那些设计目标(如正文中所描绘的OSI例子)。
答:OSI分层较多,会影响性能响应时间与吞吐量的要求的实现,对于成本而言其开发成本较高。
10.7 在许多体系结构中,如三层或四层体系结构,持久性对象的存储由专门的一层来处理。
你认为哪些设计目标导致了这一决策?答:可维护性和性能。
10.8 考察一个含有一台网络服务器、两台数据库服务器的系统。
两台数据库服务器是相同的:第一台作为主服务器,第二台是在第一台出现故障时作为冗余的备份服务器使用。
用户使用网页浏览器通过网络服务器来访问数据。
他们还可以选择使用有权直接访问数据库的私有客户身份。
画出UML的部署图以展示这个系统的硬件/软件映射。
10.9 如果为一个基于网络的零售商店设计访问控制策略。
客户可以通过网络访问商店,浏览商品的信息,输入他们的地址和付账信息,购买商品。
供应商能够添加新的商品、更新商品信息、接收订单。
商店老板可以设置零售价格、基于顾客的购买情况提供打折或销售服务。
必须处理三种参与者:商店管理者、供应商和消费者。
为这三种参与者设计一种访问控制策略。
消费者可以由网络创建,而供应商由商店管理者创建。
消费者:1.浏览商品 2.购买商品供应商:1.添加商品 2.更新商品信息 3.接受订单商店管理者:1. 设置价格 2.设置打折 3.销售服务10.10 为下面的每个系统选择一种你觉得最合适的控制流机制。
因为在绝大多数的案例中,多个选择是可行的,请证实你的选择。
设计一个持续高负荷的网络服务器。
线程机制一个文字处理器的图形用户界面。
事件驱动控制一个嵌入式实时系统(例如,一个卫星发射导航系统)。
过程驱动控制10.11 为什么在需求获取或分析过程中不能描述边界用例。