Структурный подход к программированию реферат

Обновлено: 02.07.2024

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

Содержание работы
Содержимое работы - 1 файл

Куросовая работа.doc

Государственное Образовательное Учреждение

Среднего Профессионального Образования

"Уральский политехнический колледж"

Курсовая работа

Тема: Технология программирования и основные этапы ее развития

По дисциплине: Технологии разработки программных продуктов

Выполнил студент: 3 курса

Устюгов Артем Владимирович

__________Юдина Ирина Игоревна

2. Структурный подход к программированию (60-70-е годы ХХ в) 7

3. Объектный подход к программированию (с середины 80-х до конца 90-х годов XX в.) 9

4. Компонентный подход и CASE-технологии (с середины 90-х годов XX в. до нашего времени) 11

Техническое задание 16

Практическая часть 17

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

ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ И ОСНОВНЫЕ ЭТАПЫ ЕЕ РАЗВИТИЯ

Технологией программирования называют совокупность методов и средств, используемых в процессе разработки программного обеспечения. Как любая другая технология, технология программирования представляет собой набор технологических инструкций, включающих:

• указание последовательности выполнения технологических операций;

• перечисление условий, при которых выполняется та или иная операция;

• описания самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т. п.

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

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

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

Этот этап охватывает период от момента появления первых вычислительных машин до середины 60-х годов XX в. В этот период практически отсутствовали сформулированные технологии, и программирование фактически было искусством. Первые программы имели простейшую структуру. Они состояли из собственно программы на машинном языке и обрабатываемых ею данных. Сложность программ в машинных кодах ограничивалась способностью программиста одновременно мысленно отслеживать последовательность выполняемых операций и местонахождение данных при программировании.

Создание языков программирования высокого уровня, таких, как FORTRAN и ALGOL, существенно упростило программирование вычислений, снизив уровень детализации операций.

Это, в свою очередь, позволило увеличить сложность программ.

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

(Идея написания подпрограмм появилась гораздо раньше, но отсутствие средств поддержки в первых языковых средствах существенно снижало эффективность их применения.) Подпрограммы можно было сохранять и использовать в других программах. В результате были созданы огромные библиотеки расчетных и служебных подпрограмм, которые по мере надобности вызывались из разрабатываемой программы.

Типичная программа того времени состояла из основной программы, области глобальных данных и набора подпрограмм (в основном библиотечных), выполняющих обработку всех данных или их части.

Слабым местом такой архитектуры было то, что при увеличении количества подпрограмм возрастала вероятность искажения части глобальных данных какой-либо подпрограммой. Например, подпрограмма поиска корней уравнения на заданном интервале по методу деления отрезка пополам меняет величину интервала. Если при выходе из подпрограммы не предусмотреть восстановления первоначального интервала, то в глобальной области окажется неверное значение интервала. Чтобы сократить количество таких ошибок, было предложено в подпрограммах размещать локальные данные.

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

2. СТРУКТУРНЫЙ ПОДХОД К

ПРОГРАММИРОВАНИЮ (60-70-Е ГОДЫ ХХ В)

Структурный подход к программированию представляет собой совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки программного обеспечения. В основе структурного подхода лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших (до 40 - 50 операторов) подпрограмм. С появлением других принципов декомпозиции (объектного, логического и т. д.) данный способ получил название процедурной декомпозиции.

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

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

Использование модульного программирования существенно упростило разработку программного обеспечения несколькими программистами. Теперь каждый из них мог разрабатывать свои модули независимо, обеспечивая взаимодействие модулей через специально оговоренные межмодульные интерфейсы. Кроме того, модули в дальнейшем без изменений можно было использовать в других разработках, что повысило производительность труда программистов.

  • отдельное научное направление, изучающее информацию и информационные процессы, реализующее разработку и создание новых средств для работы с информацией;
  • практическая область деятельности людей, непосредственно связанная с использованием компьютеров при обработке информации.

Одним из направлений информатики как науки является программирование – наука, которая изучает теорию и методы разработки, производства и эксплуатации программного обеспечения ЭВМ.

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

Алгоритмическим мышлением называется умение выстраивать логически безупречную последовательность действий для получения решения поставленной задачи. Многолетний опыт показывает, что для развития алгоритмического мышления в первую очередь требуется тщательно прорабатывать алгоритмы для небольших, но полезных программ, которые формируют базовые приемы программирования. Таких приемов достаточно немного, однако их обобщение, накопление, и умение осознанно применять при решении практических задач дает возможность научиться писать программы практически любому человеку [3].

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

