当前位置: 首页 > 文档资料 > C++大学教程 >

3.22 有关对象的思考:确定对象属性

优质
小牛编辑
129浏览
2023-12-01

第2章“有关对象的思考”一节开始了关于电梯模拟程序的面向对象设计(OOD)的第一个阶段,即确定实现电梯模拟程序所需要的对象。作为入手点,可以列出问题陈述中的名词,这样就可
以发现电梯模拟程序中的对象有电梯、人、楼层、大楼、各种按钮、时钟、电灯与电铃等等。

第1章介绍对象时曾经指出过对象有属性和行为。对象属性在C++程序中表示为数据,对象行为在C++程序中表示为函数。本节要确定实现电梯模拟程序所需对象的属性。第4章要确定对象行为。第5章要确定电梯模拟程序中对象与对象之间的交互,称为协作(collaboration)。

下面先介绍现实世界中对象的属性。一个人的属性包括身高、体重等。收音机的属性包括调频、调幅、调台和当前音量的设置。汽车的属性包括车速表和全程表、汽油用量表、档位等等。房子的属性包括建筑风格(古典式、现代式)、房间数、面积和层数。个人计算机的属性包括厂家(Apple、IBM、Compaq等等)、显示器类型(黑白或彩色)、主存大小、硬盘容量等等。

电梯实验室任务2

1.首先在字处理器和编辑器程序中输入模拟电梯的问题陈述文本(见2.11节)。
2.找出问题中的事实。消除不相关的文本,并将每个事实放在一行(问题陈述中大约有60个事实)。下面是事实文件的第一个部分:

事实文件
两层办公楼
电梯
电梯上的人

第1层
方向——上和下
时钟
时间0
每秒滴答一次
电梯模拟程序的调度器组件
随机设置每层第一个到达的人
第一次到达的时间
电梯模拟程序
对指定层生成新的人
将人放在该层
人按下该层的向上或向下按钮
该层的向上或向下按钮
人的目标层
人所在的层
第1层第一个出现的人
出现在第一层的人
人上电梯
人按向上按钮

3.将所有事实分类组合以确定第2章练习中的类。用概述形式,在页的左边列出类,并缩排一个制表符大小以列出该类相关的事实。有些事实只涉及一个类,有些事实涉及多个类。每个事实最初应列在每个涉及该事实的类中。注意“方向--上和下”等事实并不显式地属于某个类,但还是要放在一个类中(本例中,该方向是电梯移动的方向)。这个概述文件用于该
任务和下面几个任务。

4.现在将每个类的事实分为两组。第一组标为“属性”,第二组标为“其他事实”。目前操作(行为)应放在“其他事实”中。将操作放在其他事实中时,考虑是否要生成“属性”中的附加项目。例如“电梯关门”是其他事实中的操作,但表示门的属性可开可关:“该层已有人占用”是层的属性,一个层总是被占用或不被占用。电梯的属性包括:运动或停止,有人或无人,向上或向下;按钮的属性是开或关;人的属性是目标层等等。

说明

1.首先列出问题陈述中明确提到的类属性.然后列出问题陈述中隐含的类属性。
2.在需要时增加相应的属性。
3.系统设计不是完善和完整的过程,只要尽力而为,后面几章的练习将会介绍如何对设计进行修改。
4.对象可以是一个类的属性,称为复合。例如,电梯中有第1层和第2层的按钮对象,人需要
按这些按钮以选择目标层。本练习中分别处理所有的类,而不进行复合。第5章将介绍复合。
5.本章介绍了如何实现”随机性”,最终实现电梯模拟程序时,可以用下列语句计划一层中下一个到来的人:

arrivalTime=currentTime+ ( 5+rand(  ) % 16);