面向对象分析与设计
上QQ阅读APP看书,第一时间看更新

1.4.3 软件结构设计

在面向对象的软件设计过程中,通常可分为软件结构的设计和软件行为的设计。软件结构设计关注的通常是软件中包含的类和类之间的关系,行为设计关注的是如何在软件中的各种类之间分配适当的方法。复杂的是二者之间并不是相互独立的,而是相辅相成的。

从结构上看,可以将软件看成是一组类及其类之间的关系构成整体。因此设计时准确地找到合适的类和类关系将是至关重要的。考虑图1-5所示的概念模型,从概念模型开始设计软件将是一个容易让人接受的方法。

从简化设计的角度出发,我们给出了如图1-6所示的软件结构设计模型。其中,CalculateForm类是计算器软件的窗口类(也称为边界类),它所承担的职责是接收用户输入的数据和命令,并负责将数据和命令传递给相应的计算器对象。同时,还负责将计算器的状态变化反馈给用户。

Calculator类是计算器类,代表简单计算器,ScientificCalculator类是科学计算器类,也是简单计算器类的派生类。这个设计与图1-5所示的概念模型稍有不同,但它们的实质是相同的。后者更灵活地运用了继承机制。

StatisticCalculator是统计计算器类,它所承担的责任是保存计算器使用过程中产生的数据,并为这些数据提供一组特定的统计计算功能。与前两种计算器类不同的是,它被设计成一个单独的类,并以聚合的方式组合到计算器对象中。这将使得简单计算器和科学计算器都含有统计计算的功能。

图1-6中最后一个类Express是表达式类,用来保存每次使用计算器计算时所输入的一个表达式,同时软件会将这些表达式对象缓存在计算器中CalculateForm对象的表达式列表中,以便用户查看。

图1-6 计算器的结构模型