Объект исследования данной работы – языки программирования.

Предмет исследования –языки программирования высокого уровня.

Целью работы является классификация языков программирования.

Для достижения поставленной цели предстоит решить ряд задач:

  • проанализировать литературу по заданной теме;
  • дать определения основным терминам;
  • привести классификацию языков программирования.

1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ

На протяжении всего развития языков программирования четко выделяется ряд тенденций, постоянно сменяющих друг друга и оказывающих влияние на технологии:

  • смещение акцентов от частного к общему – переход от программирования мелких деталей к программированию более крупных компонентов;
  • совершенствование и развитие прикладного инструментария программиста – создание новых методологий, языков программирования и рабочей среды;
  • увеличение объема и сложности информационных и программных систем.

Именно расширение области использования вычислительной техники и информационных технологий являетсяс основной движущей силой прогресса в сфере программирования. На протяжении всей истории развития информационных технологий проводилось огромное множество прикладных исследований по методологии проектирования, декомпозиции, абстрагированию и иерархиям. Результатом данных исследований стало создание новых, более выразительных языков программирования [7].

Таким образом, программированием (computer programming) называется процесс создания человеком-программистом информационной структуры - программы, целью которой является исполнение на компьютере.

В большинстве случаев в программировании важным является не только факт исполнения программы компьютером, но и факт использования полученного результата человеком. Однако, бываете и ряд исключений, примером которого является программа первоначальной загрузки операционной системы [12].

Таким образом, в процессе программирования выделяются следующие элементы:

  • цель – выполнение программы, которое приводит к решению поставленной задачи или публикация ее текста;
  • субъект – человек, осознанно ведущий процесс программирования, или другая программа (в случае автоматического синтеза программы, при этом процесс не является осознанным, а программа может быть выражена на языке нейрокомпьютера или не иметь материального носителя);
  • объект – текст, записанный на формальном языке [10].

Сегодня результативность и эффективность программирования в целом оставляет желать лучшего. Несмотря на массовое распространение компьютеров и быстрый рост характеристик их программного и аппаратного обеспечения, весьма значительной остается доля неудачных проектов, целью которых является разработка программного обеспечения. Наряду с эффектными достижениями имеются и сравнительно многочисленные досадные неудачи. К сожалению, до сих пор слишком часто приходится делать вывод, что программирование рискованно, программы ненадежны, а программисты неуправляемы [6].

Технология программирования (software engineering) представляет собой совокупность средств и методов, которая позволяет налаживать производственный процесс создания программного обеспечения.

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

Информатика тесно связана с программированием за счет того, что в современном мире функции накопления, хранения и обработки информации реализуются при помощи программного обеспечения компьютеров.

Соотношение информатики и технологии программирования является сложным вопросом. Информатика представляет собой более общее понятие, однако нельзя считать технологию программирования отдельной частью информатики. В настоящее время вопросы теоретического характера относят к информатике, а практические приемы решения задач считаются элементами технологии программирования. Например, методы математического доказательства правильности программ относятся к теоретической информатике, а методы тестирования – к технологии программирования, хотя это совершенно разные методы решения одной задачи. Важно отметить, что такое отделение технологии программирования от информатики является условным [8].

1.1. Первое поколение

Первые языки программирования были очень сложны. Схема их развития отражена в таблице 1.

Принципы структурного программирования. Основные алгоритмические структуры и их суперпозиции.

Выполнила: студентка группы МДИ-117

Проверила: Кормилицына Т. В.

Структурное программирование – методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX в. Э. Дейкстрой, разработана и дополнена Н. Виртом. Типичными методами структурного программирования являются: нисходящее проектирование (проектирование сверху вниз); модульное (процедурное) программирование; структурное кодирование.

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

Фундаментом структурного программирования является теорема о структурировании, сформулированная итальянскими математиками К.Бомом и Дж.Якопини в 1966 г. Теорема устанавливает, что как бы сложна ни была задача, схему алгоритм ее решения (и, соответственно, программу) всегда можно представить в виде композиции трех типов вложенных блоков: следования (begin-end – начало-конец), ветвления (if-then-else – если-то-иначе), циклов с предусловием (while – пока).

1 Структурное программирование

1.1 История становления структурного программирования

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

Цель структурного программирования – повысить производительность труда программистов, в том числе при разработке больших и сложных программных комплексов, сократить число ошибок, упростить отладку, модификацию и сопровождение программного обеспечения.

      Типичные методы структурного программирования

