Технологии программирования
Шрифт:
Использование существующих разработок. Обособленный класс или группа классов из уже существующего проекта может быть легко интегрирована в новый класс. Однако подобная интеграция вносит определенные ограничения в структуру системы и может сказаться на эффективности разработки самой программы. Изготовители систем объектно-ориентированного программирования поставляют системы с совместимыми библиотеками классов. Очевидно, чем больше готовых библиотечных классов будет использовано в программе, тем меньше кода придется писать при реализации программы.
В рассмотренных
Правило 1. Узнайте, что вам предстоит создать.
Правило 2. Ставьте определенные и осязаемые цели.
Правило 3. Не пытайтесь с помощью технических приемов решить социальные проблемы.
Правило 4. Рассчитывайте на большой срок в проектировании и управлении людьми.
Правило 5. Используйте существующие системы в качестве моделей, источника вдохновения и отправной точки.
Правило 6. Проектируйте в расчете на изменения: гибкость, расширяемость, переносимость, повторное использование.
Правило 7. Документируйте, предлагайте и поддерживайте повторно используемые компоненты.
Правило 8. Поощряйте и вознаграждайте повторное использование: проектов, библиотек, классов.
Правило 9. Сосредоточьтесь на проектировании компоненты.
Правило 10. Используйте классы для представления понятий.
Правило 11. Определяйте интерфейсы так, чтобы сделать открытым минимальный объем информации, требуемой для интерфейса.
Правило 12. Проводите строгую типизацию интерфейсов всегда, когда это возможно.
Правило 13. Используйте в интерфейсах типы из области приложения всегда, когда это возможно.
Правило 14. Многократно исследуйте и уточняйте как проект, так и реализацию.
Правило 15. Используйте лучшие доступные средства для проверки и анализа проекта и реализации.
Правило 16. Экспериментируйте, анализируйте и проводите тестирование на самом возможном раннем этапе.
Правило 17. Стремитесь к простоте, максимальной простоте, но не сверх того.
Правило 18. Не разрастайтесь, не добавляйте возможности "на всякий случай".
Правило 19. Не забывайте об эффективности.
Правило 20. Сохраняйте уровень формализации, соответствующий размеру проекта.
Правило 21. Не забывайте, что разработчики,
программисты и даже менеджеры остаются людьми.Б. Страуструп придумал реализацию механизма множественного наследования и при этом отвергал агрегирование, хотя и реализовал это в своем языке C++.
Приведенный далее пример показывает невозможность осуществления решения следующей простой задачи двумя способами решения — с использованием множественного наследования и агрегирования. В процессе решения задач было выявлено, что в ряде задач без выполнения третьего шага невозможно корректное выполнение второго шага. Таким образом, при решении одного и того же примера двумя способами второй и третий шаги проекта были взаимно переставлены. Также добавлен шаг "классификация объектов" (составление словаря).
Первый способ решения задачи — использование множественного наследования.
Постановка задачи примера. Вывести на экран фигуру, показанную на рис. 8.4.
Рис. 8.4. Изображение выводимой фигуры
Изображенная на рис. 8.4 фигура состоит из правильного пятиугольника и описанной вокруг него окружности, где хс, yc — координаты центра описанной вокруг пятиугольника окружности; R — радиус описанной вокруг пятиугольника окружности.
Кроме того, фигура рисуется заданным цветом.
Следует отметить, что задача может быть решена несколькими способами.
Шаг 1а. Определение объектов и выявление их свойств.
Объект — Рисунок. Свойства объекта:
— радиус окружности (R);
— координаты центра окружности (xc; yc);
— цвет линий.
Объект — Пятиугольник. Свойства объекта:
— радиус описанной вокруг него окружности (R);
— координаты центра описанной вокруг него окружности (хс; yc):
— цвет линии.
Объект — Окружность. Свойства объекта:
— радиус (R);
— координаты центра (хс; yc);
— цвет линии.
Решение задачи примера с использованием множественного наследования.
Шаг 1б. Классификация объектов (составление словаря).
Пятиугольник — центрально-симметричная фигура с пятью вершинами.
Окружность — центрально-симметричная фигура, каждая точка которой отстоит от заданной точки — центра, на заданную величину — радиус окружности.
Полученный граф наследования классов изображен на рис. 8.5.
Шаг 2. Уточнение классов с точным определением их зависимостей от других классов. Выясняется наследование и использование зависимостей.
Рис. 8.5. Граф наследования классов согласно первому способу