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

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

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

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

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

Последовательность действий по разработке функциональной структуры алгоритма приложения:

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

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

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

Функции ввода-вывода информации рекомендуется отделять от функций вычислительной или логической обработки данных.

По частоте использования функции делятся на:

  • однократно выполняемые;
  • повторяющиеся.

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

Пример 18.4. Некоторые функции, например Ф2, далее неразложимы на составляющие: они предполагают непосредственную программную реализацию.

Другие функции, например Ф1, Фm, могут быть представлены в виде структурною объединения более простых функций, например Ф11, Ф12 и т.д. Для всех функций-компонентов осуществляется самостоятельная программная реализация; составные функции (типа Ф1, Фm) реализуются как программные модули, управляющие функциями-компонентами. например, в виде программ-меню.

Рис. 18.2. Функциональная структура приложения:

Ц — цель; пЦ — подцель; П — приложение; Ф — функция

МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ

Свойства модуля

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

  • один вход и один выход — на входе программный модуль получает определенный набор исходных данных, выполняет содержательную обработку и возвращает один набор результатных данных, т.е. реализуется стандартный принцип IPO (Input — Process — Output) — вход-процесс-выход;
  • функциональная завершенность — модуль выполняет перечень регламентированных операций для реализации каждой отдельной функции в полном составе, достаточных для завершения начатой обработки;
  • логическая независимость — результат работы программного модуля зависит только от исходных данных, но не зависит от работы других модулей;
  • слабые информационные связи с другими программными модулями — обмен информацией между модулями должен быть по возможности минимизирован;
  • обозримый по размеру и сложности программный элемент.

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

Каждый модуль состоит из спецификации и тела.Спецификации определяют правила использования модуля, а тело — способ реализации процесса обработки.

Модульная структура программных продуктов

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

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

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

  • каждый модуль вызывается на выполнение вышестоящим модулем и, закончив работу, возвращает управление вызвавшему его модулю;
  • принятие основных решений в алгоритме выносится на максимально «высокий» по иерархии уровень;
  • для использования одной и той же функции в разных местах алгоритма создается один модуль, который вызывается на выполнение по мере необходимости. В результате дальнейшей детализации алгоритма создается функционально-модульная схема (ФМС) алгоритма приложения, которая является основой для программирования (рис. 18.3).

Рис. 18.3. Функционально-модульная структура приложения

Пример 18.5. Некоторые функции могут выполняться с помощью одного и того же программного модуля (например, функции Ф1 и Ф2).

  • Функция Ф3 реализуется в виде последовательности выполнения программных модулей.
  • Функция Фm реализуется с помощью иерархии связанных модулей.
  • Модуль n управляет выбором на выполнение подчиненных модулей.
  • Функция Фx реализуется одним программным модулем.

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

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

Алгоритмы большой сложности обычно представляются с помощью схем двух видов:

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

Наиболее часто детально проработанные алгоритмы изображаются в виде блок-схем согласно требованиям структурного программирования; при их разработке используются условные обозначения согласно ГОСТ 19.003-80 ЕСПД (Единая система программной документации). Обозначения условные графические, ГОСТ 19.002-80 ЕСПД. Схемы алгоритмов и программ. Правила обозначения.

СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ

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

Рис. 18.4. Блок-схема алгоритма поиска в базе данных.

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

Пример 18.6. Алгоритм поиска в базе данных сведений о максимальном окладе сотрудников (рис. 18.4).

Таблица 18.1. Управляющие структуры алгоритмов

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

Императивное программирование – это исторически первая методология программирования, которой пользовался каждый программист, программирующий на любом из «массовых» языков программирования – Бейсик, Паскаль, Си. Она ориентирована на классическую фон Неймановскую модель, остававшуюся долгое время единственной аппаратной архитектурой. Методология императивного программирования характеризуется принципом последовательного изменения состояния вычислителя пошаговым образом.

Читать еще:  Вконтакте ошибка при отправке сообщения

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

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

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

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

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

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

Данные передаются подпрограмме в виде параметров или аргументов. Параметры, которые указываются в тексте заголовка, называются формальными. Они нужны только для формального описания тела подпрограммы. При выполнении программы, в момент вызова подпрограммы, подставляются конкретные значения (или ссылки на значения – переменные) – фактические параметры (см. , в котором происходит слияние двух строк «qwe» и «asd«). Приведём код подпрограмм (модуль «Пример6_ПроцедураФункция»), вызов которых используется в этом примере:

Sub proc1()

