70____________________________Часть I. Основные характеристики C++
Методы анализа
Объектно-ориентированный анализ преследует своей целью разглядеть объекты в вашей проблемной области. Можно пытаться классифицировать объекты по сходству в поведении или характерных, особенностях. Это непростая задача, но вспомните — существует уйма наук гораздо более древних, чем вычислительная техника, в которых классификация объектов своей предметной области до сих пор остается любимым времяпрепровождением. Так что ничего нет правильного или неправильного — работайте с тем, что работает!
Анализ поведения. В большей части примеров до сих пор основное внимание уделялось идентификации в задаче объектов реального мира. В личном бюджете, например, достаточно очевидно вырисовывались такие элементы, как сберегательный счет и кредитная карточка. Однако иногда бывает удобнее рассматривать наследуемые обязанности — кто, кому и что должен предоставить — и строить иерархию, группируя общие ебязанности.
Анализ области Применения. Когда вы разрабатываете кому-то систему, то это, чаще всего, не первая система такого рода. Поговорите с людьми, знакомыми с предметом. Если вы разрабатываете вексельную систему для юридической фирмы, поговорите с юристами и нотариусами. Они, наверняка, пользовались похожими системами и могут рассказать массу интересного не только о том, что должна делать новая система, но и о том, чего она делать не должна. И еще они прекрасно знакомы с "объектами", которые будут фигурировать в вашей системе — протоколами, отчетами и т. п. Никогда нельзя недооценивать знания и возможную помощь конечных пользователей.
Анализ "С конца". Эксперты в предметной области абсолютно незаменимы, когда вы рассматриваете задачу с точки зрения будущего использования вашей продукции. Общаясь с пользователями, старайтесь представить себе различные схемы работы вашей системы. А затем, проигрывая эти сценарии, вычленяйте объекты, взаимосвязи и модели поведения, необходимые для обеспечения адекватной функциональности.
МОЗГОВОЙ штурм. Купите почтовых карточек. Напишите на них имена классов. Поручите нескольким разработчикам по одной или несколько карточек. При обсуждении будущей системы кратко записывайте, какие классы будут взаимодействовать и их обязанности. Если вы считаете, что карточки могут быть скомбинированы, скомбинируйте их. Если какие-либо следует изъять из обращения, порвите их — это вас не разорит.
Неформальное описание. Изложите на бумаге в свободной форме, чего вы ожидаете от свой системы, а затем внимательно прочитайте напи-