В этом письме будут рассмотрены
концептуальные положения объектной технологии.
Дело в том, что многие исследователи не
только рассматривают различные положения,
но и трактовка этих положений существенно
различается. Как следствие получается
расхождение в объектных моделях и, соответственно,
в возможностях заложенных в этих моделях.
Очень часто объектную модель воплощают
в каком-то одном языке, и оценка модели
основывается на оценке возможностей предоставляемых
языком. Такая практика порочна по своему
существу. Дело в том, что одна и та же
модель может быть различно реализована
в различных языках программирования. Поэтому
более правильно обсуждать различные объектные
модели и только в рамках одинаковых моделей
сравнивать языки. Это с одной стороны.
С другой стороны, сегодня надо отходить
от универсальных языков высокого уровня,
одинаково пригодных для любого применения.
Современные системы слишком сложны и разносторонни,
чтобы их можно было эффективно создавать
с помощью какого-то одного языка. Никого
не удивляет тот факт, что создание приложений
ведётся с помощью 3GL. Работа с базами
данных из того же приложения происходит
с помощью SQL, реже с помощью QBE. Создание
интерфейса с пользователем осуществляется
на специальном языке (те, кто пишет под
Windows, могут посмотреть на структуру
RC-файлов). Наконец, межпрограммные и
межкомпьютерные коммуникации реализуются
посредством прикладного API, который тоже
представляет собой псевдоязык. Список
можно продолжить, рассматривая более специализированные
системы и/или подсистемы.
При рассмотрении объектных
моделей обычно выделяют три основных концептуальных
положения: инкапсуляция, полиморфизм и
наследование. Действительно, эти положения
являются наиболее важными для описания
основ объектной технологии, хотя их одних
недостаточно. Поэтому в этом письме будут
рассмотрены эти три положения, а следующее
письмо введёт в круг основных положений
агрегацию и следующие из неё положения:
конструирование, локализация и абстракция.
Описание концептуальных
положений важно не само по себе, а потому,
что оно создаёт представление о том, какие
возможности заложены в данную технологию,
на какие горизонты эта технология может
вывести процесс разработки программного
обеспечения. Следует отметить, что к настоящему
времени объектная технология не реализовала
тот огромный потенциал, который в ней
заложен, и связано это, прежде всего,
с тем, что концептуальные положения, лежащие
в основе этой технологии не раскрываются
полностью или трактуются ошибочно.
|