Читаем Сущность технологии СОМ. Библиотека программиста полностью

Разработчики СОМ развенчали миф о том, что главную роль при достижении повторного использования играет наследование. Фундаментальное понятие, использующееся в СОМ при моделировании повторного использования, – это инкапсуляция, а не наследование. А принцип наследования СОМ использует при моделировании взаимоотношения типов между объектами, выполняющими сходные функции. Построением СОМ-модели повторного использования на основе инкапсуляции разработчики поддерживали повторное использование в форме черного ящика, устраивающее ожидаемый рынок компонентов. Идея состоит в том, что клиенты должны иметь дело с объектами как с непрозрачными компонентами в смысле того, что находится у них внутри и как они реализованы. Разработчики СОМ полагали, что для проведения этой идеи в жизнь должна быть разработана архитектура. С какой стати любой может разрабатывать систему с другой моделью для повторного использования? Хороший вопрос. Дело, однако, в том, что мир полон «объектно-ориентированных» систем, которые не только не поддерживают инкапсуляцию в стиле черного ящика, но даже затрудняют ее достижение. Классическим примером этого является C++. В первой главе своей книги Дон очень понятно объясняет то, что я подразумеваю под этим.

Следующие уравнения иллюстрируют различия между объектно-ориентированным и компонентно-ориентированным программированием.

Объектно-ориентированное программирование = полиморфизм + (немного) позднее связывание + (немного) инкапсуляции + наследование.

Компонентно-ориентированное программирование = полиморфизм + (истинно) позднее связывание + (действительная, принудительная) инкапсуляция + наследование интерфейсов + двоичное повторное использование.

Во всяком случае для меня эта дискуссия – род забавы. Борцы за чистоту OO, проживающие в comp.object и comp.object.corba, выбились из сил, тыча пальцами в СОМ и говоря: «Но он не по-настоящему объектно-ориентированный». Вы можете оспорить это двумя способами:

1. «Он-то как раз по-настоящему! Это ваше определение ОО неправильное».

2. «Ну и что!?! СОМ имеет феноменальный коммерческий успех и позволяет тысячам независимых разработчиков создавать потрясающее программное обеспечение, которое интерполирует и интегрирует. И они делают деньги. Много денег[1]. Программные компоненты, написанные ими, покупаются, используются и повторно используются. Разве не в этом смысл любой технологии? Кроме того, я всегда могу доказать, что только СОМ является истинно компонентно-ориентированным [2].

Вот так-то!

Простота ведет к податливости (malleability)

mal-le-a-ble (mal'e-e-bel) adjective (прилагательное)

1. Способный быть выкованным или сформированным, как под ударами молота или под давлением: податливый металл.

2. Легко контролируемый или поддающийся влиянию; послушный.

3. Способный подстраиваться под изменяющиеся обстоятельства, легко приспосабливаемый: гибкий ум прагматика[3].

Первое реальное применение СОМ заключалось в том, что он был взят за основу при второй попытке фирмы Microsoft создать сложную структуру документов Object Linking & Embedding 2.0 (связывание и внедрение объектов, OLE 2.0). Если вы рассмотрите всю массу возможностей для приложения СОМ в настоящее время, то сразу поймете, что я имею в виду, называя его податливым. Программисты используют СОМ для обеспечения сменной (plug-in) архитектуры для своих приложений; для конструирования крупномасштабных многоярусных клиент/серверных приложений; для ведения дел и заключения сделок в мире бизнеса; для создания развлекательных сюжетов на Web-страницах; для контроля и мониторинга производственных процессов и даже для выслеживания спутников-шпионов путем дистанционного управления целой армией телескопов.

Эта податливость достигнута благодаря тому, что разработчики СОМ поставили во главу угла принцип: ядро модели будет настолько простым, насколько это необходимо, но не более. Одной из наиболее явных сторон этого подхода является нудность программирования на СОМ на сегодняшний день. Программисты, работающие на С или C++, должны возиться со всей этой ерундой, в том числе с GUID и со счетчиками ссылок. Можно было бы добавить к СОМ всякого рода усовершенствования с целью упрощения работы с ней. Но разработчики вместо этого акцентировали внимание на том, чтобы заставить модель работать. Они считали, что если они достигнут успеха, то сервисную поддержку можно будет обеспечить позднее. И это предположение было подтверждено недавними выпусками простых в употреблении инструментов СОМ, таких как Visual Basic, поддержка СОМ в Visual C++ 5.0, а также Active Template Library. К тому времени, когда вы читаете этот текст, фирма Microsoft должна уже объявить о своих будущих планах радикально упростить разработку СОМ с помощью внедрения общего времени выполнения (runtime), которое будет доступно для всего инструментария: СОМ+.

Фольклор
Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

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

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT