Понятие технологии программирования



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

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

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

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

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

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

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

Изначально понятие технологии как таковой — это 60-е годы прошлого столетия — это период "стихийного" программирования. В этот период отсутствовало понятие структуры программы, типов данных и т.д. Вследствие этого код получался запутанным, противоречивым. Программирование тех лет считалось искусством. Конец 60-х — кризис в программирование.

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

Другим базовым принципом структурного программирования является использование при составлении программ только базовых алгоритмических структур (см. билет 4), запрет на использование оператора GOTO.

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

Поддержка принципов структурного программирования была заложена в основу так называемых процедурных языков программирования. Как правило, они включали основные "структурные" операторы передачи управления, поддерживали вложение подпрограмм, локализацию и ограничение области "видимости" данных. Среди наиболее известных языков этой группы стоит назвать PL/1, ALGOL-68, Pascal, С.

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

Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули (библиотеки подпрограмм), например, модуль графических ресурсов. Связи между модулями при использовании данной технологии осуществляются через специальный интерфейс, в то время как доступ к реализации модуля (телам подпрограмм и некоторым "внутренним" переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal и С (C++), языки Ада и Modula.

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

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

Компонентный подход предполагает построение программного обеспечения из отдельных компонентов физически отдельно существующих частей программного обеспечения, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. В отличие от обычных объектов объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию. На сегодня рынок объектов стал реальностью, так в Интернете существуют узлы, предоставляющие большое количество компонентов, рекламой компонентов забиты журналы. Это позволяет программистам создавать продукты, хотя бы частично состоящие из повторно использованных частей, т.е. использовать технологию, хорошо зарекомендовавшую себя в области проектирования аппаратуры. Компонентный подход лежит в основе технологий, разработанных на базе COM (Component Object Model - компонентная модель объектов), и технологии создания распределенных приложений CORBA (Common Object Request Broker Architecture - общая архитектура с посредником обработки запросов объектов). Эти технологии используют сходные принципы и различаются лишь особенностями их реализации.

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

Структурный подход к программированию представляет собой совокупность рекомендуемых технологических приемов ,охват выполнения всех этапов разработки программного обеспечения .В основе структурного подхода лежит декомпозиция (разделение на части) сложных систем с целью последующих реализаций в виде отдельных, небольших подпрограмм .С появлением других принципов декомпозиции (объектного, логического и т.д.) данный способ получил название процедурной декомпозиции.
Другим базовым принципом структурного программирования является использование при составлении программ только базовых алгоритмических структур , запрет на использование оператора GOTO.
Структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры. Проектирование осуществлялось “сверху вниз” и подразумевало реализацию общей идеи, обеспечивая проработку интерфейсов подпрограмм. Одновременно вводились ограничения на конструкции алгоритмов, рекомендовались формальные модели их описания, а также специальный метод проектирования алгоритмов — метод пошаговой детализации.
44 Процедуры и функции .Локальные и глобальные переменные .

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

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

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

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

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

· обеспечить большее, по сравнению с доступной памятью, суммарное пространство, занимаемое всеми локальными переменными;

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

Глобальныминазывают переменные, объявленные в программе вне функций (в том числе и вне функции main()). Глобальные переменные существуют в течение всего времени работы программы и занимают память независимо от того, используются они или нет.

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

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

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

Следует отметить, что параметры функции являются локальными переменнымидля функции, а переменные, объявленные в функции main(),являются локальными для функции main().

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

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

Объектом объектно-ориентированного программирования называется … совокупность переменных состояния и связанных с ними методов (операций)

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

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

Инкапсуляция - позволяет объединить данные и код в один объект и при этом скрыть реализацию объекта от пользователя

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

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

 


Дата добавления: 2018-02-28; просмотров: 757; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!