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

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

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

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

Добавлен: 02.05.2023

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

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

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

Существует так называемые права доступа, в зависимости от которых методы и классы видны другим классам. В Delphi, например, это public, private, protected, published. Открытыми для доступа должны быть лишь некоторые возможности класса.

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

Под модулями понимаются структурные единицы, из которых состоит программа. Поскольку модуль всегда рассматривается как синтаксическая концепция, то разбиение на них влияет только на форму записи исходных кодов, не определяя их функциональность. Тип — это статистическое описание определенных динамических объектов — элементов данных, обрабатываемых в процессе выполнения программы.[37]

Одним из важнейших достижений в области ООП является методология паттернов проектирования, иногда называемых шаблонами проектирования [6, с. 202].[38]

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

2.2 Анализ современных языков программирования, базирующихся на методологии ООП

В наше время количество прикладных языков программирования, реализующих парадигму ООП превышает количество языков, реализующих иные парадигмы. Наиболее популярные языки программирования (С++, Delphi, C#, Java и др.) воплощают объектную модель Симулы. Примерами языков, базирующихся на модели Smalltalk, являются Python и Ruby.

Также выделяются объектные языки, к которым относят те, которые обеспечивают абстракцию данных и создание классов. К объектно-ориентированным же языкам относятся объектные языки, поддерживающие наследование и полиморфизм.[39]

Итак, средством программирования выступает один из объектно-ориентированных языков программирования. Язык программирования называется объектно-ориентированным, если:


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

Объектно-ориентированные языки программирования иногда делят на «чистые» (Смолток, Java, SELF), и «гибридные», выросшие из ранее существовавших процедурных языков (Ада 95, C++). К «чистым» относят те языки, в которых все данные хранятся как объекты, размещаемые с автоматическим выделением и освобождением памяти.

SIMULA 67

Все объектно-ориентированные языки происходят от языка Симула, разработанного в начале 60-х гг. в Norwegian Computing Centre. Синтаксис языка взят из Алгола-60. Основными новшествами были понятия объекта, класса и наследования. Авторы этого языка очень точно угадали перспективы развития программирования: их язык намного опередил свое время.

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

Объекты могут действовать независимо друг от друга. Действие объекта можно приостановить и возобновить позже. Встроенные классы добавляют в язык средства работы со списками, графику и моделирование дискретных событий.

Сформированная в 1972 г. организация Simula Standards Group осуществляет контроль за развитием языка: самая последняя версия была выпущена в 1986г. Изменения в язык вносит Simula Developement Group. Кроме того, есть ассоциация пользователей языка Simula.

SMALLTALK

Язык Smalltalk был разработан командой Xerox Palo Alto Research Center Learning Research Group как программная часть Dynabook – фантастического проекта Алана Кея. В основу были положены идеи Simula.. Smalltalk является одновременно и языком программирования, и средой разработки программ.[41]

Это чисто объектно-ориентированный язык, в котором абсолютно все рассматривается как объекты; даже целые числа - это классы. Вслед за Simula, Smalltalk является важнейшим объектно-ориентированным языком, поскольку он не только оказал влияние на последующие поколения языков программирования, но и заложил основы современного графического интерфейса пользователя, на которых непосредственно базируются интерфейсы Macintosh, Windows и Motif.

Известны пять выпусков языка Smalltalk, обозначаемых по году их появления: Smalltalk-72, -74. -76, -78, -80. Реализации 1972 и 1974 годов заложили основу языка, в частности идею передачи сообщений и полиморфизм, хотя механизм наследования еще не появился. В последующих версиях полноправное гражданство получили классы; этим достигла завершения точка зрения, что все состоит из объектов. Smalltalk-80 был перенесен на многие компьютерные платформы. В основу языка положены в идеи:


  • данные хранятся как объекты, которые освобождаются автоматически;
  • выполнение действий осуществляется через посылку сообщений объектам;
  • поведение объектов описано в классах.[42]

Большим недостатком Smalltalk являются большие требования к памяти и низкая производительность полученных программ. Это связано с не очень удачной реализацией объектно-ориентированных особенностей.

C++

Язык программирования C++ был разработан Бьерном Страуструпом, сотрудником AT&T Bell Laboratories. Непосредственным предшественником C++ является С with Classes, созданный тем же автором в 1980 году. [43]

Язык С++ в основном является языком Си со специальными синтаксическими расширениями для определения и управления объектами. В нем был учтен ряд недостатков языка Си: теперь ведется проверка типов аргументов функций, можно производить макроподстановку функций. Также в него включены некоторые средства проекта стандарта Ansi C. По завершении стандарта C++ будет пересмотрен для удаления несовместимостей двух языков. Важной новой особенностью C++ является поддержка абстракции данных и объектно-ориентированного программирования. Абстракция данных поддерживается с помощью введения типов, определенных пользователем. [44]

С++ - это язык программирования, а не среда разработки программ типа Smalltalk. Поэтому ему нужны средства поддержки работы программиста: сюда входят расширения существующих средств языки Си (редакторы, отладчики) и средства поддержки работы с объектами (окна просмотра классов). В свою очередь, эти средства должны соединяться со средой программирования.[45]

Common Lisp Object System (CLOS)

В начале 80-х годов под воздействием идей объектно-ориентированного программирования возникла серия новых диалектов Lisp, многие из которых были ориентированы на представление знаний. Objective-C - это гибридный язык, состоящий из подмножества Ansi C и основных положений Smalltalk-80. Тексты программ могут содержать чистые операторы языка Си или объектно-ориентированные конструкции. Объекты задаются новым типом данных, называемым id. Сообщения посылаются объектам с помощью модифицированной версии синтаксиса языка Smalltalk. Новые объекты создаются посылкой сообщения new специальному типу объекта, называемому объектом-производителем.

CLOS должен:

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

Ada

В 1983 году под эгидой Министерства Обороны США был создан язык Ada. Язык замечателен тем, что очень много ошибок может быть выявлено на этапе компиляции.

Кроме того, поддерживаются многие аспекты программирования, которые часто отдаются на откуп операционной системе (параллелизм, обработка исключений). В 1995 году был принят стандарт языка Ada 95, который развивает предыдущую версию, добавляя в нее объекно-ориентированность и исправляя некоторые неточности.

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

  • надежности и эксплуатационных качествах программ;
  • программировании как разновидности человеческой деятельности;
  • эффективности. [46]

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

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

Eiffel

Автор Eiffel Бертран Мейер (Bertrand Meyer) создавал не только язык объектно-ориентированного программирование, но и инструмент проектирования программ. Несмотря на сильное влияние Simula, Eiffel - вполне самостоятельный объектно-ориентированный язык со своей собственной средой разработки.

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

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


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

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

Object Pascal

Object Pascal - это объектно-ориентированное расширение Паскаля, разработанное Н. Виртом совместно с командой с фирмы Apple. Классы (типы) реализованы как расширение паскалевской структуры RECORD. В Object Pascal они могут содержать как поля данных, так и поля методов.

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

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

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

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

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

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