Научная статья на тему 'Объектно-ориентированное программирование. Общие возможности контейнеров с++'

Объектно-ориентированное программирование. Общие возможности контейнеров с++ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
144
38
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Объектно-ориентированное программирование. Общие возможности контейнеров с++»

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ. ОБЩИЕ ВОЗМОЖНОСТИ КОНТЕЙНЕРОВ С++ Зарипов Н.Н.

Зарипов Нозим Наимович — преподаватель, кафедра информационных технологий, физико-математический факультет, Бухарский государственный университет, г. Бухара, Республика Узбекистан

Современное программирование уже давно превратилось в объектно-ориентированное программирование, которое позволяет программистам оптимизировать программу для абстрактных объектов с похожим алгоритмом работы [2, 2 с.]. ООП позволяет программисту структурировать программу (при этом нужно уметь объектно мыслить). Как известно ООП обладает тремя свойствами, которые делают программу легко модифицируемой. К этим свойствам относятся: инкапсуляция, наследование и полиформизм.

Инкапсуляция — свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. Некоторые языки (например, С++) отождествляют инкапсуляцию с сокрытием, но большинство (Smalltalk, Eiffel, OCaml) различают эти понятия.

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

Полиморфизм — свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Ещё одно понятие в программировании - это контейнеры. Контейнер в программировании — тип, позволяющий инкапсулировать в себе объекты других типов. Контейнеры, в отличие от коллекций, реализуют конкретную структуру данных.

Среди «широких масс» программистов наиболее известны контейнеры, построенные на основе шаблонов, однако существуют и реализации в виде библиотек (наиболее широко известна библиотека GLib). Кроме того, применяются и узкоспециализированные решения. Примерами контейнеров в C++ являются контейнеры из стандартной библиотеки шаблонов (Standard Template Library, STL) — map, vector и др. В контейнерах часто встречается реализация алгоритмов для них.

Стандартная библиотека C++ также содержит ряд специализированных контейнерных классов — это так называемые контейнерные адаптеры (стек, очередь, приоритетная очередь), битовые поля и массивы значений. Все эти контейнеры обладают специальным интерфейсом, не соответствующим общим требованиям к контейнерам STL.

Ниже сформулированы общие возможности всех контейнерных классов STL. В большинстве случаев речь идет о требованиях, которые должны выполняться всеми контейнерами STL. Ниже перечислены три основных требования [1, 160 c.]

• Контейнеры должны поддерживать семантику значений вместо ссылочной семантики. При вставке элемента контейнер создает его внутреннюю копию, вместо того чтобы сохранять ссылку на внешний объект. Следовательно, элементы контейнера STL должны поддерживать копирование. Если объект, который требуется сохранить в контейнере, не имеет открытого копирующего конструктора или копирование объекта нежелательно (например, если оно занимает слишком много времени или элементы должны принадлежать сразу нескольким контейнерам), в контейнер заносится указатель или объект указателя, ссылающийся на этот объект.

• Элементы в контейнере располагаются в определенном порядке. Это означает, что при повторном переборе с применением итератора порядок перебора элементов должен остаться прежним. В каждом типе контейнера определены операции, возвращающие итераторы для перебора элементов. Итераторы представляют собой основной интерфейс для работы алгоритмов STL.

• В общем случае операции с элементами контейнеров небезопасны. Вызывающая сторона должна проследить за тем, чтобы параметры операции соответствовали требованиям, Нарушение правил (например, использование недействительного индекса) приводит к непредсказуемым последствиям. Обычно STL не генерирует исключений в своем коде. Но если исключение генерируется пользовательскими операциями, вызываемыми контейнером STL, ситуация меняется.

Итак, мы дали краткое понятие ООП, описание контейнеров STL C++, а также описание шаблонов контейнеров. Для тех желает заниматься серьёзным программированием, эти понятия просто необходимы, иначе не может быть речи об объектно-ориентированном программировании.

Список литературы

1. С++Стандартная библиотека. Для профессионалов / Н. Джосьютис. СП. Питер, 2004. 730 с.

2. Атаева Г.И., Турдиева Г.С. Общие проблемы мировой науки // Наука образование и культура. № 3(27), 2018. С. 68-70.

i Надоели баннеры? Вы всегда можете отключить рекламу.