В пункте 1.3 сформулирована задача и
приведена схема сети банковского обслуживания (рисунок 1.3). Анализируя эту постановку задачи,
можно выделить возможные классы, сопоставив их существительным, упомянутым в ее
предварительной формулировке; получится следующий список возможных имен классов
(в алфавитном порядке):
ATM (банкомат)
| кассир
| программное обеспечение
|
банк
| кассовый терминал
| система
|
банковская сеть
| квитанция
| проверка безопасности
|
данные проводки
| клиент
| служба ведения записей
|
данные счета
| компьютер банка
| счет
|
деньги
| консорциум
| цена
|
доступ
| пользователь
| центральный компьютер
|
карточка
| проводка |
Исследуем этот список, исключая из него имена классов в
соответствии с рекомендациями п. 2.2.1:
- избыточные классы
: ясно, что клиент и пользователь означают одно и то же
понятие; для банковской системы более естественно оставить класс клиент;
- нерелевантные классы
: таким классом является класс цена (он не имеет
непосредственного отношения к работе банковской сети);
- нечетко определенные классы
: такими классами являются
служба_ведения_записей и проверка безопасности (эти службы входят в состав
проводки), система (в нашем случае непонятно, что это такое), банковская_сеть
(вся наша программная система будет обслуживать банковскую сеть);
- атрибуты
: данные проводки, данные счета, деньги (имеются в виду реальные
деньги, выдаваемые клиенту кассиром или банкоматом, либо принимаемые кассиром),
квитанция (выдается клиенту вместе с деньгами) более естественно иметь в
качестве атрибутов;
- реализационные конструкции
выражают такие имена как
программное_обеспечение и доступ; их тоже следует исключить из списка имен
возможных классов.
После исключения всех лишних имен возможных классов получаем
следующий список классов, составляющих проектируемую систему банковского
обслуживания (эти классы представлены на рисунке
2.5):
ATM (банкомат)
| кассовый терминал
| проводка
|
банк
| клиент
| счет
|
карточка
| компьютер банка
| центральный компьютер
|
кассир
| консорциум |
|