阅读下列说明和相关的类图,回答问题。【说明】 在一栋m层楼的大厦里,用电梯内和每个楼层的按钮来控
阅读下列说明和相关的类图,回答问题。
【说明】
在一栋m层楼的大厦里,用电梯内和每个楼层的按钮来控制n部电梯的运作。当按下电梯内按钮请求电梯在指定楼层停下时,按钮指示灯亮,当电梯到达指定楼层时,指示灯熄灭。除了大厦的最底层和最高层之外,每层楼都有两个按钮分别指示电梯上行和下行,当这两个按钮之一被按下时相应的指示灯亮,当电梯到达此楼层时灯熄灭,电梯向要求的方向移动。当电梯无升降运动时,关门并停止在当前楼层。
软件设计师火云龙采用面向对象分析的方法,经过三次逐步求精设计之后,得到如图 13-19所示的类图。
【问题1】
按钮类有一个重要的属性,请将该属性填入图13-19中的(a)处。
【问题2】
识别关联的多重性是面向对象建模重要的一步,请根据题目说明填空(1)~(6)。
【问题3】
软件设计师火云龙在初步设计类时,将门(的状态)作为电梯的属性,后经思考,将电梯门设计成一个独立的类,这么做的好处是什么?
软件设计师火云龙在初步设计类时,并没有设计“请求”类,后来又加入了该类,这么做的原因是什么?
[问题1] (a)指示灯 [问题2] (1)mn (2)mn (3)2m-2 (4)2m-2 (5)n (6)n [问题3] 一旦将电梯门作为一个独立的类,则打开或关闭电梯门的唯一办法就是向“电梯门”类对象发送消息。如果电梯门类封装得好,就能保证不会在错误的时间关闭或打开电梯门,从而有效杜绝严重意外事故的发生。 出于安全考虑,在未经授权时不能随意修改“请求”,因此将“请求”设计成独立的类,如果“请求”类封装得好就能有效保证电梯安全运行。 解析:从图13-19可知,电梯按钮类和楼层按钮类都是按钮类的子类,电梯按钮和楼层按钮的共同点就是用指示灯跟乘客进行交互,所以,按钮类必定有个重要的属性“指示灯”。识别关联的多重性是面向对象建模重要的一步。题目的说明中提到“在一栋m层楼的大厦里,用电梯内和每个楼层的按钮来控制n部电梯的运作”、“除了大厦的最底层和最高层之外,每层楼都有两个按钮分别指示电梯上行和下行”,所以这栋大厦中一共有mn个电梯按钮,共有2m-2个楼层按钮,电梯控制器类控制着所有的电梯按钮、楼层按钮和电梯,所以第(1)~(6)空应分别填:mn、mn、2m-2、2m-2、n、n。注意,不可以用*号代替,*号表示多个,具体多少是未知,而题目已经给定具体数目,所以应该用m、n来表示。
识别类是面向对象分析的第一步,常用的方法是名词分析法。题目的说明其实就是电梯系统的需求说明,出现了如下主要名词:大厦、电梯、楼层、按钮、运动、指示灯、请求、最底层、最高层、方向和门。这些名词所代表的事物可作为类的初步候选者。其中,大厦、最底层、最高层和楼层处于问题范畴之外,因此不必考虑。运动、方向、指示灯和门可作为其它类的属性,例如,指示灯(的状态)可作为按钮类的属性,方向和门(的状态)可作为电梯类的属性。
经过上述初步筛选只剩下两个基本的候选类,即电梯类和按钮类。在题目的说明中实际指定了两种按钮,因此,应该为按钮类定义两个子类,即电梯按钮和楼层按钮。综合上述分析结果,可得出系统的类图,如图13-50所示。
这个模型是非常初步的模型,需要进一步充实、精化和完善。
分析上述模型会发现它存在比较明显的不足:在实际的电梯系统中,按钮并不直接与电梯通信;为了决定分派哪一部电梯去响应一个特定的请求,必须有某种类型的电梯控制器。然而在题目说明中并未提到控制器,因此它未被列入候选类中。由此可见,名词分析法只为寻找候选类提供了初步线索,不能指望依靠这种方法找出全部候选类。系统分析员必须根据领域知识、常识和经验做进一步分析,才能找出问题域中所有的类。补充了电梯控制器类之后,其类图如图13-51所示。
这个模型也并非十分完善。电梯类的主要功能应是执行电梯控制器发出的移动或等待命令,如果将门(的状态)作为电梯的一个属性,则电梯还要执行关门或开门的命令,这样电梯类的功能就不单一了。于是将电梯门划分出来成为一个独立的类,一旦将其作为一个独立的类,则打开或关闭电梯门的唯一办法就是向“电梯门”类对象发送消息。如果电梯门类封装得好,就能保证不会在错误的时间关闭或打开电梯门,从而有效杜绝严重意外事故的发生。同样,出于安全考虑,在未经授权时不能修改“请求”,因此将“请求”设计成独立的类。经过再次完善之后的类图如图13-19所示。
教育学老师推荐了杜威的《民主主义与教育》和卢梭的《爱弥儿》让我们二选一读一下做读书报告,是要挺详细 其他 2020-04-05 …
请教大家,有没有这样的字:左右或者上下的读音一样,写法不一样,可组合起来又是另外一个读音!例如:相 语文 2020-05-13 …
安徒生童话-读后感我要安徒生童话的每一篇的读后感,字数20字以内,篇数越多越好,读后感就是大致写一 数学 2020-05-15 …
学英语,怎样通过朗读提高英语语感?如题想了解一下,朗读应该对于学习英语有很大作用的,大家帮忙说下具 语文 2020-05-17 …
怎么学英语,我一点都不懂,我想学一下,有什么办法,知道的告诉我一下我读到初一就没读了,是家庭原因, 其他 2020-05-17 …
白练()空、浅尝()止……读音也标一下……通融一下啊~还有,鞠躬尽()也填一下,读音要标,我会加悬 语文 2020-05-20 …
小明读一本书,上午读了这本书的十分之一,下午读了24页,这时上午与下午所读页数的比是3:1.这本书 数学 2020-06-03 …
小明上午读了这本书的十分之一,下午读了24页,这时上午于下午所读的页数的比是1:3,用比例解 数学 2020-06-03 …
这位名师交给学生的读书方法是什么?古时候,有个人到当地一个非常有名的老师门下求学.奇怪的是,这位名 其他 2020-06-10 …
上面一个草头,下面一个双口吕,谁可以告诉我一下是读什么字 语文 2020-06-13 …