面向对象分析与设计的实践指南
1. 学习目标与开发周期
在软件开发中,我们可以从面向对象的视角学习如何分析问题、设计程序,以及运用 C++ 语法实现设计目标,同时注重程序的可复用性和可扩展性。
开发周期方面,常见的瀑布技术中,设计师确定程序功能,架构师规划程序构建方式和使用的类,程序员负责实现。但这种技术并不适合编写优秀程序,因为在编程过程中,已完成部分和待完成部分之间存在必要且自然的反馈循环。而且,编程前需完成的设计量取决于程序规模,复杂项目需要更完善的架构。
2. 模拟报警系统
2.1 问题描述
假设要模拟一个房屋的报警系统。该房屋有四个卧室、一个地下室和一个地下车库。楼下各房间窗户数量不同,楼上卧室除主卧有四个窗户,其余各有两个窗户,地下室有四个半窗户,车库有一个窗户。房屋正常通过前门进入,厨房有滑动玻璃门,车库有三个门,后院还有一个地窖门。所有门窗都有警报,每个电话和主卧床边有紧急按钮,庭院也有警报且经过校准,不会被小动物或鸟类触发。地下室的中央警报系统在警报触发时会发出警告声,若未在规定时间内解除警报则会报警,按下紧急按钮也会立即报警。此外,警报系统还与火灾和烟雾探测器以及洒水系统相连,具备容错能力、内部备用电源,并装在防火箱中。
2.2 概念化阶段
此阶段需理解客户使用该程序的期望,思考程序能解答的问题,如传感器损坏多久会被发现、是否有办法在不报警的情况下绕过窗户警报等。同时,要明确程序内外的界限,例如模拟中是否包含警方,实际房屋警报的控制是否在系统内。
2.3 分析与需求阶段
概念化阶段之后是分析阶段,作为面向对象编程分析师,要帮助