Типичными методами структурного программирования являются:

  • нисходящее проектирование (проектирование сверху вниз);
  • модульное (процедурное) программирование;
  • структурное кодирование.
  1. Нисходящее проектирование.

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

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

Среди множества модулей различают:

  • головной модуль – управляет запуском программного продукта (существует в единственном числе);
  • управляющий модуль – обеспечивает вызов других модулей на обработку;
  • рабочие модули – выполняют функции обработки;
  • сервисные модули и библиотеки, утилиты – реализуют обслуживающие функции.
  1. Структурное кодирование

Теорема устанавливает, что как бы сложна ни была задача, схему алгоритм ее решения (и, соответственно, программу) всегда можно представить в виде композиции трех типов вложенных блоков:

следования (begin-end – начало-конец),

ветвления (if-then-else – если-то-иначе),

циклов с предусловием (while – пока).

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

Принцип 1. Следует отказаться от использования оператора безусловного перехода goto.

Принцип 2. Любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл.

  • Последовательность – однократное выполнение операций в том порядке, в котором они записаны в тексте программы.
  • Ветвление – однократное выполнение одной из двух или более операций, в зависимости от выполнения заданного условия.
  • Цикл – многократное исполнение одной и той же операции до тех пор, пока выполняется заданное условие (условие продолжения цикла).

Принцип 3. В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом. Никаких других средств управления последовательностью выполнения операций не предусматривается.

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

Принцип 5. Каждую логически законченную группу инструкций следует оформить как блок. Блоки являются основой структурного программирования.

Блок – это логически сгруппированная часть исходного кода, например, набор инструкций, записанных подряд в исходном коде программы. Понятие блок означает, что к блоку инструкций следует обращаться как к единой инструкции. Блоки служат для ограничения области видимости переменных и функций. Блоки могут быть пустыми или вложенными один в другой. Границы блока строго определены. Например, в if-инструкции блок ограничен кодом BEGIN..END (в языке Паскаль) или фигурными скобками (в языке C) или отступами (в языке Питон).

Принцип 6. Все перечисленные конструкции должны иметь один вход и один выход.

Произвольные управляющие конструкции (такие, как в блюде спагетти) могут иметь произвольное число входов и выходов. Ограничив себя управляющими конструкциями с одним входом и одним выходом, мы получаем возможность построения произвольных алгоритмов любой сложности с помощью простых и надежных механизмов.

Следование принципам структурного программирования сделало тексты программ, даже довольно крупных, нормально читаемыми. Серьёзно облегчилось понимание программ, появилась возможность разработки программ в нормальном промышленном режиме, когда программу может без особых затруднений понять не только её автор, но и другие программисты. Это позволило разрабатывать достаточно крупные для того времени программные комплексы силами коллективов разработчиков, и сопровождать эти комплексы в течение многих лет, даже в условиях неизбежных изменений в составе персонала.

  1. Структурное программирование позволяет значительно сократить число вариантов построения программы по одной и той же спецификации, что значительно снижает сложность программы и, что ещё важнее, облегчает понимание её другими разработчиками.
  2. В структурированных программах логически связанные операторы находятся визуально ближе, а слабо связанные – дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (по сути, сама программа является собственной блок-схемой).
  3. Сильно упрощается процесс тестирования и отладки структурированных программ. Основные алгоритмические структуры и их суперпозиции

С появлением массовых ЭВМ 3-го поколения устаревшая технология программирования оказалась основным фактором, сдерживающим развитие и распространение компьютерных (информационных) технологий, что подтолкнуло ведущие в этой сфере деятельности фирмы, в первую очередь IBM, к разработке новых методологий программирования. Появившийся в начале 1970-х годов новый подход к разработке алгоритмов получил название структурного.

С появлением структурного программирования описанные выше трудности были во многом преодолены. В основе технологических принципов структурного программирования лежит утверждение о том, что логическая структура программы может быть выражена комбинацией трех базовых структур: следования, ветвления и цикла (это содержание теоремы Бема-Якопини).

Следование – самая важная из структур. Она означает, что действия могут быть выполнены друг за другом, рисунок 1:

https://studfile.net/html/2706/19/html_gDOPevPMEb.buTH/img-wiPb_7.jpg

Эти прямоугольники могут представлять как одну единственную команду, так и множество операторов, необходимых для выполнения сложной обработки данных.

Ветвление – это структура, обеспечивающая выбор между двумя альтернативами. Выполняется проверка, а затем выбирается один из путей (рисунок 2).

