Какое из утверждений верно?

Класс — это шаблон, определяющий состояние и поведение объектов, объект — это экземпляр класса
Объект — это функция, класс — это значение, возвращаемое этой функцией
Объект — это шаблон, определяющий состояние и поведение классов, класс — это экземпляр объекта
Класс — это имя переменной, объект — это значение, которое присваивается этой переменной
Класс — это функция, объект — это значение, возвращаемое этой функцией

Что из перечисленного — пример классического антипаттерна в ООП?

Использование большого количества вложенных циклов в коде
Использование условных операторов с множественным ветвлением
Использование индексации массива за пределами его диапазона
Использование класса с чрезмерно большим количеством методов, имеющих разное предназначение
Использование чрезмерно длинных имен методов в классах

Какое из утверждений верно?

Абстракция — это конкретный механизм реализации принципа инкапсуляции
Принцип абстракции относится к объектно-ориентированному программированию, а инкапсуляции — к процедурному
Переопределение метода — это прием реализации инкапсуляции, а виртуальные методы — прием реализации абстракции
Абстракция может достигаться путем использования интерфейсов, а инкапсуляция — за счет модификаторов доступа
Абстракция и инкапсуляция — это синонимичные понятия

Что из перечисленного — пример реализации статического полиморфизма?

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

В каком из перечисленных случаев соблюден принцип единственной ответственности?

Класс OrderStatusControl содержит методы для управления статусом заказа
Класс PaymentDelivery содержит методы для работы с оплатой и доставкой заказа
Класс Order содержит методы для работы с оплатой, доставкой и управлением статусом заказа
Класс Order содержит основной метод для работы с доставкой заказа и дополнительные методы — для управления статусом заказа
Класс Payment содержит методы для работы с оплатой заказа, а класс DeliveryOrderStatusControl — для работы с доставкой и управлением статусом заказа

В каком случае НЕ выполняется блок finally при обработке исключений?

Если возникло исключение в блоке try, но оно не было обработано
Если исключение не возникло
Если возникло исключение в блоке try, и оно было обработано
Если программа была принудительно завершена
Если возникло исключение в блоке catch

Вы хотите обеспечить доступность полей и методов класса из самого класса, из производного класса, но не из любого места программы. Какой из модификаторов доступа вы будете использовать?

Только public
Protected или private
Можно использовать любой модификатор
Только protected
Только private

Вы разрабатываете систему для управления грузоперевозками. У вас есть базовый класс Transport, от которого наследуются классы Truck и Ship. В классе Transport есть метод calculateCost(), который рассчитывает стоимость доставки.
При использовании этого метода в классе Ship возникает ошибка, и программа перестает работать. Какой принцип ООП мог быть нарушен при разработке этой системы?

Принцип открытости/закрытости
Принцип подстановки Барбары Лисков
Принцип единственной ответственности
Принцип инверсии зависимостей
Принцип разделения интерфейса

В какой из ситуаций корректно применить абстрактные классы, а не интерфейсы?

Когда необходимо уменьшить связанность кода
Когда нужно создать разноплановые по состоянию классы, но с общим действием (методом)
Когда нужно использовать множественное наследование
Когда необходимо хранить общее состояние классов-наследников
Во всех перечисленных выше случаях

У вас есть иерархия классов для работы с фигурами: базовый класс Figure и два его дочерних класса, Rectangle и Circle. Класс Rectangle имеет дополнительный метод get_area(), который возвращает площадь прямоугольника.
В языках со строгой типизацией, каким образом можно использовать приведение типов для получения площади прямоугольника, используя метод get_area()?

Привести объект класса Rectangle к типу Figure и вызвать метод get_area() на объекте класса Figure
Приведение типов в данном случае невозможно
Привести объект класса Figure к типу Rectangle и вызвать метод get_area() на объекте класса Rectangle
Создать объект класса Rectangle, передав в качестве аргумента объект класса Figure, и вызвать метод get_area() на объекте класса Rectangle
Создать объект класса Figure, передав в качестве аргумента объект класса Rectangle, и вызвать метод get_area() на объекте класса Figure

Параметрический полиморфизм осуществляется, в первую очередь, через использование

Ковариантности
Множественного наследования
Сужения класса
Обобщенных классов
Виртуальных методов

У вас есть модули, которые зависят друг от друга: если вы меняете один модуль, вы должны внести изменения в зависимые модули.
Какой термин используется для описания этой проблемы?

Проблема иерархии модулей
Проблема полиморфизма
Проблема связанности
Проблема сопряжения
Проблема модульности