Файл: История и развитие методологии объектно -ориентированного программирования. Сферы применения.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 04.04.2023

Просмотров: 156

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Объекты могут влиять на поведение других объектов. Осуществляется это посредством выполнения действий над этими объектами. В таком случае употребляются термины: вызов метода, вызов функции или передача сообщения. [7]

Термин передача сообщения наиболее отражает динамичность взаимодействия объектов. Он подчеркивает разницу между сообщением и объектом, а так же позволяет понять взаимодействия объектов.

Связь объектов — это важная составляющая ООП. Существует два основных способа связи объектов. В первом случае каждый объект существует отдельно от другого. В случае необходимости взаимодействия отдельных объектов происходит передача сообщений между этими объектами.[6]

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

Во втором случае один объект может содержать другие объекты. Так же как в ООП программа состоит из объектов, так и объекты могут складываться из других объектов с помощью агрегации. У каждого из этих объектов есть интерфейс, содержащий методы и признаки. Передача информации между объектами и теми объектами, которые они содержат, происходит таким же образом, как и в других случаях. Когда объекты взаимодействуют, они посылают друг другу сообщения.[11]

Сообщение — это важное понятие объектно-ориентированного подхода. Благодаря механизму сообщений объекты могут сохранять свою независимость. Объекту, который посылает сообщение другому объекту, безразлично, как этот другой объект выполнит требуемое действие. Объекту важно лишь, чтобы действие было выполнено.[12]

2.2 Сферы применения объектно-ориентированного программирования

В настоящее время объектно-ориентированное программирование является одним из самых популярных направлений программирования для различных сфер применения, от разработки игр до создания таких серьёзных приложений, как приложения для торгов на различных биржах или управления беспилотными летающими устройствами. [10]

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


Разработав первый объектно-ориентированный язык программирования Simula 67, его авторы опередили своё время, точно угадав перспективы развития программирования. Но их современники не оценили по достоинству эту разработку, в результате чего Simula 67. не выдержал конкуренции с другими языками программирования (прежде всего, с языком Fortran). Прохладному отношению к языку Simula 67 способствовало и то обстоятельство, что он был реализован как интерпретируемый (а не компилируемый) язык, что было совершенно неприемлемым в 60-е годы, так как интерпретация связана со снижением эффективности (скорости выполнения) программ.[11]

Использование объектно-ориентированного программирования является хорошим решением при разработке крупных программных проектов. Чем проект объемнее и сложнее, тем выгоднее становится использование объектно-ориентированной технологии программирования. Одним из наибольших преимуществ объектно-ориентированного программирования является возможность многократного использования программного кода.[5]

Выводы

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

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

Глава 3. Исследование эволюции объектно-ориентированных языков программирования. Достоинства и недостатки объектно-ориентированного программирования

3.1 Эволюция объектно-ориентированных языков программирования

В основу концепции всех существующих языков объектно-ориентированного программирования, легли идей Simula-67. Язык Simula-67 основывался на языке Algol-60. Отличительной чертой Simula-67 было наличие параметра у объекта.


Simula-объект представляет собой программный элемент , который характеризуется определёнными атрибутами, а также способен выполнять определённые действия.[7]

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

Языки программировании для выполнения операций одного вида, но с разными типами данных используют разные функции, следовательно за ростом количества типов данных, растёт количество функций для выполнения одного и того же действия. [9]

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

Так же, при реализации механизма одиночного наследования в языке возникает противоречие: с увеличением количества родительских классов до недопустимого значения увеличивается объём дублируемых данных .[9]

Перечисленные выше и другие противоречия были разрешены в языках Smalltalk-80, С++, Eiffel.

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

Классы хранятся в дереве классов и связаны отношением наследования. При этом любой класс является объектом класса более высокого порядка. Написание программы на языке Smalltalk заключается в последовательном изменении состояния ее объектов. Применение механизма компиляции в промежуточное представление даёт возможность запускать программу на аппаратных платформах, поддерживающих виртуальную машину Smalltalk.[10]

Часть противоречий Simula-67 была разрешена в языке Smalltalk-80 следующими способами. Например, при использовании приема «универсальности» в язык была добавлена возможность перегрузки операторов, т.е. возможность одновременного существования в одной области видимости нескольких различных вариантов применения оператора, имеющих одно и то же имя, но различающихся типами параметров, к которым они применяются. С помощью закона перехода в надсистему создана среда разработки программы, обладающая пользовательским интерфейсом и предоставляющая средства для отладки программ.


Таким образом, в языке появилось большое количество новых механизмов реализации ООП.

Несмотря на то, что в языке Smalltalk-80 была разрешена часть противоречий Simula-67, Smalltalk-80 унаследовал ряд противоречий этого языка.[12]

Далее рассмотрим язык С++, это один из популярных объектно-ориентированных языков программирования, созданный в 1983 году Б. Страуструпом . Результатами создания экземпляров в языке являются просто объекты, или объявления данных. Классы могут называть один или несколько родительских классов, обеспечивая наследование и множественное наследование соответственно.

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

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

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

При использовании приема «объединение» были введены возможность объединения дублируемых параметров в одном из классов и возможность объекту наследовать несколько классов, т.е. появился механизм множественного наследования.[1]

Для языка С++ также существует ряд противоречий. Например, использование технологии множественного наследования порождает проблемы, связанные с неоднозначностью выбора из одноименных методов родительских классов. Например, если вызвать метод для объекта Show() и в классе его не окажется, но в классах-родителях будет присутствовать метод Show(), определенный по-своему, то какой из методов должен быть вызван? Таким образом, с увеличением количества классов-предков при множественном наследовании недопустимо увеличивается неоднозначность выбора одноименных методов.[8]

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

В языке Eiffel были разрешены не только часть противоречий C++, но и противоречия предыдущих языков.


Например, при помощи приема «предварительное действие» были разработаны дополнительные операторы, регулирующие порядок наследования и вызова функций.[9]

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

Проведённый анализ объектно-ориентированных языков программирования позволил:

  • систематизировать знания о существующих механизмах реализации объектноориентированных возможностей;
  • обосновать эволюцию механизмов ООП;
  • выявить противоречия, которые запускают механизм эволюции;[7]

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

К настоящему времени насчитывается более сотни различных объектных и объектно-ориентированных языков.

Объектно-ориентированное программирование является в настоящее время основой всей индустрии прикладного программирования благодаря выигрышу в конкурентной борьбе с альтернативными технологиями.[12]

3.2 Достоинства и недостатки объектно-ориентированного программирования

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