Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по технологии программирования.doc
Скачиваний:
91
Добавлен:
02.05.2014
Размер:
68.61 Кб
Скачать

Лекции по технологии программирования.

1.1. Введение. 1

1.2. Парадигма программирования. 1

1.2.1. Процедурное программирование. 2

1.2.2. Модульное программирование 3

1.2.3. Абстракция данных. 3

1.2.4. Проблемы абстракции данных. 5

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

1.1. Введение.

Цель разработки язык программирования С++.

  • улучшение С

  • поддержка механизма абстракции данных

  • поддержка объектно-ориентированного программирования

1.2. Парадигма программирования.

Объектно-ориентированный язык программирования – это язык программирования, обеспечивающий механизмы, которые на должном уровне поддерживают стиль объектно-ориентированного программирования.

Язык поддерживает стиль программирования, если он предоставляет средства и делает удобным (т.е. довольно легким, безопасным и эффективным) использование этого стиля. Язык на самом деле не поддерживает парадигму программирования, если требуются исключительные усилия или выдающиеся способности для написания соответствующий программ; такой язык лишь дает возможность следовать парадигме. Например можно писать структурированные программы на Фортране и объектно-ориентированные программы на С, но это неизменно будет трудно (во втором случае особенно), поскольку Фортран и С не поддерживают эти парадигмы.

Парадигма поддерживается не только теми очевидными средствами языка которые непосредственно используются при разработке программ, но также и контролем на стадии компиляции и/или на стадии выполнения против непреднамеренных отклонений от парадигмы. Наиболее очевидным примером является проверка соответствия типов, тогда как диагностика неоднозначностей и контроль на стадии выполнения применяются, для того чтобы расширить языковую поддержку парадигмы. Такие дополнительные средства, как стандартные библиотеки и среда программирования, также представляют собой поддержку для парадигмы.

Если в некотором языке имеется больше средств, чем в другом, то это не обязательно означает, что первый язык лучше второго. Важным является не столько объем возможностей языка, сколько то, какие из них действительно поддерживают требуемый стиль программирования в требуемой области приложений. Это означает следующее:

  1. Все средства должны быть искусно и элегантно встроены в язык.

  2. Должна присутствовать возможность использования этих средств в комбинации друг с другом.

  3. Число паразитных и предназначенных для специальных целей средств должно быть минимальным.

  4. Реализация каждого средства не должна приводить к существенным накладным расходам в программах, если этого можно избежать.

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

Язык С++ был разработан с тем, чтобы в дополнение к традиционной технологии программирования на С поддерживать абстракцию данных и объектно-ориентированное программирование при определяющей роли этих пяти ограничений. Однако это вовсе не означает, пользователям навязывается определенный стиль программирования.

1.2.1. Процедурное программирование.

Со времени возникновения программирования господствующей была следующая парадигма.

«Определите, какие процедуры вам нужны; используйте лучшие алгоритмы, которые только сможете найти».

В языках программирования эта парадигма поддерживается функциями, обеспечивающими передачу параметров и возврат значения. Этот стиль мышления отражен в литературе в форме дискуссий о том, каким способом передаются параметры, как различать различные виды параметров, различные виды функций (процедуры, подпрограммы, макроопределения) и т. п. Фортран – первый процедурный язык; Алгол60, Алгол68, Паскаль и С – более поздние изобретения, следующие той же традиции.

Типичный пример «хорошего стиля программирования» - функция для вычисления квадратного корня; если задан параметр-аргумент функции, то она выдаёт результат. Это осуществляется посредством очевидных математических вычислений.

double sqrt ( double arg)

{

// код для вычисления квадратного корня

}

void some_function ()

{

double root2 = sqrt(2);

// …

}

Функции вносят порядок в лабиринте алгоритмов; в этом и заключается их роль в деле организации программ.