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