Определения ООП Flashcards
Что такое абстракция?
Отделение концепции от ее экземпляра. Процесс выделения общих характеристик и функциональности объектов или системы, игнорируя детали реализации.
Что такое полиморфизм?
Это механизм, который позволяет объектам одного и того же класса проявлять разные формы поведения в зависимости от контекста их использования.
Что такое наследование?
Способность объекта или класса базироваться на другом объекте или классе. Это процесс, благодаря которому один объект может приобретать свойства другого
Что такое инкапсуляция?
Механизм сокрытия деталей реализации класса от других объектов
Что такое абстрактная функция? (или «чистая виртуальная функция»)
Это функция без определения, которую преопределяют дочерние коассы
Что такое дружественные функции?
Функции, которые не являются членами класса, однако имеют доступ к его закрытым членам — переменным и функциям, которые имеют спецификатор private
Что такое структура?
Группа связанных переменных.
Пользовательский тип данных, который позволяет объединить несколько переменных различных типов в одну единицу.
Производный тип данных, который представляет определенную сущность, так же как и класс.
Пример описания структуры:
struct Person {
char name[20];
int age;
float height;
};
Как называются переменные, составляющие структуру?
Члены, элементы, поля
Что такое член структуры?
Переменная, которая является частью структуры
Что является спецефикатором типа структуры?
Ее имя
Что такое объединение?
Это объект, позволяющий нескольким переменным различных типов занимать один участок памяти.
union union_type {
int i; char ch;
};
Как и для структур, можно объявить переменную, поместив ее имя в конце определения или используя отдельный оператор объявления. Для объявления переменной cnvt объединения union_type следует написать:
union union_type cnvt;
В cnvt как целое число i, так и символ ch занимают один участок памяти. Можно обратиться к данным, сохраненным в cnvt, как к целому числу, так и к символу.
Когда объявлено объединение, компилятор автоматически создает переменную достаточного размера для хранения наибольшей переменной, присутствующей в объединении.
Что такое перечисление?
Набор именованных целочисленных констант, определяющий все допустимые значения, которые может принимать переменная.
Как имя перечисления - ярлык, так и список переменных необязательны, но один из них должен присутствовать. Список перечислений - это разделенный запятыми список идентификаторов.
enum coin { penny, nickel, dime, quarter, half_dollar, dollar };
enum coin money;
В перечислениях каждому символу ставится в соответствие целочисленное значение и поэтому перечисления могут использоваться в любых целочисленных выражениях. Например:
printf(“The value of quarter is %d “, quarter);
Если явно не проводить инициализацию, значение первого символа перечисления будет 0, второго - 1 и так далее. Следовательно:
printf(“%d %d”, penny, dime); #выводит 0 2 на экран.
Можно определить значения одного или нескольких символов, используя инициализатор. Это делается путем помещения за символом знака равенства и целочисленного значения. При использовании инициализатора, символы, следующие за инициализационным значением, получают значение больше чем указанное перед этим. Например, в следующем объявлении quarter получает значение 100.
enum coin ( penny, nickel, dime, quarter=100, half_dollar, dollar);
Теперь символы получат следующие значения:
penny 0
nickel 1
dime 2
quarter 100
Half dollar 101
dollar 102
Как объявить определение?
С помощью ключевого слова union
Что такое множество?
Множество — коллекция уникальных элементов без определенного порядка.
Что такое мультимножество?
Коллекция уникальных элементов, которые могут повторяться
Какие особенности множества?
- Уникальность элементов: каждый элемент в множестве может встречаться только один раз.
- Отсутствие порядка: элементы в множестве не упорядочены и не имеют определенного порядка.
- Быстрый поиск: множество использует структуру данных, которая обеспечивает быстрый поиск элементов.
Какие особенности мультимножества?
- Допускается повторение элементов: каждый элемент может встречаться несколько раз.
- Отсутствие порядка: элементы в мультимножестве не упорядочены и не имеют определенного порядка.
- Быстрый поиск: мультимножество также использует структуру данных, которая обеспечивает быстрый поиск элементов.
Что такое ООП?
Объектно-ориентированное программирование (ООП) — это подход, при котором программа рассматривается как набор объектов, взаимодействующих друг с другом. У каждого есть свойства и поведение.
Классы и объекты - основные элементы ООП, которые позволяют описывать структуру и поведение объектов в программе.
Что такое класс?
Шаблон для создания объектов, обеспечивающий начальные значения состояний: инициализация полей-переменных и реализация поведения функций или методов.
Классы в С++ — это абстрактный тип данных, описывающий методы, свойства ещё не существующих объектов.
Что такое свойства классов?
Любые данные, которыми можно характеризовать объект класса.
Что такое объекты класса?
Объекты — конкретное представление абстракции, имеющее свои свойства и методы.
Что такое конструктор и деструктор?
Конструктор - специальный блок инструкций, вызываемый при создании объекта.
Деструктор - то специальный тип метода класса, который выполняется при удалении объекта класса.
Что такое динамические структуры данных?
Это структуры данных, память под которые выделяется и освобождается по мере необходимости. Они часто используются для эффективного хранения и обработки больших объемов данных.
Какие существуют динамические структуры данных?
Структуры данных:
1) Стек;
2) Очередь;
3) Линейный односвязный список;
4) Линейный упорядоченный список (словарь);
5) хеш-таблица;
6) дерево;
7) граф.
Другие списковые структуры:
- двусвязный список;
- дек;
- кольцо.
Что такое стек?
Стек – односвязный список, организованный по принципу «последний пришел, первым вышел». Характерные операции со стеком: поместить элемент на вершину стека (Push), взять элемент с вершины стека для использования, взять элемент с вершины с удалением ее из стека (Pop), удаление всех элементов.
Что такое односвязный список?
Односвязный список — это структура данных, состоящая из элементов одного типа, связанных между собой последовательно посредством указателей. Каждый элемент списка имеет указатель на следующий элемент. Последний элемент списка указывает на NULL.
Реализация узла:
struct Node {
string val;
Node* next;
Node(string _val) : val(_val), next(nullptr){}
};
Что такое двусвязный список?
Двусвязный список - это структура данных, которая состоит из узлов, которые хранят полезные данные, указатели на предыдущий узел и следующий узел. В случае, когда в списке нет элементов, оба они равны нулю. Если в списке один элемент, то оба указателя ссылаются на один и тот же элемент (соответственное, они равны).
#include <list>
std::list<int> numbers{ 1, 2, 3, 4, 5 };
ИЛИ
struct list {
int field; // поле данных
struct list *next; // указатель на следующий элемент
struct list *prev; // указатель на предыдущий элемент
};</int></list>
Что такое очередь?
Очередь — это структура данных, которая построена по принципу FILO (last in — last out: первым пришел — последним вышел). В C++ уже есть готовый STL контейнер — queue.
#include < queue>
queue <тип> <имя>;</имя></тип>
Что такое двоичное дерево? Что такое балансировка двоичного дерева?
Двоичное дерево – это структура данных, которая состоит из вершин, каждая из которых имеет максимум двух потомков. Первый потомок является левым, а второй - правым. Это свойство позволяет программистам выполнять операции с данными в упорядоченном порядке.
Двоичное дерево – это структура данных, которая состоит из узлов, каждый из которых имеет возможность иметь не более двух потомков. Каждый узел содержит ключ и с помощью ключей узлы нумеруются и располагаются в дереве.
Балансировка двоичного дерева – это процесс перестройки дерева с целью сохранения баланса и оптимальной возможности доступа к элементам в непосредственной близости друг от друга. Несбалансированное двоичное дерево может привести к неэффективной работе алгоритмов, основанных на дереве, и к деградации производительности системы.
Что такое кольцо?
Кольцо – это структура данных, которая является разновидностью связного списка, в котором последний элемент указывает на первый элемент, образуя цикл. Оно имеет множество приложений, где требуется хранение и обработка группы объектов в течение времени.
Хэш-таблица
Хэш-таблица – структура данных, которая сопоставляется ключи со значениями и использует хэш-функцию для вычисления индексов ключа.
Хэш-таблица – это контейнер, который используют для быстрого выполнения удаления/вставки/нахождения.