- •С примерами на Object pascal (72 часа)
- •Введение
- •1.1. Основной принцип структурного программирования
- •"Инкапсуляция времени выполнения" — полное отсутствие.
- •"Структурные типы" —хорошо;
- •1.2. Основные задачи структурного программирования
- •1.3. Основные принципы объектно-ориентированного программирования (ооп)
- •2.1. Алфавит языка pascal. Идентификаторы.
- •2.2. Простые и составные специальные символы, используемые на пк.
- •2.3. Стандартные типы данных. Двоичное представление чисел и дополнительный код.
- •2.4. Особенности работы с некоторыми типами данных
- •2.5. Арифметические операторы.
- •2.6. Логические операторы и операции отношения.
- •2.7. Потеря точности, потеря порядка и переполнение при арифметических операциях.
- •2.8. Структура простейшей программы.
- •2.9. Простейшие операторы языка Object pascal
- •1) Цикл от меньшего к большему значению:
- •2) Цикл от большего к меньшему значению:
- •2.10. Структурные типы данных
- •2.11. Указатели. Динамические переменные. Динамическое выделение и высвобождение памяти
- •2.12. Процедуры и функции. Формальные и фактические параметры. Передача параметров по ссылке, по значению и через указатель.
- •2.13. Локальные и глобальные переменные. Побочный эффект функции. Вложенность процедур и функций. Правила видимости.
- •2.14. Пример на правила видимости и передачи параметров
- •2.15. Рекурсия
- •2.1. Инкапсуляция. Объект. Поля данных и методы объекта
- •3.2 Задание модуль класса (статическая объектная модель)
- •4.10. Создание и уничтожение объектов. Конструкторы и деструкторы.
- •4.11. Наследование. Статические, виртуальные, динамические и абстрактные методы.
- •4.12. Области видимости объектов.
- •4.13. Обработка исключительных ситуаций.
- •4.14. Специальные средства для работы с ms Windows: сообщения.
- •4.15. События и их делегирование. Обработка событий.
- •4.16. Методы класса и указатели на класс.
- •4.17. Дополнительные возможности Object Pascal.
- •5. Визуальное проектирование в среде Delphi.
- •5.8. Создание экранных форм. Инспектор объектов.
- •5.9. Палитра компонентов.
- •6. Интерфейсы и множественное наследование
- •6.1. Общие представления об интерфейсах в Object pascal
- •6.2. Реализация интерфейсов свойством
- •6.3. Различение имен при реализации нескольких интерфейсов
- •5.11. Спецификаторы вызовов процедур и функций
- •5.12. Динамические массивы
- •5.13. Перезагрузка (overloading) методов, процедур и функций
- •5.14. Параметры по умолчанию
- •5.17. Технологии dde и ole
- •5.18. Технология ActiveX
- •5.20. Использование библиотек OpenGl и glu
- •5.21. Создание программистом собственного компонента Литература
Объектно-ориентированное программирование
С примерами на Object pascal (72 часа)
Вадим Валериевич Монахов, доцент кафедры вычислительной физики СпбГУ
Введение
1.1. Основной принцип структурного программирования
Структурное программирование — это метод программирования, опирающийся на структурную организацию программы.
Основной принцип структурного программирования - обеспечить максимальное соответствие структуры текста программы логике решаемой проблемы.
Способы реализации основного принципа структурного программирования:
1) Структурируемости и читаемости текста программы – отступы, обозначения, группировка частей текста.
2) Отлаживаемость программы – пригодность конструкций языка к отладке. В значительной степени связана с особенностями типизации данных. Наличие жесткого контроля типов с диагностикой ошибок при трансляции программы. Другая важная часть – наличие интегрированной среды разработки.
3) Инкапсуляция данных — наличие структурных типов данных (массивы, записи, строки, множества, файловые типы, потоки и т.п.) с возможностью оперирования переменной структурного типа как единым целым.
4) Инкапсуляция программного кода - блоки разных уровней, модули, пакеты и т.п. с особыми правилами прозрачности и интерфейсами между ними.
5) Инкапсуляция программного кода и данных во время выполнения программы, со специальными ограничениями доступа, правилами прозрачности, интерфейсами, диагностикой ошибок во время выполнения программы. Примеры: обработка исключительных ситуаций во время выполнения, обработки событий, подпроцессы.
Примеры неструктурных языков:
Ассемблер — не удовлетворяет:
"Читаемость" — из-за плохой читаемости программы, отсутствия структурируемости текста;
"Отлаживаемость" — полное отсутствие;
"Структурные типы" — полное отсутствие;
"Инкапсуляция кода" — полное отсутствие;
"Инкапсуляция времени выполнения" — полное отсутствие.
FORTRAN — не удовлетворяет:
"Читаемость" — из-за необходимости часто использовать оператор goto, неразвитости блочной организации текста программы, позиционной зависимости кода;
"Отлаживаемость" — из-за отсутствия пользовательских типов и, что более критично — слабого контроля типов. С этим связано существование недиагностируемых ошибок типа DO7I=1.10, когда в операторе цикла вместо "," поставили ".", в результате чего "Voyager" пролетел мимо Венеры;
"Структурные типы" — отсутствие структурных типов данных (кроме массивов);
"Инкапсуляция кода" — почти отсутствует, так как нет модулей, вложенности блоков программного кода (подпрограммы не могут быть вложены друг в друга) и крайне плохо организованных интерфейсов между блоками кода (операторы block data и т.д.);
"Инкапсуляция времени выполнения" — полное отсутствие.
В FORTRAN-77 появились возможности, преодолевающие ряд перечисленных недостатков. FORTRAN-99 пошел еще дальше, однако многие недостатки сохранялись, а новые возможности сделали его достаточно сложным и непоследовательным.
Примеры структурных языков:
С:
"Читаемость" — удовлетворительно (не очень хорошая читаемость из-за наличия макросов машинной ориентации языка с выражениями типа y+=x );
"Отлаживаемость" —удовлетворительно не очень хороший синтаксис языка, поэтому много ошибок не отслеживается при компиляции (например, "," вместо ";" в функции "for", а также ошибки, возникающие из-за правил автоматического приведения типов). Наличие указателей с соответствующими правилами присваивания часто приводит к фатальным ошибкам.
"Структурные типы" —хорошо;
"Инкапсуляция кода" —хорошо. Не очень удачно организована модульность;
"Инкапсуляция во время выполнения" — полное отсутствие.
C++:
То же, что C, 2) несколько усовершенствован (однако переусложнен). Имеется объектная модель, расширяющая 1), 2), 3), 4). Правда, имеется дефект в ограничении правила видимости объектов (правила видимости могут быть несанкционированно изменены).
5)"Инкапсуляция времени выполнения" — наличие обработки исключительных ситуаций (exceptions).
PASCAL:
"Читаемость" — хорошо;
"Отлаживаемость" — хорошо. Проблемы: правила автоматического приведения типов, работа с указателями, явное приведение типов, вариантная запись;