https://studfile.net/html/2706/19/html_gDOPevPMEb.buTH/img-CYoOtu.jpg

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

Цикл (или повторение) предусматривает повторное выполнение некоторого Набора команд программы. Если бы циклы не существовали, вряд ли занятие программированием было бы оправданным: циклы позволяют записать длинные последовательности операций обработки данных с помощью небольшого числа повторяющихся команд. Разновидности цикла изображены на рисунок 4 и рисунок 5.

https://studfile.net/html/2706/19/html_gDOPevPMEb.buTH/img-9ybvuW.jpg

https://studfile.net/html/2706/19/html_gDOPevPMEb.buTH/img-3f1K_U.jpg

Рисунок 6.Нахождение суммы трех чисел

https://studfile.net/html/2706/19/html_gDOPevPMEb.buTH/img-vtGQkp.jpg

Рисунок 7.Нахождение наибольшего из трех чисел

Эти структуры можно комбинировать одну с другой – как путем организации их следований, так и путем создания суперпозиций (вложений одной структуры в другую) – сколь угодно разнообразно для выражения логики алгоритма решения любой задачи. Используя описанные структуры, можно полностью исключить использование каких-либо еще операторов условного и безусловного перехода, что является важным признаком структурного программирования. Направление выполнения команд часто изображают сверху вниз. На рисунке 6 - 8 приведены простейшие примеры структурной реализации алгоритмов работы с величинами.

https://studfile.net/html/2706/19/html_gDOPevPMEb.buTH/img-fA23rS.jpg

Рисунок 8.Нахождение суммы 100 чисел

Умение образовывать из базовых структур их суперпозиции в соответствии с условиями конкретной задачи – одно из важнейших в программировании. Допустим, надо ввести в память компьютера 100 чисел и по дороге отсуммировать те из них, которые положительны. Ясно, что ввод – операция циклическая, а внутри этого цикла находится развилка, в которой проверяется знак числа и производится суммирование. Схематически соответствующая суперпозиция изображена на рисунке 9.

Существует и иная конструкция цикла, которая предусматривает проверку условия, по которому, наоборот, выполнение команд циклической части прекращается, после команд циклической части.

https://studfile.net/html/2706/19/html_gDOPevPMEb.buTH/img-3FzgMO.jpg

Рисунок 9.Алгоритм типа развилка, вложенная в цикл, для нахождения суммы положительных чисел из 100 возможных

Схематические изображения нескольких суперпозиций базовых алгоритмических структур представлены ниже на рисунках 10-16.

Еще одним важным компонентом структурного подхода к разработке алгоритмов является модульность. Модуль – это последовательность логически связанных операций, оформленных как отдельная часть программы. Использование модулей имеет следующие преимущества:

1) возможность создания программы несколькими программистами;

2) простота проектирования и последующих модификаций программы;

3) упрощение отладки программы – поиска и устранения в ней ошибок;

4) возможность использования готовых библиотек наиболее употребительных модулей.

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



Рисунок 13.Иллюстрация трехкратного вложения одной базовой структуры в другую.

На следующем этапе эти задачи, в свою очередь, разбиваются на более мелкие подчиненные подзадачи и так далее, до уровня относительно небольших подзадач, вторые требуют для решения небольших модулей в 3 - 5 строк. Такой метод проектирования программ позволяет преодолевать проблему сложности разработки программы (и ее последующей отладки и сопровождения).

Структурное программирование – методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX в. Э. Дейкстрой, разработана и дополнена Н. Виртом. Типичными методами структурного программирования являются: нисходящее проектирование (проектирование сверху вниз); модульное (процедурное) программирование; структурное кодирование.

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

Фундаментом структурного программирования является теорема о структурировании, сформулированная итальянскими математиками К.Бомом и Дж.Якопини в 1966 г. Теорема устанавливает, что как бы сложна ни была задача, схему алгоритм ее решения (и, соответственно, программу) всегда можно представить в виде композиции трех типов вложенных блоков: следования (begin-end – начало-конец), ветвления (if-then-else – если-то-иначе), циклов с предусловием (while – пока).

В современном программировании применяется широкий спектр парадигм. В данном реферате будут рассмотрено структурное и объектно-ориентированное программирование. Их преимущества и недостатки, а так же области применения

Структурное программирова­ние - это первая законченная методология программирования. Структурное программирование оказало огромное влияние на раз­витие программирования. Этот метод применялся очень широко в практическом программировании и по сей день не поте­рял своего значения для определенного класса задач.

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

