- •Вопрос 1. Диалоговые программы. Понятие дружественности.
- •Вопрос 2. Условный оператор и условная операция
- •If (выражение) оператор_1 [else оператор_2]
- •Вопрос 3. Операции отрицания и побитового дополнения.
- •Вопрос 4. Логические операции.
- •Вопрос 5. Побитовые операции
- •Вопрос 6. Изменение типа выражения
- •Вопрос 8. Операция «адрес» и косвенной адресации (разадресации)
- •Вопрос 9. Структура объявления типов. Классы памяти
- •● Static — статическая
- •● Extern — внешняя (глобальная)
- •Extern int total; // ссылка на переменную total, определённую в другом файле ● register — регистровая (локальная)
- •Вопрос 10. Классификация типов данных с размерами в памяти (в байтах).
- •Вопрос 11. Подпрограммы в языке Си. Определение функции. Возврат значений.
- •Int maximum (int X; int y; int z) – формальные параметры
- •Вопрос 12. Передача в подпрограмму массивов
- •Вопрос 13. Объявление, вызов функции и возврат значений
- •Вопрос 14. Работа с файлами
- •Где *fname – имя файла, *mode – режим
- •Вопрос 15. Вызов функций с переменным числом аргументов
- •Вопрос 16. Возврат из функции нескольких значений.
- •Вопрос 17. Структура программы и время жизни переменных, объявленных на внутреннем уровне.
- •Вопрос 18. Общая структура программы, состоящей из нескольких файлов. Локальные и глобальные переменные. Переменные, видимые в нескольких файлах.
- •Вопрос 19. Время жизни и области видимости функций и переменных, объявленных на внешнем уровне.
- •Вопрос 20. Типы, определяемые пользователем. Структуры
- •Вопрос 21. Объединения
- •Вопрос 22. Поля битов
- •Вопрос 23. Динамическая память. Резервирование, освобождение памяти в языке с
- •Оператор new
- •New type_name [(инициатор)]; или new (type_name [(инициатор)]);
- •Оператор delete
- •Вопрос 25. Связные динамические структуры. Списки. Двусвязные списки
- •Вопрос 26. Связные динамические структуры. Очередь. Односвязные списки
- •Вопрос 27. Связные динамические структуры. Кольцевые списки.
- •Вопрос 28. Связные динамические структуры. Стек.
- •Вопрос 29. Нелинейные динамические структуры. Деревья
- •Основные характеристики дерева:
- •Вопрос 30. Перегрузка функций
- •Вопрос 31. Перегрузка операторов
- •{ Операторы, определяющие действия }
- •Вопрос 32. Основные принципы объектно-ориентированного программирования.
- •Вопрос 33. Понятие класса. Инкапсуляция
- •Вопрос 34. Конструкторы и деструкторы
- •Вопрос 35. Наследование
- •Режимы доступа
- •Вопрос 36. Полиморфизм
- •Вопрос 37. Структуризация. Восходящее программирование
- •Вопрос 38. Нисходящий метод проектирования программ
- •Вопрос 39. Методы тестирования программных средств, состоящих из одного модуля
- •Вопрос 40. Спецификация программного средства
- •Вопрос 41. Межмодульное тестирование
- •Вопрос 42. Основы доказательства правильности программ
- •Вопрос 43. Жизненный цикл программы
- •Вопрос 44. Причины отказов по и повышение отказоустойчивости
- •Вопрос 45. Направления в программировании. Классификация языков программирования. Направления в программировании:
- •Вопрос 46. Критерии качества программы
- •Вопрос 47. Директивы препроцессора. Директива define, макроподстановки
- •#Define имя значение
- •Удаление определения: #undef
- •Вопрос 48. Модульное программирование. Структура программы, состоящей из нескольких файлов.
- •Вопрос 49. Гост 19.701. Виды схем, символов. Обозначения для схем алгоритмов и схем работы системы.
Вопрос 34. Конструкторы и деструкторы
Конструктор – это специальная функция, являющаяся членом класса и имеющая то же самое имя, что и класс, и выполняющая заданные в ней действия при создании объекта. У одного класса может быть несколько конструкторов.
Пример:
class queue
{
int q[1];
int sloc, rloc;
queue (void); // конструктор
int qget (void);
void qput (int);
};
Деструктор — это специальный тип метода класса, который выполняется при удалении объекта класса. В то время как конструкторы предназначены для инициализации класса, деструкторы предназначены для очистки памяти после него.
Пример:
class queue
{ int q[10];
int sloc, rloc;
publiс:
queue (void); // конструктор
~queue (void); // деструктор
int q get (void);
void qput (int);
}; // объявлен класс queue с конструктором и деструктором
queue :: queue (void)
{rloc = sloc = 0; cout<< «Очередь инициализирована \n»;
} // описание конструктора
queue :: queue (void)
{
cout<< «Очередь разрушена \n»;
} // описание деструктора, который лишь выдает сообщение.
Вопрос 35. Наследование
Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (прародителя/ суперкласс) и добавляя, при необходимости, новые свойства и методы.
Основная форма наследования:
class <имя наследующего класса>: режим доступа < наследуемый класс> ;
или
class <производный> <базовый>;
Класс, который наследуется называется базовым классом, наследующий – производным (или потомком).
Режим доступа – это одно из ключевых слов private, protected, public.
Режимы доступа
Режим доступа к элементу в базовом классе |
Режим доступа при наследовании класса |
Режим доступа к элементу в производном классе |
Private |
publuc |
Не доступен |
Protected |
Protected |
|
public |
Public |
|
Private |
protected |
Не доступен |
Protected |
Protected |
|
public |
Protected |
|
Private |
private |
Не доступен |
Protected |
Private |
|
public |
Private |
Пример:
class X // Базовый класс
{ // Приватные элементы:
int i;
int j;
public:
void get_ij(void);
void put_ij(void);
};
Вопрос 36. Полиморфизм
Полиморфизмом называют явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода.
Один из путей его реализации - это перегрузка функций. Две или более функции могут иметь одно и тоже имя, но отличаются друг от друга количеством и типом параметров.
Второй способ реализации полиморфизма - перегрузка операций. Когда перегружается знак операции, компилятор анализирует тип операндов и в зависимости от типа делает выбор.
Чтобы перегрузить операцию, нужно определить, что эта операция значит относительно класса, к которому она будет применяться. Для этого создается специальная функция операции, которая определяет действие этой операции.
Основная форма задания функции-операции, являющейся членом класса:
<тип> <имя_класса> :: operator <знак операции> (список аргументов)
{ операторы, определяющие действия }
Полиморфизм иногда характеризуется одной фразой: "Один интерфейс – много методов". Это означает, что основной класс операций может быть оформлен в одном стиле, а конкретные действия могут быть различными.
