Файл: Анализ и оценка средств реализации объектно–ориентированного подхода к проектированию экономической информационной системы.pdf
Добавлен: 29.04.2023
Просмотров: 172
Скачиваний: 2
Изобретая С++ путем добавления к языку С поддержки объектно–ориентированного программирования, Страуструп представлял всю важность сохранения философии языка С, включая его эффективность, гибкость и то, что именно программист, а не язык отвечает за разрабатываемое программное обеспечение. Как будет видно, справиться с этой задачей было нелегко. С++ обеспечивает всю свободу языка С одновременно с мощью объектов. Как отмечал Страуструп, С++ позволяет добиться ясности, расширяемости и легкости сопровождения за счет структуризации причем без потери эффективности [17].
Хотя первоначально С++ был нацелен на работу с очень большими программами, это не ограничивает его применение. Фактически объектно–ориентированные атрибуты языка С++ могут быть эффективно применены фактически к любой задаче программирования. Этот язык часто используется для таких проектов, как создание редакторов, баз данных, персональных систем работы с файлами и коммуникационных программ. Благодаря тому, что С++ унаследовал эффективность языка С, с его помощью разрабатывается высокопроизводительное программное обеспечение.
Поскольку С++ является надмножеством С, то большинство программ на языке С являются также программами и на языке С++. (Имеется несколько небольших различий между С и С++, благодаря которым некоторые типы программ на языке С не будут компилироваться компилятором языка С++. Можно писать программы на С++, которые выглядят в точности как программы на языке С, но в таком случае не будут использоваться преимущества, предоставляемые С++ – программистам. Кроме того, большинство программистов, пишущих на языке С++, используют стиль и некоторые особенности написания программ, которые присущи только С++ [3].
C++ – компилируемый, статически типизированный язык программирования общего назначения. Поддерживает такие парадигмы программирования как процедурное программирование, объектно–ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником – языком C, – наибольшее внимание уделено поддержке объектно–ориентированного и обобщённого программирования.
C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений. Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ [4].
C++ добавляет к C объектно–ориентированные возможности. Он вводит классы, которые обеспечивают три самых важных свойства ООП: инкапсуляцию, наследование и полиморфизм.
Методы класса – это функции, которые смогут применяться к экземплярам класса. Грубо говоря, метод – это функция объявленная внутри класса и предназначенная для работы с его объектами. Методы объявляются в теле класса. Описываться могут там же, но могут и за пределами класса (внутри класса в таком случае достаточно представить прототип метода, а за пределами класса определять метод поставив перед его именем – имя класса и оператор ::). Методы и поля входящие в состав класса называются членами класса. При этом методы часто называют функциями–членами класса.
Наследование
В C++ при наследовании одного класса от другого наследуется реализация класса, плюс класс–наследник может добавлять свои поля и функции или переопределять функции базового класса. Множественное наследование разрешено.
Конструктор наследника вызывает конструкторы базовых классов, а затем конструкторы нестатических членов–данных, являющихся экземплярами классов. Деструктор работает в обратном порядке.
Наследование бывает публичным, защищённым и закрытым.
Полиморфизм
Целью полиморфизма, применительно к объектно–ориентированному программированию, является использование одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом данных.
Преимуществом полиморфизма является то, что он помогает снижать сложность программ, разрешая использование того же интерфейса для задания единого класса действий. Выбор же конкретного действия, в зависимости от ситуации, возлагается на компилятор. Полиморфизм может применяться также и к операторам [11].
Инкапсуляция
Основным способом организации информации в C++ являются классы. В отличие от структуры (struct) языка C, которая может состоять только из полей и вложенных типов, класс (class) C++ может состоять из полей, вложенных типов и функций–членов. Инкапсуляция в С++ реализуется через указание уровня доступа к членам класса: они бывают публичными (public), защищёнными (protected) и закрытыми (private). В C++ структуры отличаются от классов тем, что по умолчанию члены и базовые классы у структуры публичные, а у класса – собственные.
С++ – язык, складывающийся эволюционно. Каждый элемент С++ заимствовался из других языков отдельно и независимо от остальных элементов (ничто из предложенного С++ за всю историю его развития не было новшеством в Computer Science), что сделало язык чрезвычайно сложным, со множеством дублирующихся и взаимно противоречивых элементов, блоки которых основаны на разных формальных базах [1].
Критики С++ не противопоставляют ему какой–либо конкретный язык, а наоборот, утверждают, что для всякого случая применения С++ всегда существует альтернативный инструментарий, позволяющий решить ту же задачу более эффективно и качественно. В свою очередь, сторонники С++ считают некорректным сравнивать различные аспекты С++ с совершенно различными языками, так как общий набор средств и возможностей С++ существенно шире, чем в большинстве языков, с которыми проводится сравнение, и сама по себе широта возможностей, на их взгляд, является веским оправданием несовершенства каждой отдельно взятой возможности. Более того, по их мнению, высокая совместимость с Си является одной из принципиальных черт языка, и потому все недостатки С++ оправданы преимуществами, предоставляемыми этой совместимостью [1].
Достоинства:
- высокая совместимость с языком С;
- вычислительная производительность;
- поддержка различных стилей программирования: структурное, объектно–ориентированное, обобщённое программирование, функциональное программирование, порождающее метапрограммирование;
- автоматический вызов деструкторов объектов (в порядке обратном вызову конструкторов) упрощает и повышает надёжность управления памятью и другими ресурсами (открытыми файлами, сетевыми соединениями, т. п.);
- перегрузка операторов;
- шаблоны (дают возможность построения обобщённых контейнеров и алгоритмов для разных типов данных);
- возможность расширения языка для поддержки парадигм, которые не поддерживаются компиляторами напрямую;
- доступность. Для С++ существует огромное количество учебной литературы, переведённой на всевозможные языки.
Недостатки:
- плохо продуманный синтаксис сужает спектр применимости языка;
- язык не содержит многих важных возможностей;
- язык содержит опасные возможности;
- производительность труда программистов на языке оказывается неоправданно низка;
- громоздкость синтаксиса;
- тяжелое наследие;
- необходимость следить за памятью [12].
В целом С++ является достаточно удобным инструментом реализации целей объектно–ориентированного программирования, и в частности – проектирования экономических информационных систем, показывающим высокую эффективность и функциональность готовых программных продуктов.
2.4. Delphi
Концепция Delphi 1 была реализована в конце 1994 года, когда вышла первая версия среды разработки. В основу этого программного продукта легли концепции объектно–ориентированного программирования на базе языка Object Pascal и визуального подхода к построению приложений.
После выхода Delphi 1 все компьютерные издания писали об этой среде, как об «убийце Visual Basic». Появление Delphi 2 (32–разрядной) ознаменовало новую эпоху, – появился доступ к возможностям программных интерфейсов Windows NT и Windows 95. Delphi 2 стала средством разработки полноценных приложений клиент/сервер. Вскоре Delphi 3 предоставила разработчикам средства создания распределенных многоуровневых приложений и полноценный инструментарий проектирования приложений для Internet и Intranet. Появилась полноценная поддержка com – модели объектов, ставшей краеугольным камнем современного программирования. Четвертая версия Delphi позволяет полностью интегрировать ваши разработки с объектами com. Поддержка архитектуры corba (common object request broker architecture) открывает перед приложениями, созданными в delphi для платформы wintel (windows + intel), мир других операционных систем (unix, os/2, wms).
Delphi представляет следующие новые свойства и усовершенствования:
- Новые расширения языка. В Delphi в язык Object Pascal включены динамические массивы, методы обработки переполнения, установка значения параметров по умолчанию, и многое другое;
- Менеджер Проекта. Новый менеджер проекта позволяет Вам объединять проекты, которые работают вместе в одну проектную группу. Это позволяет организовать как работу взаимозависимых проектов, таких как однозадачные и многозадачные приложения или dll, так и совместную работу исполняемых программ;
- Новый проводник. Новый проводник содержит выполняемые классы, навигацию по модулям, и браузер кода. Проводник кода делает создание классов проще. Также проводник позволяет быстро перемещаться через файлы модуля, а так же между интерфейсом и реализацией;
- Закрепляемые окна инструментов. IDE (Интегрированная Среда разработки) содержит более перенастраиваемую конфигурацию окон инструментов, которые можно закреплять с редактором кода;
-
-
- Улучшенная отладка. Интегрированный отладчик имеет много новых свойств, включая удаленную и многопроцессорную отладку, просмотр кода центрального процессора, инспекторов, усовершенствованные точки прерывания, отладчик специфических подменю и закрепленных окон;
-
-
- Усовершенствования Activex;
- Усовершенствования VCL. Иерархия объектов Delphi была расширена, чтобы включить новый компонент для Nt Service приложений. Кроме того, новый компонент выполняемого списка (на Стандартной странице палитры), позволяет централизовать управление меню и команд от кнопок. Управление VCL расширено, чтобы поддерживать drag–and–drop перетаскивания, обеспечивать дополнительный контроль над размещением окна, и многое другое.
Delphi – это комбинация нескольких важнейших технологий:
- высокопроизводительный компилятор в машинный код;
- объектно–ориентированная модель компонент;
- визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов;
- масштабируемые средства для построения баз данных.
Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для построения приложений в архитектуре «клиент–сервер». Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения. Кроме того, Delphi обеспечивает быструю разработку без необходимости писать вставки на Си или ручного написания кода (хотя это возможно).
В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы – после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Delphi мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10–20 раз быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь, в Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый p–код, который затем интерпретируется виртуальной p–машиной. Это не может не сказаться на фактическом быстродействии готового приложения.
В стандартную поставку Delphi входят основные объекты, которые образуют удачно подобранную иерархию базовых классов. Но если возникнет необходимость в решении какой–то специфической проблемы на Delphi, то лучше просмотреть список свободно распространяемых или коммерческих компонент, разработанных третьими фирмами, количество этих компонент в настоящее время составляет несколько тысяч. Событийная модель в Windows всегда была сложна для понимания и отладки. Но именно разработка интерфейса в Delphi является самой простой задачей для программиста.
Объекты БД в Delphi основаны на SQL и включают в себя полную мощь Borland Database Engine. В состав Delphi также включен Borland SQL LINK, поэтому доступ к СУБД Oracle, Sybase, Informix и Interbase происходит с высокой эффективностью. Кроме того, Delphi включает в себя локальный сервер Interbase для того, чтобы можно было разработать расширяемые на любые внешние sql–сервера приложения в офлайновом режиме. Разработчик в среде Delphi, проектирующий информационную систему для локальной машины (к примеру, небольшую систему учета медицинских карточек для одного компьютера), может использовать для хранения информации файлы формата .dbf или .db (paradox). Если же он будет использовать локальный interbase for windows (это локальный SQL–сервер, входящий в поставку), то его приложение безо всяких изменений будет работать и в составе большой системы с архитектурой клиент–сервер.