использование процедурных языков про­граммирования (Алгол, Паскаль, СИ);

последовательная декомпозиция ал­горитма решения задачи сверху вниз.

Задача решается применением последовательности действий. Первоначально задача формулируется в терминах входа-выхода. Это означает, что на вход программы подаются некоторые данные. Программа работает и выдает ответ.

После этого начинается последовательное разложение всей за­дачи на более простые действия.

Например, если нам необходимо написать программу проверки правильности адреса, то вначале мы ее запишем следующим образом:

Прочитать адрес

Сверить адрес с базой имеющихся адресов

Если результат проверки положителен,напечатать Да,

в противном случае напечатать Нет.

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

program check_address (input, output);

if (check_database(an_address)) then

Эта программа использует процедуру read_address для чте­ния адреса и процедуру check_database для сверки прочитанно­го адреса с информацией в базе данных. Теперь мы можем продол­жить процесс составления программы для процедур следующего уровня: чтение адреса и сверки с базой данных.

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

Программа компонуется с заглушками и может работать. Заглушки позволяют проверить логику верхнего уровня до реализации следующего уровня.

Структурное программирование ясно опре­делило значение модульного построения программ при разработке больших проектов, но языки программирования еще слабо поддержи­вали модульность. Единственным способом структуризации про­грамм являлось составление ее из подпрограмм или функций. Контроль за правильностью вызова функций, в том числе соответствия количества и типов фактических аргументов ожидаемым формальным параметрам, осуществлялся только на стадии выполнения (понятие прототипа функции появилось позже).

Объектно-ориентированное программирование появилось и по­лучило широкое распространение ввиду осознания трех важнейших проблем программирования.

1 - раз­витие языков и методов программирования не успева­ло за растущими потребностями в про­граммах. Единственным реальным способом удовлетворить эти потребности был метод многократ­ного использования уже разработанного, протестированного и отлаженного программного обеспечения.

2 - необходимость упрощения сопровождения и модификации разра­ботанных систем. (Факт постоянного изменения требований к системе был осознан как нормальное условие развития системы, а не как неумение или недостаточно четкая организация работы разра­ботчиков.) Требовалось изменить способ построения программных систем так, чтобы локальные модификации не нарушали работоспособность всей системы и было легче производить изменения поведения системы.

3 - это облегчение проектирования систем. Далеко не все задачи поддаются алгоритмическому описанию и тем более алгоритмической декомпозиции, как того требует структур­ное программирование. Требовалось приблизить структуру программ к структуре решаемых задач и сократить так называемый семантический разрыв между структурой решаемой задачи и структурой программы. Семантический разрыв имеет место в том случае, когда понятия, лежащие в основе языка задачи и средств ее реше­ния, различны. Поэтому наряду с необходимостью записи самого решения требуется еще перевести одни понятия в другие. (Сравните это с переводом с одного естественного языка на другой. Именно потому, что таких понятий в русском языке раньше не было, появляются слова типа брокер, оффшор или инвестор. К сожалению, в программировании заимствование слов невозможно.)

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

Объектно-ориентированное программирование предполагает единый подход к проектированию, построению и развитию системы.

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

Возникновению объектно-ориентированного подхода к проектированию систем способствовали следующие достижения технологии:

1 - Развитие вычислительной техники, в частности аппаратная поддержка основных концепций операционных систем и построение функционально-ориентированных систем.

2 - Достижения в методологии программирования, в частности модульное построение систем и инкапсуляция информации.

3 - Теория построения и моделирования систем управления базами данных внесла в объектное программирование идеи построения отношений между объектами.

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

5 - Развитие философии и теории познания. Во многом объектно-ориентированное построение систем - это определенный взгляд на моделируемый реальный мир. Именно в этом аспекте философия и теория познания оказали сильное влияние на объектную модель. Еще древние греки рассматривали мир в виде объектов или процессов. Декарт выдвинул предположение, что для человека естественным представляется объектно-ориентированное рассмотрение окружающего мира. Минский предположил, что разум прояв­ляется как взаимодействие агентов, не умеющих по отдельности мыслить.

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

Первым шагом на пути создания объек­тной модели следует считать появление абстрактных типов дан­ных. Считается, что первой полной реализацией абстрактных ти­пов данных в языках программирования является язык Симула.

Затем появились (и продолжают появляться) другие объектно-ориентированные языки, которые определяют современное состоя­ние программирования. Наиболее распространенными из них стали Си++, CLOS, Эйффель, Java.

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

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

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

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Читайте также: