| | | | | | | | | | | | | | | | | | | | | | | О | д | н | а | | с | т | р | а | н | и | ц | а | | п | о | | п | о | в | о | д | у | | о | б | ъ | е | к | т | о | в | | | | | | | | | | | | | | | | | | | | | | | |
4.7.96 | |
|
"Мои директора привыкли достаточно хорошо схватывать новую технологию после |
полудневного семинара, но нет никаких шансов на то, чтобы понять объектную |
технологию за такое короткое время." |
- Начальник отдела управленческих информационных систем, процитированный в |
документе компании Taligent "Уроки раннего принятия объектной технологии". |
__________________________________________ |
Объекты |
__________________________________________ |
При том, что объекты известны уже 25 лет, сейчас они внезапно сделались |
центром внимания. Можно не понимать глубоко объектной технологии, но несколько |
концепций из нее (и даже часть жаргона) можно получить прямо с одной страницы. |
Объект - это просто модель чего-либо из реального мира. |
__________________________________________ |
Переменные и методы |
__________________________________________ |
Данные в объекте известны как его переменные. Переменная может состоять из |
традиционных типов алфавитно-цифровых данных. Она также может соединять |
существующие типы данных новыми способами и быть указателями на другие |
объекты. В этих случаях переменные объекта могут быстро сделаться очень |
сложными. |
Процесс создания новых типов данных известен как абстракция данных. |
Код, манипулирующий данными, называется методом. |
__________________________________________ |
Инкапсуляция и сообщения |
__________________________________________ |
Традиционное программирование оставляет данные открытыми для всех частей |
программы. Это может привести к случайному искажению. Это также затрудняет |
изменение структуры данных, поскольку весь код, использующий эту структуру |
данных, также должен быть изменен, если структура данных изменилась. |
В объектном мире код и его данные (методы и переменные) тесно связаны друг с |
другом в процессе, известном как инкапсуляция. Нельзя впрямую получить доступ |
или изменить ни методы, ни переменные). Вместо этого с объектом производится |
коммуникация с помощью сообщения, которое вызовет метод, способный, в свою |
очередь, поменять переменную. |
В таком случае только сам объект может поменять значения своих переменных. До |
тех пор, пока сам объект имеет правильный код, его переменные нельзя исказить. |
Изменения переменных требуют изменений только в методах объекта, но не в |
каком-либо другом коде. |
__________________________________________ |
Классы |
__________________________________________ |
Группа объектов с подобными свойствами может быть сгруппирована в класс. Это |
позволяет подобным свойствам (и коду, который их поддерживает) располагаться в |
классе. В объекте нужно определять только уникальные свойства. Этим упрощается |
написание кода, снижается избыточность и экономится память. |
Объект, принадлежащий классу, называется моментом класса. |
__________________________________________ |
Наследование |
__________________________________________ |
Часто различные классы объектов имеют сходные свойства. Во избежание |
дублирования общего поведения можно определить суперкласс, содержащий общие |
компоненты. Обратным к суперклассу является субкласс, который имеет все |
свойства своего суперкласса, а также свои собственные уникальные свойства. |
Необходимо определять только уникальные свойства класса, общие же свойства |
определяются в суперклассе. Такой процесс приобретения свойств от суперкласса |
известен как наследование. Этим способом можно сконструировать иерархию |
классов. |
В некоторых системах классу позволяется наследовать характеристики от более |
чем одного суперкласса. Такое свойство называется множественным наследованием, |
однако поборники чистоты теории его не признают, и при неаккуратной его |
реализации оно может стать источником ошибок. |
__________________________________________ |
Полиморфизм |
__________________________________________ |
Способ, которым объект реагирует на сообщение, будет зависеть как от того, что |
собой представляет сообщение, так и от того, что собой представляет объект. |
Одно и то же сообщение может иметь различные результаты при посылке его |
различным объектам. Например, посылка сообщения "печать" к клиентскому объекту |
будет иметь иной эффект, нежели посылка этого же самого сообщения к |
графическому объекту. |
Такое поведение называется полиморфизмом ("многоформенностью"). |
Оно устраняет необходимость выстраивать группы подобных имен для подобных |
функций, которые не совсем одно и то же. |
__________________________________________ |
Обертывание |
__________________________________________ |
Для облегчения перехода в объектный мир многие объектно-ориентированные среды |
позволяют добавлять некоторый код вокруг традиционных приложений, что |
заставляет их действовать как объекты. Этот процесс называется обертыванием. |
__________________________________________ |
Выгоды от объектов |
__________________________________________ |
* Долговременное повторное использование. Хорошо сконструированные объекты |
могут быть часто и достаточно долго повторно используемы. Объекты, которые вот |
так повторно используются, часто называются частями, хранящимися в |
библиотеках. Опытные объектные программисты обычно предпочитают потратить |
время на поиск пригодной части, чем создавать объект с самого начала. |
* Быстрое построение прототипа и разработка приложения. Опытные |
объектно-ориентированные разработчики способны сократить объем подлежащего |
написанию кода на 95 %. Хотя некоторое время тратится на поиск объектных |
частей, заменяющих многие строки кода, объектные приложения при этом |
обычно будут разрабатываться быстрее. |
* Более высокое качество. Приложения в этом случае составляются в основном из |
существующих испытанных компонент. Инкапсуляция сокращает количество |
взаимодействий между компонентами. |
* Гибкость. Новые компоненты могут добавляться к приложению без модификаций |
существующих объектов. Могут определяться новые структуры данных. |
__________________________________________ |
Стандарты объектов |
__________________________________________ |
Пока не существует международно признанных стандартов для объектов. |
Компания Microsoft установила собственный стандарт для объектов, реализованных |
в ее Связывании и Встраивании Объектов (OLE), которые поставляются с Windows. |
Группа Менеджмента Объектов (OMG) является организацией поставщиков, |
разработчиков и пользователей, основанной для продвижения теории и практики |
технологии объектного менеджмента. Эта группа определила свой собственный |
стандарт под названием Общая Архитектура Брокера Объектных Запросов ( | CORBA | ). |
Данное открытое определение быстро становится стандартом де-факто. |
CORBA | не только определяет, как работают объекты, но и ясно устанавливает, как |
объекты взаимодействуют по сети. |
__________________________________________ |
Корпорация IBM и объекты |
__________________________________________ |
Корпорация IBM является членом группы OMG. Модель Системного Объекта (SOM) и |
Распределенная Модель Системного Объекта (DSOM) корпорации полностью реализуют |
спецификацию | CORBA | . SOM и DSOM приняты целым рядом поставщиков, включая Apple, |
Hewlett Packard, Borland и др. |
Кроме того, OS/2 Версия 2.1 включает Microsoft Windows и поэтому поддерживает |
OLE для Windows-приложений. |
__________________________________________ |
Объектно-ориентированные языки |
__________________________________________ |
Существует несколько объектно-ориентированных языков. Двумя наиболее часто |
используемыми являются С++ и SmallTalk. С++ не так строго внедряет объектную |
модель, но предлагает хорошее быстродействие. SmallTalk полностью подчиняется |
объектной модели, но он в целом не так быстр, как С++. SmallTalk применяется в |
VisualAge корпорации IBM. |
__________________________________________ |
Где получить дополнительную информацию |
__________________________________________ |
* Прочитайте "Object Oriented Technology: A Manager's Guide" by David Taylor. |
Можно заказать у IBM как ZH20-9092. |
* На MKTTOOLS получите документы Taligent и PSP в пакете OBJTECH и презентацию |
по объектам PSP в пакете OBJPSP. |
|
Составлено Шоном Хаффи, Группа Открытых Предприятий IBM UK |
|
HAFFEY at CROVM3 |