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

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

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

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

Добавлен: 16.05.2023

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

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

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

Таким образом, программно-ориентированное программирование имеет как преимущества, так и недостатки. При этом, наряду с ним, остается актуальным и процедурно-ориентированное проектирование.

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

Возможно, самым первым и наиболее хорошо известным случаем крупномасштабного ус­пешного применении объектно-ориентированной технологии можно считать ее использование компанией Brooklyn Union Gas. Эта компании заменила систему управлении клиентами, содержащую 1,5 миллиона строк кода на языке PL/1, другой системой, написанной с исполь­зованием объектно-ориентированного препроцессора. Новая система была очень большой. Она была рассчитана на 850 интерактивных пользователей, включала базу данных размером 100 Гбайт и 10000 модулей кода. Согласно отзывам, выгода от использовании этой системы заключалась в уменьшении размеров кода на 10% благодаря, главным образом, повторному использованию, снижению затрат на поддержку (группа из 12 человек), безотказному вводу в действие и, прежде всего, очень большой гибкости и возможности расширении. Эти пре­имущества не были бесплатными. Разработчикам пришлось изобретать собственные объ­ектно-ориентированные методы разработки и стандарты, поскольку в период с 1987 по 1990 гг. соответствующие спецификации еще не были созданы, а традиционных методов оказалось недостаточно [4, с. 46].

Еще одним примером успешного применения объектно-ориентированной технологии на ранней стадии се развития может послужить система управления техническим обслуживани­ем компании General Motors. Эта система помогала составлять график ремонтных работ н позволяла выполнять инвентаризацию запасных частей. В старой системе содержалось 265 тысяч строк кода на языке PL/1. Эта система разрабатывалась в течение 12,5 человеко-лет и при работе использовала 13.6 Мбайт оперативной памяти. Новая система была разработана на языке Smalltalk 80 менее, чем за один человеко-год и содержала всего лишь 22 тысячи строк кода, а также использовала не более 1.1 Мбайт оперативной памяти. Примечательно то, что рабочие характеристики обеих систем были примерно одинаковы, а общий выигрыш в производительности можно было оценить соотношением 14:1. Конечно, повторно создавать систему почти всегда намного проще, однако это соотношение все равно впечатляет [4, с. 47].


Хотя выше утверждалось, что добиться повторного использовании (но сравнению с воз­можностью расширении) очень трудно, некоторые компании все же смогли реализовать это. Компания Petroleum Information предоставляет географические данные для предприятий нефтяной и газовой промышленности. В этой компании с использованием системы CLOS (системы объектно-ориентированного программирования на языке Common Lisp) была создана геоинформационная система Sorcerer’s Apprentice (т.е. «ученик чародея»), о которой сообщалось, что 80% ее исходного кода используется повторно. Это, в свою очередь, приве­ло к существенному сокращению сроков разработки и попыткам со стороны разработчиков преодолеть те проблемы, которые ранее считались трудноразрешимыми [18, с. 95].

К другим крупномасштабным приложениям относятся многие торговые системы, разра­ботанные для банковской сферы. В начале 1990-х годов в корпорации Swiss Bank использо­вался язык Objective С. Прн этом на протяжении трех лет удалось добиться 50%-го увеличения производительности программистов.

В источнике [4] описывается ряд исследованных конкретных случаев наиболее успешного применении объектной технологии, которые были выдвинуты на конкурс Object World (Мир объектов) в 1992 году. К ним относятся бухгалтерская и административная система компании Southern California Gas, моделирующая программа с применением объектно-ориентирован­ного анализа компании Boeing и набор средств разработки программ для лечебных учрежде­ний.

Позднее традиционные системы были быстро реконструированы с использованием объектно-ориентированного подхода и связанных с ним методов, таких как экстремальное программирование (eXtreme Programming) [20, с. 211].

Для представления всего множества сфер применения ООП рассмотрим, что же может служить объектами:

♦ Физические объекты.

  • Автомобили при моделировании уличного движения.
  • Схемные элементы при моделировании цепи электрического тока.
  • Страны при создании экономической модели.
  • Самолеты при моделировании диспетчерской системы.

