Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
22-28.docx
Скачиваний:
12
Добавлен:
23.09.2019
Размер:
47.67 Кб
Скачать
  1. Объектно-ориентирование программирование (проектирование).

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

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

Наиболее известным примером объектно-ориентированно­го языка программирования является язык С++, развившийся из императивного языка С. Другие примеры объектно-ори­ентированных языков программирования: У1зиа1 Ваз1С, Е1йе1, ОЪегоп.

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

Существенным преимуществом языков сценариев яв­ляется их совместимость с передовыми инструментальными средствами автоматизированного проектирования и быстрой реализацией программного обеспечения САЗЕ-технологиями. Одним из наиболее передовых инструментальных комплек­сов, предназначенных для быстрой разработки приложений, является майкрософт визуал студио. нэт. Характерные примеры сценарных языков программирования: VBScript, Power Script, Lotus Script, Java Script.

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

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

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

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

После синтаксического анализа наступает этап поэтапной генерации кода. На этом этапе происходит замена операторов языка высокого уровня инструкциями Ассемблера, а затем последовательностями машинных команд. Результат преоб­разования исходного текста программы записывается в виде двоичного файла (его называют объектным модулем) с расши­рением “obj”.

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

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

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

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

Объектный модуль можно выполнять лишь после специаль­ной дополнительной обработки (компоновки), которая осущест­вляется специальной программой-компоновщиком.

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]