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

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

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

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

Добавлен: 13.03.2024

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

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

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

Существуют пять версий этого языка: Smalltalk-72, 74, 76, 78, 80. Версии Smalltalk-72 и 74 не поддерживали наследование, но реализовывали большинство основных концепций, в частности, механизм передачи сообщений и полиморфизм. В последующих версиях на первый план вышли классы. Это свидетельствовало о победе точки зрения, что все сущности в среде программирования должны рассматриваться как объекты. В настоящее время существует около 20 разных реализаций языка Smalltalk, большинство из которых представляют собой вариант языка Simula-80 для конкретной платформы (аппаратного и программного обеспечения). Несмотря на то, что пользовательский интерфейс в этих реализациях, как правило, отличается от других, библиотеки классов и общие функциональные свойства во всех версиях практически совпадают.

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

Таблица 2 Объектно-ориентированные свойства Smalltalk

Элементы объектной модели

Свойство

Включено?

Абстракция

Переменные экземпляра

да

Методы экземпляра

Да

Переменные класса

Да

Методы класса

Да

Инкапсуляция

Переменных

Закрытая

Методов

Открытая

Модульность

Виды моделей

Нет

Иерархия

Наследование

Одиночное

Шаблоны

Нет

Метаклассы

Да

Язык программирования C++ разработал сотрудник компании AT&T Bell Laboratories Бьерн Страуструп (Bjarne Stroustrup). Непосредственным предшествен­ником C++ является язык С with Classes, созданный Страуструпом в 1980 году. В свою очередь, язык С with Classes испытывал сильное влияние языков С и Si­mula. В значительной степени язык C++ представляет собой расширение языка С. Однако в некотором смысле язык C++ лучше языка С. В частности, он обеспе­чивает контроль типов, перегрузку функций и ряд других усовершенствований. И все же самое главное — это то, что язык C++ добавляет к языку С объектно-ориентированные свойства.


Ранние технологии трансляции программ, написанных на языке C++, исполь­зовали препроцессор cfront языка С. Поскольку в качестве промежуточного кода препроцессор cfront генерировал программы на языке С, он позволил достаточ­но быстро перенести язык C++ практически на все UNIX-системы. В настоящее время почти на всех платформах существуют коммерческие трансляторы и ин­терпретаторы языка C++, которые могут настраиваться практически на любую архитектуру компьютеров.

Существовало несколько основных версий C++. Версия 1.0 дополнила язык С механизмами объектно-ориентированного программирования, например, одиноч­ным наследованием и полиморфизмом, а также проверкой типов и перегрузкой функций. Версия 2.0, выпущенная в 1989 году, представляла собой улучшенную версию своей предшественницы (в частности, в этой версии было реализовало множественное наследование). Она возникла в результате обобщения опыта ши­рокого применения языка C++ довольно крупным сообществом пользователей. В версии 3.0, появившейся в 1990 году, были предусмотрены шаблоны (парамет­ризованные классы) и обработка исключений. Комитет ANSI X3J16 C++ одоб­рил предложения по управлению пространствами имен (согласованные с нашим понятием категории классов), а также идентификации типов во время выполне­ния программ. Кроме того, язык C++ был стандартизован Британским институ­том стандартов (BTI — British Standards Institute), Организацией национальных стандартов Германии (German national standards organization — DIN) и Органи­зацией международных стандартов (International Standards Organization — IOS). Окончательный вариант стандарта ISO был принят в 1997 году и ратифицирован в августе 1998 года. В настоящее время основным институтом, отвечающим за поддержку стандарта языка C++, является организация ISO.

Язык C++ исправил многие недостатки языка С. В нем предусмот­рены описания классов, проверка типов, перегрузка, управление динамической памятью, постоянные типы, ссылки, встраиваемые функции, производные классы и виртуальные функции.

Характеристики языка C++ с точки зрения четырех основных элементов объект­ного подхода приведены в таблице З.

Таблица З. Объектно-ориентированные свойства языка C++

Элементы объектной модели

Свойство

Включено?

Абстракция

Переменные экземпляра

Да

Методы экземпляра

Да

Переменные класса

Да

Методы класса

Да

Инкапсуляция

Переменных

Закрытая, защищенная, закрытая

Методов

Открытая, защищенная, закрытая

Модульность

Виды моделей

Файл

Иерархия

Наследование

Множественное

Шаблоны

Да

Метаклассы

Нет


Выяснив, что с помощью языка C++ очень трудно решить некоторые задачи, Джеймс Гослинг (James Gosling) и его немногочисленные коллеги, работавшие в компании Sun Microsystems, создали компактный язык программирования под названием Oak.

Перед группой Джеймса Гослинга стояла задача разработать программное обеспечение для бытовых приборов с цифровым управлением, например, элек­тронных игрушек и микроволновых печей. После того как попытки внедрить эту технологию на рынке цифрового кабельного телевидения провалились, разработ­чики поняли, что наилучшая сфера для приложения их усилий — сеть Интернет. Авторы переименовали язык Oak в язык Java и стали позиционировать его как язык программирования общего назначения, интерпретаторы которого легко за­грузить через сеть Интернет и выполнить в контексте браузеров HTML.