♦ Элементы интерфейса.

  • Окна.
  • Меню.
  • Графические объекты (линии, прямоугольники, круги).
  • Мышь, клавиатура, дисковые устройства, принтеры.

♦ Структуры данных.

  • Массивы.
  • Стеки.
  • Связанные списки.
  • Бинарные деревья.

♦ Группы людей.

  • Сотрудники.
  • Студенты.
  • Покупатели.
  • Продавцы.

♦ Хранилища данных.

  • Описи инвентаря.
  • Списки сотрудников.
  • Словари.
  • Географические координаты городов мира.

♦ Пользовательские типы данных.

  • Время.
  • Величины углов.
  • Точки на плоскости.

♦ Участники компьютерных игр.

  • Автомобили в гонках.
  • Позиции в настольных играх (шашки, шахматы).
  • Животные в играх, связанных с живой природой.
  • Друзья и враги в приключенческих играх. [13, с. 83].

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

Однако это совсем не означает, что на этом пути не было многочисленных провалов. Примечательно то, что многие из возникающих трудностей заставляли организации, которые в начале 1990-х годов приняли язык програм­мирования С++ и связанные с ним методы, отказаться от объектной технологии [6, с. 74].

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

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

ЗАКЛЮЧЕНИЕ

После процедурного подхода к программированию, следующей ступенью в развитии технологий программирования стало появление ООП — программный код теперь не представляется «плоским», а программисту подвластны не только процедуры и функции, но и целые классы. Разумеется, процесс планирования при использовании ООП упрощается, так как объекты программы соответствуют объектам реального мира.


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

Первые программисты писали программы посредством использования машинных кодов. Впоследствии было создано множество различных языков программирования, например: C, ADA, FoxPro, Fortran, Basic, Pascal и другие. Следующей же ступенью развития стало объектно-ориентированное программирование. Появились соответствующие данной парадигме языки, например: C++, Object Pascal. Наблюдалась борьба между скоростью разработки программного обеспечения и скоростью выполнения программного кода. Наиболее важными событиями, связанными с историей ООП считаются появление языка «Симула», содержащего базовые аспекты ООП, а также возникновение языка Smalltalk — первого объектно-ориентированного языка программирования.

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

Вычисление осуществляется посредством взаимодействия объектов. Программирование превращается в процесс моделирования в какой-либо предметной области. Объект получается в результате инкапсуляции состояния (данных) и поведения (операций). Тем самым объект во многих отношениях аналогичен модулю или абстрактному типу данных.

Поведение объекта диктуется его классом. Каждый объект является экземпляром некоторого класса. Все экземпляры одного класса будут вести себя одинаковым образом (то есть вызывать те же методы) в ответ на одинаковые запросы. Объект проявляет свое поведение путем вызова метода в ответ на сообщение. Интерпретация сообщения (то есть конкретный используемый метод) зависит от объекта и может быть различной для различных классов объектов. Происходит наследование поведения от родительских классов.


Наличие иерархических отношений наследования между абстракциями (классами и интерфейсами), экземплярами которых являются объекты в программе, является отличительной чертой объектно-ориентированного подхода в программировании. Поддержка наследования в объектно-ориентированных языках означает возможность выражения отношения «is a» среди типов. Если язык не поддерживает механизм наследования, то его нельзя считать объектно-ориентированным.

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