‘Вызов процедуры AcB с параметрами s, «qwe», «asd»

Call AсB(s, «qwe», «asd»)

End Sub

‘Объявление процедуры AсB с параметрами c$, a$, b$

Sub AсB(c$, a$, b$)

End Sub

‘Объявление функции AiB с параметрами a$, b$

Function AiB(a$, b$) As String

End Function

Sub proc2()

‘Вызов функции AiB с параметрами «qwe», «asd»

End Sub

При выполнении первой подпрограммы (proc1) в этом примере происходит вызов процедуры (AcB). При выполнении второй подпрограммы (proc2) происходит вызов функции (AiB).На рисунке 12.1 представлено окно сообщения с результатом выполнения процедуры слияния двух строк «qwe» и «asd«. Точно так же будет выглядеть окно с результатом вызова функции.

Рис. 12.1. Окно сообщения с результатом выполнения примера 6

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

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

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

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

12.3 Рекурсивные алгоритмы *

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

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

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

Рекуррентность – это рекурсивное определение функции. Классический пример такого рода функций – факториал. Напомним, факториал нуля равен 1, а факториал натурального числа N определяется как произведение натуральных чисел от единицы до N, что выражается рекуррентной формулой: N!=N (N-1)!, для N>=1 и 0! = 1. То есть для определения факториала одного числа требуется знать или вычислить факториал другого, уменьшенного на единицу. А это, в свою очередь, может потребовать определения факториала ещё меньшего числа. И так далее, до единицы. Этому напрямую соответствует нижеследующая рекурсивная функция:

Function factorial(N As Integer) As Long

If N=0 Then factorial=1 Else factorial=N*factorial(N-1)

End Function

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

Читать еще:  Utorrent ошибка отказано в доступе

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

Function factorial(N As Integer) As Long

ForСчётчик=1ToN

Основные технологии

Основные понятия, факты

Структурное программирование. Модульное программирование. Объектно-ориентированное программирование. Базовые принципы ООП: инкапсуляция, наследование, полиморфизм.

Разработка программ с использованием принципов структурного, модульного, объектно-ориентированного программирования.

Основными технологиями разработки программного обеспечения являются

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

Идеи структурного программирования появились в начале 70-годов в компании IBM , в их разработке участвовали известные ученые Э. Дейкстра, Х. Милс, Э. Кнут, С. Хоор.

Распространены две методики (стратегии) разработки программ, относящиеся к структурному программированию: программирование «сверху вниз» и программирование «снизу вверх».

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

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

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

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

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

Достоинства структурного программирования :

1) повышается надежность программ (благодаря хорошему структурированию при проектировании, программа легко поддается тестированию и не создает проблем при отладке);

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

3) уменьшается время и стоимость программной разработки;

4) улучшается читабельность программ.

Резюме

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

— программирование должно осуществляться сверху вниз;

— весь проект должен быть разбит на модули (подпрограммы) с одним входом и одним выходом;

— подпрограмма должна допускать только три основные структуры – последовательное выполнение, ветвление ( if , case ) и повторение ( for , while , repeat ).

— недопустим оператор передачи управления в любую точку программы ( goto );

— документация должна создаваться одновременно с программированием в виде комментариев к программе.

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

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

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

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

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

Напомним понятие и структуру модуля в терминах языка Pascal .

Модуль ( unit ) – программная единица, текст которой компилируется независимо (автономно).

Модуль содержит 4 раздела: заголовок, интерфейсная часть (раздел объявлений), раздел реализации и раздел инициализации.

INTERFACE <интерфейсная часть>

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

Дата добавления: 2015-06-12 ; просмотров: 2386 ; Нарушение авторских прав

Следующий самый продолжительный этап развития методов программирования — появление и широкое использование языков высокого уровня. Основная особенность этого этапа —большое количество и разнообразие языков программирования. Такие средства программирования можно разделить на универсальные (Алгол, PL/1, Pascal, С и др.) и специализированные языки. Предшественниками языка С были BCPL и язык B. Язык С был разработан в 1970 году Денисом Ритчи, который первым и реализовал его в операционной системе Unix. Наибольшее распространение среди специализированных языков в 60-е — 80-е годы прошлого века получили Fortran для научно-технических расчётов, Cobol для решения экономических задач, Basic для обучения программированию и другие языки.

При использовании таких языков при вычислении того же выражения достаточно его записать по простым естественным правилам (например, r=a+b*c). Всю дальнейшую работу система берёт на себя. Аналогично при программировании ввода-вывода количество записываемых программистом команд (операторов) намного меньше, чем в языках низкого уровня типа Ассемблер.

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

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

