Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[ Монахов ] Объектно-ориентированное программир...doc
Скачиваний:
4
Добавлен:
28.09.2019
Размер:
497.66 Кб
Скачать

Объектно-ориентированное программирование

С примерами на Object pascal (72 часа)

Вадим Валериевич Монахов, доцент кафедры вычислительной физики СпбГУ

Введение

1.1. Основной принцип структурного программирования

Структурное программирование — это метод программирования, опирающийся на структурную организацию программы.

Основной принцип структурного программирования - обеспечить максимальное соответствие структуры текста программы логике решаемой проблемы.

Способы реализации основного принципа структурного программирования:

1) Структурируемости и читаемости текста программы – отступы, обозначения, группировка частей текста.

2) Отлаживаемость программы – пригодность конструкций языка к отладке. В значительной степени связана с особенностями типизации данных. Наличие жесткого контроля типов с диагностикой ошибок при трансляции программы. Другая важная часть – наличие интегрированной среды разработки.

3) Инкапсуляция данных — наличие структурных типов данных (массивы, записи, строки, множества, файловые типы, потоки и т.п.) с возможностью оперирования переменной структурного типа как единым целым.

4) Инкапсуляция программного кода - блоки разных уровней, модули, пакеты и т.п. с особыми правилами прозрачности и интерфейсами между ними.

5) Инкапсуляция программного кода и данных во время выполнения программы, со специальными ограничениями доступа, правилами прозрачности, интерфейсами, диагностикой ошибок во время выполнения программы. Примеры: обработка исключительных ситуаций во время выполнения, обработки событий, подпроцессы.

Примеры неструктурных языков:

Ассемблер — не удовлетворяет:

  1. "Читаемость" — из-за плохой читаемости программы, отсутствия структурируемости текста;

  1. "Отлаживаемость" — полное отсутствие;

  1. "Структурные типы" — полное отсутствие;

  2. "Инкапсуляция кода" — полное отсутствие;

  3. "Инкапсуляция времени выполнения" — полное отсутствие.

FORTRAN — не удовлетворяет:

  1. "Читаемость" — из-за необходимости часто использовать оператор goto, неразвитости блочной организации текста программы, позиционной зависимости кода;

  1. "Отлаживаемость" — из-за отсутствия пользовательских типов и, что более критично — слабого контроля типов. С этим связано существование недиагностируемых ошибок типа DO7I=1.10, когда в операторе цикла вместо "," поставили ".", в результате чего "Voyager" пролетел мимо Венеры;

  1. "Структурные типы" — отсутствие структурных типов данных (кроме массивов);

  2. "Инкапсуляция кода" — почти отсутствует, так как нет модулей, вложенности блоков программного кода (подпрограммы не могут быть вложены друг в друга) и крайне плохо организованных интерфейсов между блоками кода (операторы block data и т.д.);

  3. "Инкапсуляция времени выполнения" — полное отсутствие.

В FORTRAN-77 появились возможности, преодолевающие ряд перечисленных недостатков. FORTRAN-99 пошел еще дальше, однако многие недостатки сохранялись, а новые возможности сделали его достаточно сложным и непоследовательным.

Примеры структурных языков:

С:

  1. "Читаемость" — удовлетворительно (не очень хорошая читаемость из-за наличия макросов машинной ориентации языка с выражениями типа y+=x );

  1. "Отлаживаемость" —удовлетворительно не очень хороший синтаксис языка, поэтому много ошибок не отслеживается при компиляции (например, "," вместо ";" в функции "for", а также ошибки, возникающие из-за правил автоматического приведения типов). Наличие указателей с соответствующими правилами присваивания часто приводит к фатальным ошибкам.

  1. "Структурные типы" —хорошо;

  2. "Инкапсуляция кода" —хорошо. Не очень удачно организована модульность;

  3. "Инкапсуляция во время выполнения" — полное отсутствие.

C++:

То же, что C, 2) несколько усовершенствован (однако переусложнен). Имеется объектная модель, расширяющая 1), 2), 3), 4). Правда, имеется дефект в ограничении правила видимости объектов (правила видимости могут быть несанкционированно изменены).

5)"Инкапсуляция времени выполнения" — наличие обработки исключительных ситуаций (exceptions).

PASCAL:

  1. "Читаемость" — хорошо;

  1. "Отлаживаемость" — хорошо. Проблемы: правила автоматического приведения типов, работа с указателями, явное приведение типов, вариантная запись;