Объектная модель

Вполне согласен с Емельяновым Алексеем.
Конечно же Windows имеет внутренние объекты, но не как классы, а как объекты
предметной области - объекты Операционной Системы Windows, которые - суть
есть некоторая область в памяти компьютера, хранящая состояние объекта и
идентифицируемая дескриптором (манипулятором).Хотя манипуляторы обеспечивают
почти идеальную абстракцию, защиту и маскировку информации, они также
причиняют немало хлопот программистам. Поскольку Win32 API ориентируется на
применение манипуляторов, Microsoft не документирует внутреннее
представление объектов и не описывает операции с ними. Никаких эталонных
реализаций. В распоряжении программиста только прототипы функций,
документация Microsoft и книги, материал которых в большей или меньшей
степени основан на документации Microsoft.
Первая категория проблем, с которыми сталкиваются программисты, связана
с системными ресурсами. Никто не знает, какие ресурсы затрачиваются при
создании объекта и получении его манипулятора, поскольку внутреннее
представление объекта неизвестно. Как действовать программисту -- хранить и
заново использовать объект или же удалить его при первой возможности? В GDI
под держиваются три типа растров -- какой тип следует выбрать, чтобы
сократить
затраты системных ресурсов?
Главным ресурсом компьютера является процессорное время.
Маскировка внутреннего представления от программиста затрудняет оценку
сложности выполнения некоторых операций при проектировании сложных
алгоритмов. Допустим, вы строите сложный регион средствами GDI; какую
сложность имеет ваш алгоритм -- линейную, квадратичную, кубическую?
Полная маскировка реализации также усложняет отладку. Если после 5 минут
работы ваша программа начинает <<гнать мусор>>, вероятно, где-то происходит
утечка ресурсов, но где именно и как ее исправить?
Похоже, <<идеальная>> абстракция API не так уж и идеальна.
К тому-же Microsoft так же не открывает недокументированные возможности
Windows, например, интерфейс Native API и т. д..
Причина в том, что, очевидно, Microsoft не заинтересована в адекватном
информировании других фирм разработчиков ПО, поскольку другие фирмы являются
их конкурентами.
Возможно я не прав. :)
Здравствуйте, Виктор!
Нет, таким образом они оставляют для себя возможность _безболезненно_
изменять
эти функции/интерфейсы/объекты и т.п.
Наверное каждый программист сталкивался с "приятной" особенностью файловых
функций Windows, которые в случае неудачи возвращают INVALID_HANDLE_VALUE, а
не NULL (практически являющийся стандартом де-факто в таких случаях).
Даже если в Microsoft захотят исправить эту особенность, они не смогут этого
сделать, потому что придется переписывать _все_ программы, работающие с
файлами...
And remember - respect is everything.
AleX