1) Алгоритм и программа должны разрабатываться поэтапно, по шагам. На начальном этапе проектирования сложная задача (проект) должна разбиваться на более простые части (блоки), каждая из которых должна разрабатываться независимо друг от друга. На следующем этапе детализации все или некоторые из этих частей в свою очередь разбиваются на отдельные подзадачи и так далее. Степень детализации и количество таких уровней зависят от характера, объёма, логической сложности задачи, от используемого языка программирования. На языке блок-схем этот принцип означает, что сначала составляется укрупнённая блок-схема, отражающая логику всей задачи, весь алгоритм в целом. На втором уровне записываем более подробные блок-схемы некоторых или всех блоков. При необходимости могут быть составлены схемы следующих уровней с большей степенью детализации. Этот принцип в литературе называется по-разному: метод (принцип) последовательного построения (уточнения) алгоритма; принцип поэтапной детализации алгоритма; метод нисходящего (сверху вниз) проектирования.

Читать еще:  Непроцедурные языки программирования

2) Логика любой программы должна опираться на минимальное количество следующих достаточно простых базовых (основных, типовых) управляющих (алгоритмических, логических) структур (конструкций) (БАС): ветвление (или развилка); повторение (или цикл); следование. В скобках приведены различные встречающиеся в литературе названия этих понятий. Первая из структур программируется с помощью полной и сокращённой формы оператора if и вспомогательного оператора выбор (switch на языке Си, case в Pascal и др.). Основными операторами цикла являются оператор цикла с предусловием (while) и с постусловием (do … while на языке Си, repeat … until в Pascal и др.). Несмотря на широкое использование оператора for и его различных модификаций (например, в Visual Basic), этот оператор следует отнести к вспомогательным операторам, так как его всегда можно заменить оператором while. Для программной реализации структуры “следование” не существует оператора. Во всех языках программирования команды выполняются последовательно в том порядке, как они записаны, если не используются операторы, меняющие этот естественный порядок.

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

При этом структурированный алгоритм (программа) должны представлять собой композицию из последовательных или вложенных друг в друга перечисленных выше базовых алгоритмических структур. Например, сначала может быть записан цикл for, а затем вне этого цикла — оператор if. Вложенность БАС имеет место, например, если внутри цикла while встречается оператор выбора switch или наоборот, в одной или в нескольких ветвях if может быть оператор цикла..

3) Важным и самым сложным является следующий принцип. Каждая из БАС должна иметь один вход и один выход. Поэтому структурное программирование в литературе часто называют программированием без оператора goto, который нарушает это требование. Большинство авторов считают плохим стилем программирования, если часто без необходимости используется данный оператор. В то же время запретить его использование было бы неправильно. Иногда этот оператор помогает проще запрограммировать сложные алгоритмы. Например, может возникнуть необходимость в операторе goto, если надо выйти из самого внутреннего цикла за пределы всех циклов при условии, что уровень вложенности их достаточно большой (например, 4 вложенных цикла).

Кроме оператора goto, это требование нарушается при использовании таких операторов, как break, return и некоторых других. Более того, в некоторых современных системах программирования (например, java) возможности break расширены. Это говорит о том, что этот принцип в настоящее время не всегда соблюдается.

Для лучшего его понимания приведём два варианта решения следующей задачи: определить, есть ли в одномерном массиве нуль.

Введение в технологию программирования

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

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

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

Технология модульного программирования — оформившаяся в начале 70-х годов XX века идея разработки больших программных систем [1.4]. Это фундаментальная концепция, являющаяся основой всех современных подходов к проектированию и реализации. В то же время суть ее проста и отражает широко известные научные и технические методы, заключающиеся в поиске и реализации некоторого базового набора элементов, комбинации которых дают решение всех задач из определенного круга.

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

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

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

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

Объектно-ориентированная технология в некоторой степени решила большинство описанных проблем. В отличие от рассмотренных ранее технологий, объектно-ориентированная технология работает на стадиях анализа, проектирования и программирования. В основе технологии лежат объектная модель и объектная декомпозиция [1.3].

К основным принципам объектной модели часто относят следующие:

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

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

5.4. Компонентное программирование

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

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

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

Компонент изолирован от внешнего мира своим интерфейсом — набором методов (их сигнатурами). Компонентная программа — набор независимых компонент, связанных друг с другом посредством интерфейсов.

IT Новости из мира ПК
Добавить комментарий