C++程序设计教程习题答案(郑秋生版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参考答案:
1.面向对象方法把对象作为由数据及可以施加在这些数据上的操作所构成的统一体。
对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它必须发消息请求对象主动地执行它的某些操作,处理它的私有数据,但不能从外界直接对它的私有数据进行操作。
面向对象方法是一种新的思维方法,它不是把程序看作是工作在数据上的一系列过程或函数的集合,而是把程序看作是相互协作而又彼此独立的对象的集合。
2,面向对象开发技术分三个阶段:
(1)面向对象分析就是抽取和整理用户需求并建立问题域精确模型的过程
(2)面向对象设计可直接继承分析阶段的类图和交互图等分析结果,然后确定每个类内部的数据和方法,以及每个方法的处理算法、过程和接口等。
面向对象设计过程一般仍分为结构设计和详细设计。
(3)面向对象实现主要包括两项工作:第一项工作是把面向对象设计结果,翻译成用某种程序设计语言书写的面向对象程序;第二项工作是测试并调试面向对象的程序。
3.UML 是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。
它:
.不是一种可视化的程序设计语言而是一种可视化的建模语言
.不是工具或知识库的规格说明而是一种建模语言规格说明是一种表示的标准
.不是过程也不是方法但允许任何一种过程和方法使用它
它用若干个视图构造系统的模型,每个视图描述系统的一个方面。
视图用图描述,图用模型元素的图示符号表示。
图中包含的模型元素可以有类、对象、节点、包、构件、关系和消息等。
UML的图包括:用例图、类图、对象图、状态图、活动图、顺序图、协作图、构件图和配置图。
4. floorButton和elevatorButton这两个类都是按钮类的子类,拥有共同的特性,如:按下按钮的方法void pressButton()和松开按钮的方法void resetButton();可归纳出其父类按钮类的定义如下:
class Button
{
public:
Button( Elevator & ); //constructor
~Button(); // destructor
void pressButton(); // sets button on
void resetButton(); // resets button off
protected:
Elevator &elevatorRef;
bool pressed; // state of button
};
Button::Button( Elevator &elevatorHandle )
: elevatorRef( elevatorHandle ), pressed( false )
{
cout << "创建按钮" << endl;
}
Button::~Button()
{
cout << "释放按钮" << endl;
}
void Button::pressButton() { pressed = true; }
void Button::resetButton() { pressed = false; }
两个子类电梯按钮和楼层按钮的定义如下:
class ElevatorButton : public Button //电梯按钮类
{
public:
ElevatorButton( Elevator & ); // constructor
~ElevatorButton(); // destructor
void pressButton(); // press the button
void resetButton();
};
ElevatorButton::ElevatorButton(Elevator &elevatorHandle )
: Button( elevatorHandle )
{
cout << "电梯按钮创建" << endl;
}
ElevatorButton::~ElevatorButton()
{
cout << "释放电梯按钮" << endl;
}
void ElevatorButton::pressButton()
{
Button::pressButton();
cout << "电梯按钮通知电梯准备离开" << endl;
elevatorRef.prepareToLeave( true ); //调用电梯的方法准备上升或下降};
class FloorButton : public Button //楼层按钮的定义
{
public:
FloorButton( int, Elevator & ); // constructor
~FloorButton(); // destructor
void pressButton(); // press the button
void resetButton();
private:
int floorNumber; // number of the button's floor
bool pressed; //楼层的状态
Elevator& elevatorRef; //
};
FloorButton::FloorButton( int number, Elevator &elevatorHandle )
: Button( elevatorHandle ), floorNumber( number )
{
Button::pressButton();
cout << "第几层" << floorNumber << "楼层按钮创建" <<endl;
}
FloorButton::~FloorButton()
{
cout << "floor " << floorNumber << " button destroyed"<<endl;
}
void FloorButton::pressButton()
{
Button::pressButton();
cout << "第几楼层的按钮" << floorNumber <<”按下.”<<end;
elevatorRef.summonElevator( floorNumber ); //通知电梯响应
}
void ElevatorButton::resetButton()
{
pressed = false;
}
5.将4种的父类Button的方法pressButton()和resetButton()改为纯虚函数即可。
6.根据对象间的关联个数如一对一,多队一或一对多的不同,采用指针或引用的方式实现对象间的关联.。