Опубликован: 23.10.2005 | Доступ: свободный | Студентов: 4087 / 201 | Оценка: 4.44 / 4.19 | Длительность: 33:04:00
Специальности: Программист
Лекция 4:

Как найти классы

< Лекция 3 || Лекция 4: 123456 || Лекция 5 >

Ключевые концепции

  • Идентификация классов - одна из принципиальных задач ОО-конструирования ПО.
  • Идентификация классов - двойственный процесс - предложение кандидатов и их отбор. Нужно уметь находить потенциальных кандидатов и уметь отсеивать неподходящих.
  • Идентификация классов - это идентификация подходящих абстракций в моделируемой области пространстве решений.
  • "Подчеркивание существительных в документе требований" - это не подходящая техника для обнаружения потенциальных классов, так как ее результаты зависят от стиля написания документа. Она может приводить как к появлению лишних кандидатов, так и к пропуску нужных.
  • Классы разделяются на три группы. Классы анализа связаны с концепциями моделируемого внешнего мира. Классы проектирования описывают архитектурные решения. Классы реализации описывают структуры данных и алгоритмы.
  • Классы проектирования обычно требуют наибольшей изобретательности.
  • При проектировании внешних классов помните, что внешние объекты включают концепции наряду с материальными предметами.
  • Применяйте критерий абстракции данных всякий раз, когда нужно решить, представляет ли данное понятие настоящий класс.
  • Классы реализации включают как эффективные, так и отложенные классы, описывающие абстрактные категории.
  • Наследование обеспечивает повторное использование с одновременной адаптацией к изменившимся условиям.
  • Способ получения классов состоит в оценке кандидатов и поиске необнаруженных абстракций, в частности путем анализа межмодульных передач данных.
  • Использование Case-технологии или сценариев может быть полезно как средство проверки правильности и как руководство на заключительных этапах реализации, но не должно использоваться на этапах анализа и проектирования.
  • Лучшим источником классов являются библиотеки повторного использования.

Библиографические замечания

Советы по использованию существительных документа требований в качестве начальной точки нахождения классов стали популярными благодаря Гради Бучу [Booch 1986], который заимствовал эту идею из ранней статьи Эббота [Abbot ACM, 26, 1983]. Дальнейшие рекомендации появились в [Wirfs-Brock 1990].

Статья по формальным спецификациям [M 1985a] анализировала проблемы, связанные с естественным языком документа требований. В ней изучались описания, широко используемые в литературе по верификации программ, и была введена таксономия возникающих дефектов: шум, двусмысленность, противоречие, излишняя спецификация, ссылки вперед. В ней обсуждалось, как формальные спецификации могут справиться с некоторыми из проблем.

[Walden 1995] рассмотрел полезные рекомендации для идентификации классов.

В приложении B [Page-Jones 1995] перечислены "симптомы" отбраковки кандидатов, уведомляющие проектировщиков об опасных сигналах, подобно тем, что были рассмотрены в данной лекции.

[Ong 1993] описывает инструментарий преобразования не ОО-программ, главным образом Fortran программ в ОО-форму. Преобразование является полуавтоматическим. Автор описывает некоторые из эвристик идентификации классов, согласующиеся с данной лекцией, в частности COMMON -блоки.

Simula 1 описана в [Dahl 1966]. Более подробное описание языка Simula дается в "лекции 17" .

Книги по типовым структурам данных являются надежным источником классов реализации, включая известный трехтомник Кнута [Knuth 1981, Knuth 1973], [Aho 1974, Aho 1983].

[Gore 1996] представляет фундаментальные структуры данных и алгоритмы полностью в ОО-манере.

Источники классов проектирования приведены в [Gamma 1995], где даны образцы проектирования, и в [M1994], содержащей библиотеку классов и обсуждающей в деталях понятия "класса описателя" и "класса итератора". В книге [Krief 1996] представлена модель Smalltalk MVC.

Упражнения

У4.1 Floors как integers

Определите класс FLOOR как наследника INTEGER, ограничив применимые операции.

У4.2 Инспектирование объектов

Даниел Холберт и Патрик О-Брайен обсуждали проблему, возникающую при проектировании окружения разработки ПО:

Рассмотрим свойство inspector, используемое для отображения информации об 
объекте в окне отладки. Для разных объектов нужны разные инспекторы. Например, 
информация о точке может быть выведена в простом формате, а о большом 
идвумерном массиве может потребовать вертикального и горизонтального скроллинга.
  Прежде всего следует решить, где описать поведение инспектора - в классе, 
связанном с инспектируемым объектом, или в отдельном классе?

Отвечая на это вопрос, рассмотрите все за и против каждого варианта. Заметьте, могут оказаться полезными результаты обсуждения, приведенные в последующих лекциях, посвященных наследованию.

< Лекция 3 || Лекция 4: 123456 || Лекция 5 >