КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Метод получения классов
Мало-помалу идеи, обсуждаемые в этой лекции, в совокупности дают то, что не слишком претенциозно можно называть методом получения классов при конструировании ПО (напомним, метод - это способ породить, воспитать, проложить дорогу, создать нечто стоящее).
Идентификация класса требует двух неразрывно связанных видов деятельности - выявления множества кандидатов в классы и отбора среди них действительно нужных. В двух следующих таблицах подводятся итоги.
Прежде всего начнем с источников классов.
| Таблица 4.1. Источники возможных классов
| | Источник идей
| Что ищется
| | Существующие библиотеки
| · Классы, отвечающие потребностям приложения.
· Классы, описывающие концепции, релевантныеприложению.
| | Документ требований
| · Часто встречающиеся термины.
· Термины, заданные явными определениями.
· Термины, не определенные точно, но считающиеся само собой разумеющимися.
· (Грамматические категории следует игнорировать.)
| | Обсуждения с заказчиками и будущими пользователями
| · Важные абстракции проблемной области.
· Специфический жаргон проблемной области.
· Помнить, что классы, приходящие из "внешнего мира", могут описывать как материальные, так иконцептуальные объекты.
| | Документация (руководства пользователей) для других систем в той же проблемной области, например от конкурентов
| · Важные абстракции проблемной области.
· Специфический жаргон проблемной области.
· Полезные абстракции проектирования.
| | Не ОО-системы и их описания
| · Элементы данных, передаваемые в виде аргументов компонентам ПО.
· Разделяемые данные (Common блоки FORTRAN).
· Важные файлы.
· Секции данных (COBOL).
· Типы записей (Pascal, C, C++).
· Сущности при ER-моделировании.
| | Обсуждения с опытными проектировщиками
| · Классы проектирования, успешно используемые в предыдущих разработках.
| | Литература по алгоритмам и структурам данных
| · Известные структуры данных, поддержанные эффективными алгоритмами.
| | Литература по ОО-проектированию
| · Применимые образцы проектирования.
| Рассмотрим теперь критерии, позволяющие более внимательно исследовать классы и, возможно, отвергнуть часть из них.
| Таблица 4.2. Причины отбраковки кандидатов в классы
| | Сигналы опасности
| Причина подозрительности
| | Класс с отглагольным именем (произведенным от глагола, инфинитив или императив)
| Может быть простой подпрограммой, а не классом
| | Полностью эффективный класс с одной экспортируемой подпрограммой
| Может быть простой подпрограммой, а не классом.
| | Класс, описанный как "выполняющий нечто"
| Может не быть подходящей абстракцией.
| | Класс без подпрограмм
| Может быть важной частью информации, но не АТД. Может быть АТД, для которого просто забыли указать операции.
| | Класс, введенный без компонентов или с небольшим их числом (но наследующий компоненты своих родителей)
| Может быть результатом "таксомании".
| | Класс, покрывающий несколько абстракций
| Должен быть разделен на несколько классов, по одному на каждую абстракцию.
|
|