某城市拟开发一个基于Web的城市黄页,公开发布该城市重要的组织或机构(一下统称为客户)的基本信息,方便城市生活。该系统的主要功能描述如下:
(1)搜索信息:任何使用Internet的网络用户都可以搜索发布在城市黄页中的信息,例如客户的名称、地址、联系电话等。
(2)认证:客户若想在城市黄页上发布信息,需通过系统的认证。认证成功后,该客户成为系统授权用户。
(3)更新信息:授权用户登录系统后,可以更改自己在城市黄页中的相关信息,例如变更联系电话等。
(4)删除客户:对于拒绝继续在城市黄页上发布信息的客户,有系统管理员删除该客户的相关信息。
系统采用面向对象方法进行开发,在开发过程中认定出如下表所示的类。系统的用例图和类图分别如图1和图2所示。
类列表 | |
类名 | 说明 |
InternetClient | 网络用户 |
CustomerList | 客户集.维护城市黄页上的所有客户信息 |
Customer | 客户信息,记录单个客户的信息 |
RegisteredClient | 授权用户 |
Administrator | 系统管理员 |
认定类是面向对象分析中非常关键的一个步骤。一般首先从问题域中得到候选类集合,在根据相应的原则从该集合中删除不作为类的,剩余的就是从问题域中认定出来的类。简要说明选择候选类的原则,以及对候选类集合进行删除的原则。
参考答案:候选类的选择运用了良性依赖原则“不会在实际中造成危害的依赖关系,都是良性依赖”和接口隔离原则(ISP)。
解析: 候选类的选择运用了良性依赖原则“不会在实际中造成危害的依赖关系,都是良性依赖”。通过分析不难发现,本原则的核心思想是“务实”,很好地揭示了极限编程(Extreme Programming)中“简单设计”和“重构”的理论基础。本原则可以帮助我们抵御“面向对象设计五大原则”以及设计模式的诱惑,以免陷入过度设计( Overengineering)的尴尬境地,带来不必要的复杂候选类的删除使用的是接口离原则候选类的删除运用了接口隔离原则(ISP):不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。这个说得很明白了,再通俗点说不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。