Skip to content

Latest commit

 

History

History
64 lines (38 loc) · 5.15 KB

intermediate.md

File metadata and controls

64 lines (38 loc) · 5.15 KB

ООП — средний уровень

Содержание

  • Принципы ООП
  • Принципы SOLID
  • Паттерны проектирования

🏆 Правильных ответов: 12 из 12.

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

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

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

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

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

  • Абстракция может достигаться путем использования интерфейсов, а инкапсуляция — за счет модификаторов доступа

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

  • Когда в классе есть несколько методов, имеющих одинаковое имя, но разное число параметров одного типа

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

  • Класс OrderStatusControl содержит методы для управления статусом

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

  • Если программа была принудительно завершена

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

  • Только protected

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

  • Принцип подстановки Барбары Лисков

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

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

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

  • Привести объект класса Figure к типу Rectangle и вызвать метод get_ area() на объекте класса Rectangle

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

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

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

  • Проблема связанности