- •Группа 1
- •Что такое класс? Что такое объект? Какая связь между классом и объектом?
- •В чем особенности вызова конструкторов базового класса из производного?
- •Ключевое слово using
- •Группа 2
- •Конструктор вызывается при создании объекта. Оператор присваивания если объект уже существует.
- •К чему может быть применено ключевое слово static? Какие эффекты оно имеет?
Группа 1
Что такое парадигма программирования? Что такое ООП?
Парадигма программирования — это набор идей и понятий, которые определяют стиль написания программ, подход к программированию.
Объектно-ориентированное программирование (императивный) — это парадигма разработки программных систем, в которой приложения состоят из объектов.
В чем заключается принцип ООП "Абстракция"?
Это свойство объектно-ориентированного программирования. Его суть заключается в том, что каждый верхний слой над объектом (класс) является более абстрактным, чем его «младшая версия». Разработчику не нужно много раз создавать один и тот же объект, приписывая одинаковые атрибуты и методы.
Абстракция - рассмотрение только значимой информации предметной области и исключение незначимой
Отображение только существенной информации
Выделение свойств и интерфейса
Единицей абстракции может быть класс или файл (не в ООП)
В чем заключается принцип ООП "Наследование"?
Он позволяет создавать иерархии классов, где один класс (подкласс) наследует свойства и методы другого класса (суперкласса). Это позволяет сокращать дублирование кода, упрощать структуру программы и создавать более логичные иерархии объектов.
Наследование - свойство системы, позволяющие описывать новый класс на основе существующего
Механизм, с помощью которого один объект полностью или частично перенимает свойства другого
Поддержка понятия иерархической классификации
Уменьшение количества дублирующего кода
В чем заключается принцип ООП "Инкапсуляция"?
Инкапсуляция — это заключение данных и функциональности в оболочку. В объектно-ориентированном программировании в роли оболочки выступают классы: они не только собирают переменные и методы в одном месте, но и защищают их от вмешательства извне (сокрытие).
Инкапсуляция - свойство системы объединение данных и методов, работающих с ними, в классе
Связь кода и данных
Защита данных от внешнего воздействия
Основа инкапсуляции - класс
Простое сокрытие данных - не инкапсуляция
В чем заключается принцип ООП "Полиморфизм"?
Полиморфизм в ООП подразумевает собой особенность, при которой одно и то же действие выполняется разными способами. Или, проще говоря, такая концепция позволяет выполнять несколько реализаций одной и той же сущности.
Так вот, полиморфизм даёт возможность использовать одни и те же методы для объектов разных классов. Неважно, как эти объекты устроены, — в ООП можно сказать самолёту и квадрокоптеру: «Лети», и они будут делать это как умеют: квадрокоптер закрутит лопастями, а самолёт начнёт разгон по взлётно-посадочной полосе.
Полиморфизм - использование объектов с общим интерфейсом без информации о внутренней структуре объекта
Реализация принципа: Один интерфейс – множество реализаций
Механизм, скрывающий за интерфейсом общий класс действий
Что такое статический полиморфизм? Приведите пример статического полиморфизма.
Статический полиморфизм: это когда решение о том, какой метод выполнить, определяется во время компиляции. Примером этого может быть перегрузка метода.
Что такое динамический полиморфизм? Приведите пример динамического полиморфизма?
Динамический полиморфизм: это когда решение о выборе метода для выполнения принимается во время выполнения.
При динамическом полиморфизме вызвать переопределеный метод можно при выполнении программы. Скопировать метод родительского класса и обозначить его в дочернем можно с помощью ссылочной переменной родительского класса, при этом вызванный метод будет определяться по объекту, на который она ссылается.
Что такое ссылка на объект? В чем отличие ссылки и указателя на объект?
Ссылка – это автоматически разыменовываемый указатель на объект (связь переменная - объект).
Указатель может быть переназначен любое количество раз, в то время как ссылка после привязки не может быть перемещена на другую ячейку памяти.
Указатели могут указывать "в никуда" (быть равными NULL), в то время как ссылка всегда указывает на определенный объект. GCC может без выдачи предупреждений обработать код наподобие int &x = *(int*)0;, однако поведение подобного кода может быть непредсказуемым.
Вы не можете получить адрес ссылки, как можете это делать с указателями.
Не существует арифметики ссылок, в то время как существует арифметика указателей. Однако есть возможность получить адрес объекта, указанного по ссылке, и применить к этому адресу арифметику указателей (например &obj + 5).
