Индустрия программирования


3. Стандартная библиотека Си++: принципы построения - часть 3


и типовых решений, позволяющих достаточно легко построить набор конкретных классов и
функций для некоторой прикладной области.

Практически каждая компонента Библиотеки существенно использует возможности,
предоставляемые другими компонентами, за счет чего достигается максимальная гибкость,
общность и эффективность. В качестве примера можно привести следующую схему, отражающую
взаимодействие компонент библиотеки, используемых при реализации ввода/вывода. Здесь связь
вида Компонента1-->Компонента2 отражает тот факт, что для построения второй компоненты
привлекаются понятия из первой компоненты.
alt="Структура">

Классическое объектно-ориентированное программирование использует единственный базовый
механизм - механизм наследования с последовательным увеличением детализации при переходе от
класса родителя к классу потомку. В случае Стандартной библиотеки Си++ активное
использование шаблонных структур - шаблонных алгоритмов и шаблонных иерархий классов
позволяет библиотеке, с одной стороны, сохранять высокий уровень абстрактизации, а с другой -
предоставлять разработчику реально действующий код. Кроме того, исходное построение
библиотеки в виде совокупности четко выделенных блоков не только позволяет достичь простоты
и единообразности интерфейсов, но дает пользователю большую широту в выборе способов их
взаимодействия.

Заметим, что идея создания библиотек повторно используемых программных компонент реально
не столь нова, как кажется на первый взгляд. Еще в 1976 году МакИлрой в своей статье (McIlroy
"Mass-Produced Software Components") аргументировал необходимость повторного использования
программного обеспечения, в том числе стандартизации и абстрактизации наиболее часто
используемых алгоритмов и структур данных, и, по всей видимости, единственным ограничением к
созданию подобного рода библиотек являлось отсутствие развитых средств абстрактизации у
большинства распространенных к тому времени языков программирования.

Подходя к проблеме эффективности библиотеки заметим, что абстрактизация компонент



- Начало -  - Назад -  - Вперед -