Одна страница по поводу объектов                       
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                                                              


HyperText/CGI-HTML, v. 3.6.4 (C)1994-2000 M.Zakharov