Компонентно-ориентированное программирование и среда разработки Blackbox
Анализ таких подходов программирования, как объектно-ориентированное и компонентно-ориентированное программирование. Ошибки во время программирования приложения на объектно-ориентированных языках. Преимущества компонентно-ориентированного языка Оберон-2.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 15.08.2020 |
Размер файла | 66,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Компонентно-ориентированное программирование и среда разработки Blackbox
Семашко Е.А.
ANNOTATION
In this article the approaches of programming like object-oriented programming and component-oriented programming are considered. It is shown that object-oriented languages can not protect programmers from many errors during programming an application and after that. The language solved the problems of object-oriented programming is the component-oriented language Oberon-2, developed by N. Wirth.
Семашко Евгений Александрович
Студент факультета Электроники и приборостроения Орловский государственный технический университет, г. Орел
Введение
Развитие подходов к программированию прошло в несколько этапов: от перфокарт к объектно-ориентированным языкам высокого уровня (ЯВУ). Переломным моментом стало использование ЯВУ, которые позволили писать программы в терминах общих абстракций - переменных, типов, операторов и т.д. На этом этапе удачным решением было создание структурного программирования. Благодаря этому подходу код программы достаточно легко прочитать и понять. Среди структурных языков лидирующие позиции занял Паскаль, созданный профессором Швейцарского института ETH Н. Виртом в 1970 г. Этот язык прост, удобен, так как изначально создавался для обучения программированию. Большинством Российских учебных заведений в курсах программирования на ЯВУ, именно Паскаль был взят за основу.
Следующим шагом стал объектно-ориентированный подход, определяющий программу как совокупность объектов, взаимодействующих между собой посредством сообщений. Все объекты являются экземплярами классов, которые позволяют проводить конструирование из полезных компонент, обладающих простыми методами, что позволяет абстрагироваться от деталей реализации. Локализация кода и данных улучшает наглядность и удобство сопровождения программного обеспечения, инкапсуляция позволяет скрыть реализацию методов и критичные данные от несанкционированного доступа. Объектно-ориентированное программирование (ООП) дает возможность создавать расширяемые системы. Расширение типа и вытекающий из него полиморфизм часто полезны и упрощают создание сложных систем. Но несмотря на все плюсы ООП очевидными становятся и его недостатки. Среди них отметим процесс проектирования классов -- задача гораздо более сложная, чем их использование; сложность для применения в конкретной предметной области: разработка проектов, для которых важнейшей задачей является описание предметной области, требует использования традиционных подходов в виду их большей доступности для неспециалистов. Недостатком при разработке объектного программного обеспечения является сложность и небезопасность самих языков программирования, например, самых распространненых, C++ и Object Pascal (интегрированные среды разработки Builder C++ и Borland Delphi по заявлению Borland стали убыточными проектами [1]).
Компонентно-ориентированное программирование (КОП) избавлено от недостатков ООП и структурного программирования, но сохраняет при этом их преимущества.
1.Компонентный Паскаль
программирование объектный компонентный ориентированный
Компонент ? это готовый к работе программный модуль, представляющий непосредственную ценность для конечных пользователей. Для сборки приложений из подобных компонентов разрабатываются специальные технологии, такие как OLE, COM и OpenDoc.
В 1997 году компания Oberon Microsystems, Inc. сделала некоторые небольшие добавления к Оберону-2 и назвала его Компонентный Паскаль. Оберон-2 - один из языков Паскаль-семейства: Алгол, Паскаль, Модула-2, Оберон. Идея уточнений по сравнению с Обреном-2 была в том, чтобы дать проектировщику компонентного каркаса Компонентный каркас ? интерфейсы модулей, определяющих абстрактные классы для конкретной предметной области. более полный контроль над его проектируемыми свойствами в плане безопасности. Положительным результатом стало более легкое обеспечение целостности больших компонентных систем. Такие системы позволяют динамически производить загрузку, связывание и выгрузку модулей, расширяя программную систему на этапе ее выполнения.
Определение компонентного паскаля содержит три следующих предположения:
1. Во время исполнения программ доступна информация, позволяющая проверять динамический тип объекта. Динамическая типизация поддерживается с помощью тегов - любой экземпляр записи имеет тег своего типа, по которому его можно однозначно определить и получить о нем всю информацию. Такие проверки выполняются, например, при преобразованиях типов. Полезным также является использование RTTI - run-time type information. Простейший пример ? проверка принадлежности переменной какому-либо типу с помощью оператора IS. Именно в Оберон-2 впервые правильно был реализован этот механизм. Его реализации существуют и в других языках, но не обеспечивают достаточной надежности, например, в С++ описателя структуры нет, тег формируется просто на основе сравнения таблиц виртуальных функций для каждой переменной.
2. Автоматическая сборка мусора. В компонентной среде ни один модуль не способен сам определить момент, когда память можно освободить. Это может сделать только механизм среды, проверив отсутствие во всех модулях указателей на освобождаемый объект. Освобождать память явно в Компонентном Паскале не нужно.
3. Модули и их экспортированные процедуры и типы должны быть доступны динамически. Если это необходимо, может происходить загрузка модулей [2]. Фактически, компиляция модуля включает его в систему, тем самым ее расширяя.
Среди преимуществ языка можно выделить динамическую безопасность, которая была характерна для некоторых интерпретируемых языков, таких как Smalltalk (в императивных языках впервые появилась в Oberon). Она подразумевает, в первую очередь, обеспечение целостности используемых участков памяти, то есть, гарантии того, что один компонент не может разрушить область памяти, используемую другим. Компонентный паскаль требует, чтобы модули работали в едином адресном пространстве, взаимодействуя друг с другом напрямую. Поэтому обеспечить безопасность в одном адресном пространстве может лишь система времени выполнения самого языка. Это достигается запретом адресной арифметики (то есть над указателем нельзя производить никаких операций кроме обращения по нему), контролем границ массивов, динамическим контролем типов объектов.
Реализация принципов ООП в Компонентном Паскале достигается за счет абстрактных типов данных, определенных как расширяемые записи. Оберон-2 перекрывает большинство терминов объектно-ориентированных языков словарем языков императивных, обходясь минимумом понятий в рамках тех же концепций (например, отсутствуют указания полей private, public, protected, как это сделано в Delphi, вместо этого достаточно указать после имени поля или метода признак экспорта: для чтения, записи). Единственным ограничением на ООП в Компонентном Паскале является запрет межмодульного наследования реализации. Такое наследование приводило бы к проблеме, суть которой в том, что разработчик базового класса не мог бы изменять реализацию его новых версий из боязни нарушить работу классов-потомков, созданных пользователями его компонента.
Доказательством простоты языка может служить сравнительный анализ числа лексем в языках программирования [3] на рисунке 1.
Рисунок 1 -- Сравнительный анализ числа лексем в языках программирования.
Оберон-2 имеет примерно 700 лексем в своем синтаксисе, в то время как Delphi7 2000 лексем, а в С++ около 2200 лексем. По быстродействию программного кода Oberon-2 не уступает С/С++ [4].
2.Среда разработки BlackBox Component Builder
Система BlackBox Component Builder представляет собой компонентную библиотеку, написанную на Компонентном Паскале, упрощает разработку графического пользовательского интерфейса. Поставляется с несколькими компонентами, включая текстовый редактор, систему визуального проектирования, средство доступа к базам данных, интегрированную среду разработки, а также систему выполнения программ на Компонентном Паскале. Этот пакет разработки приложений не требователен к ресурсам, т.к. полностью построен из модулей Компонентного Паскаля. Они включают ядро и сам компилятор для языка Компонентный Паскаль. Система работает на 2 мегабайтах оперативной памяти и 10 мегабайтах внешней памяти под управлением ОС Windows (в то время как последние версии Delphi требуют как минимум 300Мгц процессор с 64 мегабайтами оперативной и не менее 200 мегабайт дисковой памяти).
Диапазон создаваемых приложений в BlackBox Component Builder расширен за счет среды кросс-программирования Кросс-программирование - это программирования для процессоров, отличных от того, на котором работает система.. Это позволяет выполнять кросс-программирование для операционной системы реального времени JBed, которая тоже полностью реализована на Компонентном Паскале. JBed предназначен для встроенных систем и систем с жесткими требованиями реального времени, например, робототехнике и промышленной автоматизации [5]. Также на Компонентном Паскале Oberon Microsystems был разработан для Borland компилятор Java, система мониторинга для крупнейшей ГЭС на Амазонке.
С целью дополнительного повышения безопасности исключен ряд средств и опций языка, обычно имеющихся в «профессиональных» системах. Среди них: отсутствие оператора GOTO, невозможность отключения проверки выхода за границы индексов массива, отсутствие пошагового отладчика. Такая дисциплина - вынужденная мера, результат пятидесятилетнего поиска эффективных технологий программирования. Благодаря такой организации языка, появляется четкая структура программы, повышается ее безопасность.
Если очевидны преимущества исключения GOTO и проверки границы массивов, то исключение пошагового отладчика требует пояснений. Большинство программистов не представляют себе процесс создания приложения. На наш взгляд, подход к программированию с отладчиком не обеспечивает должного уровня безопасности, поскольку понижается производительность программиста, т.к. построение программы и ее отладка происходят практически наугад, а дальнейшее сопровождение таких программ очень неудобно и вызывает дополнительные ошибки. В BlackBox предусмотрен так называемый «дамп-отладчик». Он позволяет отслеживать при ошибке состояние всех переменных и указателей во всех используемых модулях. Уникальной особенностью является умение дамп-отладчика работать также и с объектами COM. Стоит отметить тот факт, что разработка приложения на Компонентном Паскале в среде BlackBox занимает в среднем в 3 раза меньше времени, чем на С++ или Delphi, имеющим встроенный отладчик [6].
В Оберон-2 применен метод построения программы, при котором логические свойства ее удовлетворяются в ключевых точках программы (пред- и пост- условия для процедур, инварианты циклов и т.п.). Для реализации такого способа проектирования будущей программы более чем достаточны средства, предлагаемые в BlackBox [7]. Система дает возможность при нарушении логического условия в команде ASSERT исследовать состояние локальных переменных всех процедур в цепочке вызовов, приведших к аварийной обстановке, а также глобальных переменных всех модулей.
На наш взгляд недостатком системы BlackBox является MDI (multi document interface) графический интерфейс, достаточный для создания бизнес и учебных приложений, но не достаточный для создания приложений, основанных на формах. BlackBox поставляется в открытых кодах и благодаря этому есть возможность замены некоторых участков ядра системы, ответственных за интерфейс MDI, другими реализациями, в которых будет реализован SDI интерфейс. При этом стабильность работы системы не нарушится.
MDI предполагает наличие окон внутри одного главного окна. Внутренние окна называются документами. В BlackBox эти документы хранятся в особом формате. В основном это текстовые документы, но есть и другие разновидности документов, например, формы в BlackBox также задаются документами. Компилятор игнорирует любое форматирование, а также любые вставные визуальные объекты (которые могут быть также и вложенными). Благодаря этому есть возможность с помощью форматирования или графических изображений сделать текст программы более читабельным.
Каждая подсистема BlackBox разделена на несколько видов файлов. Это дает дополнительную надежность, удобство разработчику. Среди них:
- кодовые файлы, оттранслированные в машинные коды для каждого из модулей, аналогичны DLL, но построены предельно экономно;
- символьные файлы, хранящие информацию об интерфейсах модулей данной подсистемы, их использование позволяет избежать ряда ошибок и повысить надежность программ и самого Блэкбокса.
- документация; подразумевается, что для каждого модуля в системе хранится соответствующая документация с описанием используемых структур и методов.
Среди подсистем, поставляемых со средой Блэкбокс можно выделить текстовую подсистему, поскольку ее возможности эквивалентны мощным текстовым процессорам, и подсистему SQL, позволяющую обеспечить доступ к БД через ODBC и использовать напрямую переменные в SQL запросах.
В настоящее время существуют версии BlackBox для Windows и MacOS. В ИЯФ РАН разрабатывается версия под Linux, в том числе для распределенных вычислений на кластерах [5].
Заключение
Компонетно-ориентированное программирование является следующим шагом в технологии разработки программного обеспечения. На сегодняшний день недостатков у этого подхода практически нет. Последний язык Никлауса Вирта из Паскаль-семейства Компонентный Паскаль является практически идеальным языком для обучения, применения в узких предметных областях большинством специалистов, коммерческого использования (в пределах GPL-лицензии Подразумевается, что любое приложение, написанное на языке Компонентный Паскаль в среде BlackBox, может быть коммерческим, но поставляться в открытых кодах. Для распространения без открытых кодов, необходимо приобретение соответствующей лицензии у Oberon Microsystems inc.), дающим на выходе безопасный код, не уступающий по скорости компиляторам C.
Компонентный каркас BlackBox является средой разработки приложений на Компонентном Паскале, поставляется с большим числом компонентов. Недостатками системы являются MDI интерфейс и отсутствие развитой логики диалога с программистом. Преимуществами этой системы являются использование языка Компонентный Паскаль для программирования приложений, малая требовательность к ресурсам, открытые коды системы можно изменять и добавлять новую функциональность. Общеобразовательным проектом «Информатика-21» [8] планируется замена Паскаля и Delphi в учебных заведениях России средой разработки BlackBox.
Литература
программирование объектный компонентный ориентированный
1. Новости «IPULSAR» [Электронный ресурс] / Сайт компании «IPULSAR» - [Режим доступа: http://ipulsar.net/news/index.php?go=News&in=view&id=162]
2. Мёссенбёк Х. Язык программирования Оберон-2 / Х. Мёссенбёк, Н. Вирт. - Институт компьютерных систем. - ETH, Цюрих. - 1996.
3. Свердлов С.З. Языки программирования и методы трансляции / С.З. Свердлов - конструктивный курс в традициях школы Никлауса Вирта. //I междунар. науч.-пр. конф-я. «Современные информационные технологии и ИТ-образование» - сборник трудов - М.: Макс-Пресс, 2005.
4. Компания «Excelsior» [Электронный ресурс] / Сайт компании «Excelsior» - [Режим доступа: http://excelsior-usa.com].
5. Европейский центр программирования [Электронный ресурс] / Сайт компании Европейского центра программирования - [Режим доступа: http:// oberon2005.ru].
6. BlackBox и Обероны [Электронный ресурс] / Форум русского портала по BlackBox и Оберонам - [Режим доступа: http://blackbox.metasystems.ru/forum].
7. BlackBox и Обероны [Электронный ресурс] / Форум по BlackBox и Оберонам - [Режим доступа: http://blackbox.metasystems.ru/forum].
8. Ермаков И.Е. Документация Blackbox 1.5, перевод / И.Е. Ермаков,
Е.А. Семашко, Ф.В.Ткачев, А.И. Попков, И.Х. Хайруллин, А.В. Козлов, В.В. Лось - Москва, 2002.
9. Проект «Информатика-21» [Электронный ресурс] / Информационный сайт - [Режим доступа: http://www.inr.ac.ru/~info21].
Размещено на Allbest.ru
...Подобные документы
Характеристики и свойства языков программирования. Исследование эволюции объектно-ориентированных языков программирования. Построение эволюционной карты механизмов ООП. Разработка концептуальной модели функционирования пользовательского интерфейса.
курсовая работа [2,6 M], добавлен 17.11.2014Приемы и правила объектно-ориентированного программирования с использованием языка С++. Общие принципы разработки объектно-ориентированных программ. Основные конструкции языка С++. Разработка различных программ для Windows с использованием WIN32 API.
учебное пособие [1,6 M], добавлен 28.12.2013Использование скриптового языка программирования для разработки web-приложений (сценариев). Изучение основ объектно-ориентированного программирования в языке PHP. Ознакомление со специальными методами для работы с классами. Назначение интерфейсов.
контрольная работа [25,1 K], добавлен 14.03.2015Анализ объектно-ориентированного программирования, имитирующего способы выполнения предметов. Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Понятие классов, полей, методов, сообщений, событий.
контрольная работа [51,7 K], добавлен 22.01.2013Понятие алгоритма и его характеристики как основного элемента программирования. Формы представления алгоритмов, основные алгоритмические структуры. Структурное и событийно-ориентированное программирование. Объектно-ориентированное программирование.
реферат [86,0 K], добавлен 17.07.2008Понятие объектно-ориентированного программирования, общая характеристика языков высокого уровня. Разработка программного обеспечения для реализации компьютерной игры "пинбол" с помощью императивного программирования в среде Microsoft Visual Basic.
курсовая работа [428,9 K], добавлен 19.09.2012Разработка программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Класс программы, инструкция по использованию программы.
курсовая работа [1,0 M], добавлен 26.12.2013Объектно-ориентированное программирование как методология программирования, опирающаяся на инкапсуляции, полиморфизме и наследовании. Общая форма класса. Наследование как процесс, посредством которого один объект получает свойства другого объекта.
презентация [214,9 K], добавлен 26.10.2013Изучение принципов объектно-ориентированного программирования, в котором основными концепциями являются понятия классов и объектов. Свойства этого вида программирования: инкапсуляция, полиморфизм, наследование. Описание класса. Конструкторы и деструкторы.
презентация [74,8 K], добавлен 14.10.2013Свойства объектно-ориентированного языка программирования. Понятия инкапсуляции и наследования. Виртуальные функции и полиморфизм. Инициализация экземпляра объекта с помощью конструктора. Динамическое создание объектов. Совместимость объектных типов.
реферат [17,0 K], добавлен 15.04.2015Методология объектно-ориентированного программирования в Java. Понятия класса, объекта и объектной переменной. Динамическая и статическая объектные модели. Логическое структурирование приложения. Наследование в Java. Отличия интерфейсов от классов.
курс лекций [547,2 K], добавлен 01.05.2014Технологии программирования. Сущность объектно-ориентированного подхода к программированию. Назначение Си, исторические сведения. Алфавит, базовые типы и описание данных. Структуры и объединения. Операторы Си++. Функции. Библиотека времени выполнения.
курс лекций [51,9 K], добавлен 03.10.2008Почему C++. Возникновение и эволюция языка C++. Сравнение языков С++ и С. Эффективность и структура. Процедурное программирование. Модульное программирование. Абстракция данных. Объектно-ориентированное программирование. Улучшенный С.
реферат [26,4 K], добавлен 03.06.2004Предмет исследования – современные методы разработки программ таких, как объектно-ориентированное программирование и визуальное проектирование, а также структурное и модульное программирование. C++ - универсальный язык программирования. Ключевые понятия.
курсовая работа [1,1 M], добавлен 10.01.2009Использование объектно-ориентированного программирования - хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.
контрольная работа [60,1 K], добавлен 17.01.2011Основная цель технологии СОМ (объектная модель компонентов) - обеспечение возможности экспорта объектов. Объектно-ориентированное программирование и его место в программировании. Принципы и применение описаний информационных систем (UML и аналоги).
курсовая работа [698,3 K], добавлен 09.12.2013Создание программного обеспечения - системы имитационного моделирования на тему "Производственная линия с пунктами технического контроля". Описание входных и выходных данных. Объектно-ориентированное программирование. Диаграммы модулей и процессов.
курсовая работа [1,2 M], добавлен 09.01.2014Характеристика модульного программирования: процедуры и функции, модули и их структура, открытые массивы и строки, нетипизированные параметры. Способы передачи параметров в подпрограммы в Borland Pascal. Объектно-ориентированное программирование.
контрольная работа [28,9 K], добавлен 28.04.2009Объектно-ориентированное программирование. Особенности использования формата CHM, его преимущества. Создание электронного учебника на тему "Язык программирования C++" с помощью компиляции html-страниц. Правильное сочетание тегов, структура документа.
курсовая работа [1,0 M], добавлен 27.10.2012Общая характеристика объектно-ориентированного подхода в программировании, его основные свойства и принципы. Разработка программы для автоматизация деятельности кафе на основе объектно-ориентированного подхода, проектирования и реализации схемы данных.
курсовая работа [1,2 M], добавлен 22.01.2012