Методология объектно-ориентированного анализа и проектирования применяется при разработке объемных (например, корпоративных) информационных систем. Известны такие сферы применения как система управления клиентами, техническим обслуживани­ем компании, торговые, инженерные, геоинформационные системы и др.

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

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

  1. Богуславский А.А., Соколов С.М. Основы программирования на языке Си++: Для студентов физико-математических факультетов педагогических институтов. – Коломна: КГПИ, 2002. – 490 с.
  2. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений, 3-е изд. / Г. Буч и др. // Пер. с англ. – М.: «И.Д. Вильямс», 2010. – 720 с.
  3. Волкова И. А., Иванов А. В., Карпов Л. Е. Основы объектно-ориентированного программирования. Язык программирования С++. Учебное пособие для студентов. — М.: Издательский отдел факультета ВМК МГУ, 2011. - 112 с.
  4. Грэхем И. Объектно-ориентированные методы. Принципы и практика. - М.: Вильямс, 2004. – 800 с.
  5. Кириченко А.А. Объектно-ориентированное программирование на алгоритмическом языке C#. – Сетевое электронное издание учебного пособия; М., Издательство «Высшая школа экономики», 2015. – 215 с.
  6. Кьоу Д. Объектно-ориентированное программирование. - СПб.: Питер, 2005. – 237 с.
  7. Лаптев В.В. С++. Объектно-ориентированное программирование: учебное пособие. - СПб. : Питер, 2008. – 457 с.
  8. Лафоре Р. Объектно-ориентированное программирование в C++ / Р. Лафоре. — 4-е изд. — СПб.: Питер, 2004. — 928 с.
  9. Лясин Д.Н., Саньков С.Г. Объектно-ориентированное программирование на языке С++: Учебное пособие./ Волгоград.гос.техн.ун-т,- Волгоград, 2003. – 83 с.
  10. Медведев В. И. Особенности объектно-ориентированного программирования на C++/CLI, C# и Java. / В. И. Медведев. — 2-е изд., испр. и доп. — Казань: РИЦ «Школа», 2010. — 444 c.
  11. Мухортов В. В., Рылов В.Ю. Объектно-ориентированное программирование, анализ и дизайн. Методическое пособие. Новосибирск: ООО «Новософт», 2002. – 180 с.
  12. Павловская Т.А. С/С++ Программирование на языке высокого уровня. – СПБ.: Питер, 2009. – 461 с.
  13. Пышкин Е.В. Основные концепции и механизмы ООП. - СПб.; БХВ - Петербург, 2005 – 640 с.
  14. Радченко Г.И. Объектно-ориентированное программирование / Г.И. Радченко, Е.А. Захаров. - Челябинск: Издательский центр ЮУрГУ, 2013. - 167 с.
  15. Романенко В. В. Объектно-ориентированное программирование: Учебное пособие / Романенко В. В. – 2014. - 475 с.
  16. Романов С.С. Ключевые понятия и особенности объектно-ориентированного программирования // Таврический научный обозреватель. - 2016. - №12-2 (17). - С.141-146.
  17. Страуструп Б. Язык программирования С++. Специальное издание. Пер. с англ. / Б. Страуструп // СПб., М.: «Невский диалект» – «Издательство БИНОМ», 2008 г. – 1104 с.
  18. Уймин А. Г. Кыштымов М. А. Применение объектно-ориентированного программирования для разработки геоинформационных систем // Перспективы развития информационных технологий. – 2012. - № 8. – С.94-98.
  19. Фленов М. Е. Библия Delphi / М. Е. Фленов. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2011. — 688 с.
  20. Хорев П.Б. Технологии объектно-ориентированного программирования. – М.: Академия, 2008. – 448 с.
  21. Бертран М. Основы объектно-ориентированного программирования [Электронный ресурс] / Бертран М. — Электронное издательство «Интернет-университет информационных технологий — ИНТУИТ.ру», 2005. URL: http://www.intuit.ru. (Дата обращения: 10.09.2017).
  22. Курс лекций «Основы информатики и программирования». Электронное издательство «Интернет-университет информационных технологий — ИНТУИТ.ру». URL: http://www.intuit.ru. (Дата обращения: 10.09.2017).
  23. Программирование. ООП в Pascal. URL: http://www.pascal.helpov.net/index/object-oriented_programming_pascal_ programming#pascal-oop_8. (Дата обращения: 10.09.2017).
  24. Руководство пользователя. Borland Pascal. Глава 9. Объектно-ориентированное программирование. URL: http://citforum.ru/programming/bp70_ug/bp70ug_09.shtml. (Дата обращения: 10.09.2017).
  25. Ямов С.И., Кабак И.С Актуальность и перспективы использования объектно-ориентированного подхода при проектировании сложных гибких систем управления. URL: http://magazine.stankin.ru/arch/n_02/automation/art12.html. (Дата обращения: 10.09.2017).