Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные свойства объектно-ориентированных систем

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

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

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

Впервые идеи об объектно-ориентированном подходе были воплощены в языке программирования Симула еще в середине 60-х годов [1], где были введены понятия:

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

В аппаратуре понятие объекта, как защищенной области памяти, содержащей взаимосвязанные команды и данные, было реализовано в известном 32-разрядном микропроцессоре iAPX-432 фирмы Интел [2].

Однако первой системой, полностью основанной на объектно-ориентированном подходе, считается система программирования Смолток [3].

Система Смолток, состоящая из интерпретатора объектно-ориентированного языка программирования высокого уровня и интерактивного графического пользовательского интерфейса (среды программирования), разрабатывается начиная с 1970 г. фирмой Ксерокс в исследовательском центре г. Пало-Альто (США). В настоящее время неофициальным стандартом является вариант языка и системы Смолток-80 [4,5].

Развитие объектно-ориентированных языков и систем идет по трем направлениям:

  1. разработка языков и систем, обладающих теми или иными объектно-ориентированными чертами (Симула, Модула-2, Ада, Clu);
  2. включение объектно-ориентированных свойств в уже существующие языки и системы (Object Pascal, C++, Objective C, SPOOL);
  3. разработка новых языков и систем, полностью основанных на объектно-ориентированном подходе (Смолток, Actor, Eiffel, НУТ).

Это типичный процесс конкуренции эволюционного (1,2) и революционного (3) развития.

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

  • скрытие реализации;
  • абстрактные типы данных;
  • динамическое связывание имени со значением;
  • наследование свойств.

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

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

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

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

Впервые абстрактные типы данных были реализованы в языке Clu [6] в виде модулей, названных кластерами (отсюда и название языка). Дальнейшее развитие они получили в языках Ада и С++ [7].

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

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

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

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

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

Впервые механизм наследования свойств был включен в язык Симула, дальнейшее развитие он получил в языках Ада, Objective C [8].

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

 

<== предыдущая лекция | следующая лекция ==>
Значение объектно-ориентированных систем | Преимущества объектно-ориентированных систем
Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 333; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.