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

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

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

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

Добавлен: 29.02.2024

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

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

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. Исторические аспекты развития языков программирования

1.1. История развития представлений о программировании и формирования объектной модели

1.2. Краткая история методологий программирования

Методология машинного кодирования

Методология ассемблирования

Методология процедурного программирования

Методология логического программирования

Методология функционального программирования

Методология структурного программирования

Методология объектно-ориентированного программирования

2. Развитие объектно-ориентированной методологии программирования

2.1. Концептуальная база объектно-ориентированной методологии

2.2. Понятие объектно-ориентированного программирования

2.3. Виды объектно-ориентированных языков программирования

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

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

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

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

  • Документирование классов является более трудной задачей, нежели документирование процедур и модулей. Поскольку любой метод может быть переопределен, в документации нужно указывать не только то, что делает данный метод, но и то, в каком контексте он вызывается. Следовательно, разработчик программного обеспечения должен знать, какие условия выполняются, когда вызывается данный метод.
  • В сложных иерархиях классов поля и методы обычно наследуются с разных уровней, поэтому не всегда просто определить, какие поля и методы фактически относятся к данному классу. Для получения такой информации нужны специальные инструменты, например, навигатор классов. Если конкретный класс расширяется, то каждый метод обычно сокращают перед передачей сообщения базовому классу. Реализация операции, таким образом, рассредотачивается по нескольким классам, и чтобы понять, как она работает, необходимо просматривать весь код. [2, 9]
  • Методы, как правило, короче процедур, поскольку они осуществляют только одну операцию над данными, зато их намного больше. В коротких методах легче разобраться, но они неудобны тем, что код для обработки сообщения иногда распределен по многим маленьким методам.
  • Существует мнение, что объектно-ориентированное программирование является неэффективным. Рассмотрим различные виды неэффективности:
  1. Неэффективность на этапе выполнения. В языках типа Smalltalk сообщения интерпретируются во время выполнения программы путем осуществления их поиска в одной или нескольких таблицах и за счет выбора подходящего метода – это медленный процесс. В гибридных объектно-ориентированных языках отправка сообщения приводит лишь к вызову через указатель процедурной переменной. И поскольку сообщения встречаются в программе гораздо реже других операций, их воздействие на время выполнения влияния практически не оказывает. Еще одним фактором, влияющим на время выполнения является инкапсуляция данных. Рекомендуется выполнять каждую операцию над данными через методы, а не предоставлять прямой доступ к полям класса. Однако если инкапсуляцию использовать только там, где она действительно необходима, то замедление вполне приемлемое. [9]
  2. Неэффективность в смысле распределения памяти. Динамическое связывание и проверка типа на этапе выполнения требуют по ходу работы информацию о типе объекта. Такая информация хранится в дескрипторе типа и он выделяется один на класс. Каждый объект имеет невидимый указатель на дескриптор типа для своего класса. Поэтому в объектно-ориентированных программах необходимая дополнительная память выражается в одном указателе для объекта и в одном дескрипторе типа для класса. [9, 13]
  3. Неэффективность, связанная с излишней универсальностью (избыточными возможностями). Зачастую в библиотечном классе содержится методов больше, чем это необходимо, что в конечном итоге увеличивает размер программного кода. Решения данной проблемы: строить базовый класс с минимальным числом методов, а дальше реализовывать различные расширения этого класса, позволяющие расширить функциональность. Другой вариант решения: позволить компоновщику удалять лишние методы. [12]

Исходя из выделенных преимуществ и вместе с тем недостатков методологии объектно-ориентированного программирования обозначим основные сферы применения данной методологии (рис. 17).

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

Вывод по главе 3

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

ЗАКЛЮЧЕНИЕ

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

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

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

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


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

В настоящее время известно более 2500 объектно-ориентированных языков программирования, наиболее известные из них: Simula, Smalltalk, C++, Python, Java, Delphi, Perl, C и т.д.

Сферы применения методологии объектно-ориентированного программирования достаточно широки:

  • разработка серверной части программного обеспечения;
  • разработка клиентской (пользовательской) части программного обеспечения;
  • разработка WEB-приложений;
  • разработка WINDOWS-приложений;
  • разработка приложений к системам управления базами данных;
  • разработка развлекательных приложений (например, игр и т.п.);
  • создание графических модулей;
  • разработка модулей библиотек;
  • создание модулей библиотек.

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Бадд Т. Объектно-ориентированное программирование в действии / Т. Бадд – СПб.: Питер, 1997. – 464 с.
  2. Бобровский С. История объектно-ориентированного программирования / С. Бобровский // PC Week/RE. – 2003. – № 28. – С. 19-23.
  3. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений, 3-е изд. / Г. Буч и др. // Пер. с англ. – М.: «И.Д. Вильямс», 2010. – 720 с.
  4. Вегнер П. Программирование на языке Ада / П. Вегнер ; пер. с англ. Ю.Ю. Галимова, Э.М. Киуру – М. : Мир, 1983. – 239 с.
  5. Габриелли М. Языки программирования: принципы и парадигмы / М. Габриелли, С. Мартини. – М. : Лондон Лимитед, 2010. – 450 с.
  6. Голицына О.Л., Партыка Т.Л., Попов И.И. Языки программирования Учебное пособие. – М.: Форум, 2011. – 400 с.
  7. Забудский Е.И. Объектно-ориентированный анализ и программирование на языке C# – М.: Кафедра ОИиППО ГУ-ВШЭ, 2012. – 705 с.
  8. Иванова Г.С. Объектно-ориентированное программирование: Учеб. для вузов/ Под ред. Г.С. Ивановой. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2011. – 320 с.
  9. Кирютенко Ю.А., Савельев В.А. Объектно-ориентированное программирование. Язык Smalltalk / Ю.А. Кирютенко, В.А. Савельев. – М.: Вузовская книга, 2006. – 328 с.
  10. Кун Т. Структура научной революции / Т. Кун. – 3-е изд. – М.: Юниверсити Чикаго Пресс, 2001. – 346 с.
  11. Лайтфут Д. Модульные языки программирования: 7-я конференция Модулярных языков / Д. Лайтфут. – М.: Лондон-Лимитед, 2010. – 30 с.
  12. Лекция 2: Основы объектно-ориентированного программирования. [Электронный ресурс]. URL: https://www.intuit.ru/studies/courses/16/16/lecture/ 27107?page=5 (дата обращения: 05.10.2018).
  13. Мейер Б. Объектно-ориентированное конструирование программных систем / Б. Мейер. – М.: Интернет-университет информационных технологий. – ИНТУИТ.ру", 2005. – 1232 c.
  14. Могилев А.В., Листрова Л.В. Методы программирования. Компьютерные вычисления. – СПб.: БХВ-Петербург, 2013. – 320 с.
  15. Пратт М. Языки программирования / М. Пратт, Б. Зелковитц. – 4-е изд. – М.: Питер, 2005. – 212 с.
  16. Себеста Р. Основные концепции языков программирования / Р. Себеста. – М.: Вильямс, 2001. – 659 с.
  17. Страуструп Б. Дизайн и эволюция С++ / Б. Страуструп. – СПб.: ДМК Пресс, 2006. – 445 с.
  18. Фридман П. Основы языков программирования / П. Фридман. – М.: МИТ, 2008 – 42 с.