Решающий прорыв языка Java на рынок произошел в 1995 году, когда компа­нии Sun Microsystems и Netscape сообщили, что они планируют инкорпорировать технологию Java в программу Netscape Navigator, наиболее популярный браузер того времени. Сообщение сразу привело к созданию огромного рынка потенци­альных пользователей этой технологии.

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

Несмотря на относительную молодость языка Java (менее 20 лет), его успешность феноменальна со многих точек зрения, при чем его популярность продолжает расти до сих пор. Этот рост можно объяснить не только постоянным совершенствованием языка, но и появлением тесно связанных с ним технологий: Enterprise Java Beans (EJB), Java Server Pages (JSP) и Java 2 Micro Edition (J2ME).

В данное время компания Sun Microsystems активно развивает язык Java и свя­занные с ним технологии.

Технология Java — это не просто язык программирования. Подобно языку Smalltalk, Java одновременно является и средой программирования, и языком. Ja­va основывается на использовании виртуальных машин и промежуточного двоичного кода. Аналогично языку Smalltalk, язык Java содержит в себе объемную библиотеку классов, ко­торую можно дополнять. Технология Java очень хорошо подходит для сети Интернет в виду своей независимости от компьютерной плат­формы и богатому набору стандартных функций.


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

Однако, в языке Java нет многих свойств языка C++, например множественного наследования и перегрузки операторов. Однако имеются и такие свойства и механизмы, которые впервые появились именно в этом языке. Одним из наиболее важных свойств языка Java является сборка "мусора" (garbage collection). Этот механизм освобождает разработчиков языка Java от необходимости реализовывать свою собственную си­стему управления памятью. Вместо этого они могут создавать новые экземпляры объектов и быть уверенными, что после удаления всех ссылок некоторая область памяти будет очищена. Несмотря на то что этот механизм сборки "мусора" не так эффективен, как механизм управления памятью в языке C++, он устраняет источники многих потенциальных ошибок.

Язык Java стремится обеспечить максимально возможную с точки зрения прак­тики безопасность типов. Однако, благодаря обширной библиотеке классов, такая строгая проверка типов, как в языке C++, не является практичной. Самая свежая спецификация языка Java 2 version 1.5 содержит некоторые новшества, которые называются Generics (JSR 14). Классы Java Generics, известные также как пара­метризованные типы, похожи на шаблоны из языка C++. Они позволяют про­граммистам, работающим на языке C++, помимо всего прочего создавать наборы данных (collections), безопасные с точки зрения типов.

Характеристики языка Java относительно четырех основных элементов объект­ного подхода приведены в таблице 4.

Таблица 4 – Объектно-ориентированные свойства Java

Элементы объектной модели

Свойство

Включено?

Абстракция

Переменные экземпляра

Да

Методы экземпляра

Да

Переменные класа

Да

Методы класса

Да

Инкапсуляция

Переменных

Открытая, защищенная, закрытая, пакет

Методов

Открытая, защищенная, закрытая, пакет

Модульность

Виды моделей

Файл

Иерархия

Наследование

Одиночное

Шаблоны

Да

Метаклассы

Нет


ЗАКЛЮЧЕНИЕ

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

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

Также были рассмотрены наиболее популярные объектно-ориентированные языки, раскрыты их особенности.

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

СПИСОК ЛИТЕРАТУРЫ

  1. Гради Буч «Объектно-ориентированный анализ и проектирование», Rational Санта-Клара, Калифорния перевод с английского под редакцией И. Романовского и Ф. Андреева, 2008 г.
  2. Йорден Е, Методы структурного моделирования. Росса-М, 2009 г.
  3. Ган. С и Сарсон, Т. Системы структурного анализа, ТехноРос, 2009 г.
  4. Уорд, П. и Меллор, С.. Структурированные развития систем реального времени. 2010 - Мир, Москва, 560с.
  5. Хэтли, Д. Стратегии системных спецификаций. Нью-Йорк, Дорсет дом., М- 2008.
  6. Дженкинс, М. и Глазго, Дж. 2006 О Стилях программирования в Ниал . IEEE Software вып.3 (1) , стр.48 .
  7. Боброва,Д. и Стэфик,М. феврале 1006 года. Перспективы программировании искусственного интеллекта . вып. 231 Наука, с.51 .
  8. Даль, О., Дейкстра Э., Хоара , C.A.R. Структурное программирование. Академик-пресс., М-2012, с.83 .
  9. Шоу, М. Абстракция методы в современной Языки программирования. IEEE Software вып (4) , 2004. с.10 .
  10. Берзиньш ,В. Грей ,М. и Науман,Д. Абстракция на основе разработки программного обеспечения. Объекдинение, 2006. вып. 29 (5) , с.403 .
  11. Абельсона , Х. и Суссман , Г. Структура и интерпретация компьютерных программ, Лига-пресс, М – 1985, с.126 .
  12. Там же, с.132 .
  13. Ингаллс, Д. Smalltalk -76 Программирование разработки и внедрения систем. Результаты Пятого ежегодного симпозиума о принципах Языков программирования. ACM , стр.9 .
  14. Ганнон .Дж . , Гамлет . Р. Миллс. H. Теории модулей . IEEE Transactions номер 13 (7) , с.820 .
  15. Date, С. 2006. Relational Database: Selected Writings. Reading, MA: Addison-Wesley, p.180.
  16. Liskov, B. 2008. Data Abstraction and Hierarchy. SIGPLAN Notices vol.23(5). p.19