В Камаев - Технологии программирования
- Название:Технологии программирования
- Автор:
- Жанр:
- Издательство:Издательство «Высшая школа»
- Год:2006
- Город:Москва
- ISBN:5-06-004870-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
В Камаев - Технологии программирования краткое содержание
Второе издание (1-е — 2005 г.) дополнено главами по структуре данных и основам инженерии создания программ.
Для студентов вузов, обучающихся по направлению «Информатика».
Технологии программирования - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Например, вместо того чтобы делать класс Window (окно) подклассом класса Rectangle (прямоугольник) — ведь окно является прямоугольником, — мы можем воспользоваться внутри Window поведением класса Rectangle, поместив в класс Window переменную экземпляра типа Rectangle и делегируя ей операции, специфичные для прямоугольников. Другими словами, окно не является прямоугольником, а содержит его. Теперь класс Window может явно перенаправлять запросы своему члену Rectangle, а не наследовать его операции.
Главное достоинство делегирования в том, что оно упрощает композицию поведения во время выполнения. При этом способ комбинирования поведения можно изменять. Внутреннюю область окна разрешается сделать круговой во время выполнения простой подставкой вместо экземпляра класса Rectangle экземпляра класса Circle. Предполагается, конечно, что оба эти класса имеют одинаковый тип.
У делегирования есть и недостаток, свойственный и другим подходам, применяемым для повышения гибкости за счет композиции объектов. Заключается он в том, что динамическую, в высокой степени параметризованную программу труднее понять, чем статическую. Есть, конечно, и некоторая потеря машинной производительности, но неэффективность работы проектировщика гораздо более существенна. Делегирование можно считать хорошим выбором только тогда, когда оно позволяет достичь упрощения, а не усложнения. Нелегко сформулировать правила, ясно говорящие, когда следует пользоваться делегированием, поскольку эффективность его зависит от контекста и личного опыта программиста.
Таким образом, можно выделить следующие фундаментальные характеристики объектно-ориентированного мышления:
Характеристика 1. Любой предмет или явление могут рассматриваться как объект.
Характеристика 2. Объект может размещать в своей памяти (в полях) личную информацию, независимую от других объектов. Рекомендуется использовать инкапсулированный (через особые методы) доступ к информации полей.
Характеристика 3. Объекты могут иметь открытые по интерфейсу методы обработки сообщений. Сами сообщения вызовов методов посылаются другими объектами, но для осуществления разумного интерфейса между объектами некоторые методы могут быть скрыты.
Характеристика 4. Вычисления осуществляются путем взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие (метод). Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия. Объект — получатель сообщения — обрабатывает сообщения своими внутренними методами.
Характеристика 5. Каждый объект является представителем класса, который выражает общие свойства объектов данного класса в виде одинаковых списков набора данных (полей) в своей памяти и внутренних методов, обрабатывающих сообщения. В классе методы задают поведение объекта. Тем самым все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия.
Характеристика 6. Классы организованы в единую квазидревовидную структуру с общим корнем, которая называется иерархией наследования. Обычно корень иерархии направлен вверх. При множественном наследовании ветви могут срастаться, образуя сеть наследования. Память и поведение, связанные с экземплярами определенного класса, автоматически являются доступными любому классу, расположенному ниже в иерархическом дереве.
Характеристика 7. Благодаря полиморфизму — способности подставлять во время выполнения вместо одного объекта другой, с совместимым интерфейсом, в периоде выполнения одни и те же объекты могут разными методами исполнять одни и те же запросы сообщений.
Характеристика 8. Композиция является предпочтительной альтернативой множественному наследованию и позволяет изменять состав объектов агрегата в процессе выполнения программы.
Характеристика 9. Структура объектно-ориентированной программы на этапе выполнения часто имеет мало общего со структурой ее исходного кода. Последняя фиксируется на этапе компиляции. Ее код состоит из классов, отношения наследования между которыми неизменны. На этапе же выполнения структура программы — быстро изменяющаяся сеть из взаимодействующих объектов. Две эти структуры почти независимы.
8.3. СРАВНИТЕЛЬНЫЙ АНАЛИЗ ТЕХНОЛОГИЙ СТРУКТУРНОГО И ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
Для проведения сравнительного анализа технологий структурного и объектно-ориентированного программирования разработана специальная методика, основанная на таких объективных принципах, как арифметический подсчет элементов текста программы, анализе алгоритмов программ. Арифметический подсчет выполнялся ручным счетом и был дополнен статистическими данными, выдаваемыми компиляторами и текстовыми редакторами. Итоговые таблицы и их визуализация осуществлялась при помощи программы Excel. Таблицы включают информацию по отдельным файлам и расчет итоговой информации по всей программе.
Информация по отдельным файлам представлена:
1) именем файла;
2) общим количеством строк файла (показывается текстовым редактором);
3) количеством строк операторов описаний данных во всем файле;
4) общим количеством комментариев в файле (выявляется контекстным поиском признака комментария в тексте файла);
5) количеством строк отдельных комментариев в файле;
6) количеством пустых строк в файле (выявляется визуальным анализом текста файла);
7) количеством подпрограмм в файле (является контекстным поиском заголовков procedure и function в тексте файла);
8) количеством операторов описания подпрограмм в файле;
9) количеством строк кода, рассчитанных по формуле: количество строк кода = 2) — 3) — 5) — 6) — 8).
Количество операторов описания подпрограмм в файле выявляется по принципу подсчета всех срок, например, в следующем примере выявлено четыре строки:
function CellString (Col, Row: Word; var Color: Word;
Formatting; Boolean): String;
Begin
End; {CellStrung}
Для проведения объективного сравнительного анализа потребовался выбор функционально похожих программ:
— Mcalc — рассмотренная ранее в гл. 2 и 7 демонстрационная программа, реализованная по технологии структурного программирования;
— Tcalc — демонстрационная программа, реализованная по технологий объектно-ориентированного программирования — функционально полный аналог программы Mcalc.
Результаты арифметического анализа текста программы MCalc, разработанной по технологии структурного программирования, представлены в табл. 8.1.
Читать дальшеИнтервал:
Закладка: