Определения ООП Flashcards

1
Q

Что такое абстракция?

A

Отделение концепции от ее экземпляра. Процесс выделения общих характеристик и функциональности объектов или системы, игнорируя детали реализации.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое полиморфизм?

A

Это механизм, который позволяет объектам одного и того же класса проявлять разные формы поведения в зависимости от контекста их использования.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое наследование?

A

Способность объекта или класса базироваться на другом объекте или классе. Это процесс, благодаря которому один объект может приобретать свойства другого

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое инкапсуляция?

A

Механизм сокрытия деталей реализации класса от других объектов

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое абстрактная функция? (или «чистая виртуальная функция»)

A

Это функция без определения, которую преопределяют дочерние коассы

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Что такое дружественные функции?

A

Функции, которые не являются членами класса, однако имеют доступ к его закрытым членам — переменным и функциям, которые имеют спецификатор private

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое структура?

A

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

Пример описания структуры:
struct Person {
char name[20];
int age;
float height;
};

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Как называются переменные, составляющие структуру?

A

Члены, элементы, поля

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Что такое член структуры?

A

Переменная, которая является частью структуры

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что является спецефикатором типа структуры?

A

Ее имя

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое объединение?

A

Это объект, позволяющий нескольким переменным различных типов занимать один участок памяти.

union union_type {
int i; char ch;
};

Как и для структур, можно объявить переменную, поместив ее имя в конце определения или используя отдельный оператор объявления. Для объявления переменной cnvt объединения union_type следует написать:

union union_type cnvt;

В cnvt как целое число i, так и символ ch занимают один участок памяти. Можно обратиться к данным, сохраненным в cnvt, как к целому числу, так и к символу.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Что такое перечисление?

A

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

Как имя перечисления - ярлык, так и список переменных необязательны, но один из них должен присутствовать. Список перечислений - это разделенный запятыми список идентификаторов.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Как объявить определение?

A

С помощью ключевого слова union

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Что такое множество?

A

Множество — коллекция уникальных элементов без определенного порядка.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Что такое мультимножество?

A

Коллекция уникальных элементов, которые могут повторяться

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Какие особенности множества?

A
  1. Уникальность элементов: каждый элемент в множестве может встречаться только один раз.
  2. Отсутствие порядка: элементы в множестве не упорядочены и не имеют определенного порядка.
  3. Быстрый поиск: множество использует структуру данных, которая обеспечивает быстрый поиск элементов.
17
Q

Какие особенности мультимножества?

A
  1. Допускается повторение элементов: каждый элемент может встречаться несколько раз.
  2. Отсутствие порядка: элементы в мультимножестве не упорядочены и не имеют определенного порядка.
  3. Быстрый поиск: мультимножество также использует структуру данных, которая обеспечивает быстрый поиск элементов.
18
Q

Что такое ООП?

A

Объектно-ориентированное программирование (ООП) — это подход, при котором программа рассматривается как набор объектов, взаимодействующих друг с другом. У каждого есть свойства и поведение.
Классы и объекты - основные элементы ООП, которые позволяют описывать структуру и поведение объектов в программе.

19
Q

Что такое класс?

A

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

Классы в С++ — это абстрактный тип данных, описывающий методы, свойства ещё не существующих объектов.

20
Q

Что такое свойства классов?

A

Любые данные, которыми можно характеризовать объект класса.

21
Q

Что такое объекты класса?

A

Объекты — конкретное представление абстракции, имеющее свои свойства и методы.

22
Q

Что такое конструктор и деструктор?

A

Конструктор - специальный блок инструкций, вызываемый при создании объекта.
Деструктор - то специальный тип метода класса, который выполняется при удалении объекта класса.

23
Q

Что такое динамические структуры данных?

A

Это структуры данных, память под которые выделяется и освобождается по мере необходимости. Они часто используются для эффективного хранения и обработки больших объемов данных.

24
Q

Какие существуют динамические структуры данных?

A

Структуры данных:
1) Стек;
2) Очередь;
3) Линейный односвязный список;
4) Линейный упорядоченный список (словарь);
5) хеш-таблица;
6) дерево;
7) граф.
Другие списковые структуры:
- двусвязный список;
- дек;
- кольцо.

25
Q

Что такое стек?

A

Стек – односвязный список, организованный по принципу «последний пришел, первым вышел». Характерные операции со стеком: поместить элемент на вершину стека (Push), взять элемент с вершины стека для использования, взять элемент с вершины с удалением ее из стека (Pop), удаление всех элементов.

26
Q

Что такое односвязный список?

A

Односвязный список — это структура данных, состоящая из элементов одного типа, связанных между собой последовательно посредством указателей. Каждый элемент списка имеет указатель на следующий элемент. Последний элемент списка указывает на NULL.
Реализация узла:
struct Node {
string val;
Node* next;
Node(string _val) : val(_val), next(nullptr){}
};

27
Q

Что такое двусвязный список?

A

Двусвязный список - это структура данных, которая состоит из узлов, которые хранят полезные данные, указатели на предыдущий узел и следующий узел. В случае, когда в списке нет элементов, оба они равны нулю. Если в списке один элемент, то оба указателя ссылаются на один и тот же элемент (соответственное, они равны).
#include <list>
std::list<int> numbers{ 1, 2, 3, 4, 5 };
ИЛИ
struct list {
int field; // поле данных
struct list *next; // указатель на следующий элемент
struct list *prev; // указатель на предыдущий элемент
};</int></list>

28
Q

Что такое очередь?

A

Очередь — это структура данных, которая построена по принципу FILO (last in — last out: первым пришел — последним вышел). В C++ уже есть готовый STL контейнер — queue.
#include < queue>
queue <тип> <имя>;</имя></тип>

29
Q

Что такое двоичное дерево? Что такое балансировка двоичного дерева?

A

Двоичное дерево – это структура данных, которая состоит из вершин, каждая из которых имеет максимум двух потомков. Первый потомок является левым, а второй - правым. Это свойство позволяет программистам выполнять операции с данными в упорядоченном порядке.

Двоичное дерево – это структура данных, которая состоит из узлов, каждый из которых имеет возможность иметь не более двух потомков. Каждый узел содержит ключ и с помощью ключей узлы нумеруются и располагаются в дереве.

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

30
Q

Что такое кольцо?

A

Кольцо – это структура данных, которая является разновидностью связного списка, в котором последний элемент указывает на первый элемент, образуя цикл. Оно имеет множество приложений, где требуется хранение и обработка группы объектов в течение времени.

31
Q

Хэш-таблица

A

Хэш-таблица – структура данных, которая сопоставляется ключи со значениями и использует хэш-функцию для вычисления индексов ключа.
Хэш-таблица – это контейнер, который используют для быстрого выполнения удаления/вставки/нахождения.