Skip to content

Latest commit

 

History

History
960 lines (689 loc) · 66.2 KB

object-oriented-programming-quiz-ua.md

File metadata and controls

960 lines (689 loc) · 66.2 KB

Об'єктно-орієнтоване програмування (ООП)

Q1. Що є прикладом динамічного зв’язування?

  • будь-який метод
  • перевантаження методу
  • перевизначення методу
  • компіляція

Q2. Для якого випадку буде доцільним використання статичного атрибута?

  • кількість людей у ​​кожному будинку в невеликому мікрорайоні
  • розмір ділянки для кожного будинку в невеликому районі
  • колір кожного будинку в маленькому районі
  • погодні умови для кожного будинку в невеликому районі

Q3. 1 Навіщо створювати абстрактний клас, якщо він не може мати жодних реальних екземплярів?

  • щоб уникнути надлишкового кодування у дітей
  • дослідити гіпотетичний клас
  • щоб запобігти використанню небажаного методу
  • щоб зарезервувати пам'ять для класу невизначеного типу

Q4. 2 Навіщо створювати абстрактний клас, якщо він не може мати жодних реальних екземплярів?

  • щоб отримати спільну поведінку в похідних класах
  • для дослідження гіпотетичного класу
  • для запобігання небажаній реалізації методу
  • для резервування пам'яті для класу невизначеного типу

Q5. Коли відбувається статичне зв’язування?

  • лише під час експорту
  • як під час компіляції, так і під час виконання
  • під час компіляції
  • під час виконання

Q6. Що є найкращою причиною для використання шаблону проектування?

  • Це призведе до коду, який буде більш розширюваним і придатним для обслуговування
  • Це дозволить отримати більш компактний продукт.
  • Це пришвидшить початкову розробку.
  • Це дозволить додати до свого резюме шаблон проєктування.

Q7. Що таке інкапсуляція?

  • визначення класів шляхом зосередження на тому, що важливо для мети
  • приховування даних і деталей реалізації в межах класу
  • зробити всі методи приватними
  • використання слів для визначення класів

Q8. Що таке відносини IS-A?

  • Це передбачає інкапсуляцію.
  • Об’єкт суперкласу має зв’язок IS-A зі своїм підкласом.
  • Це передбачає віртуальний метод.
  • Об'єкт підкласу має зв'язок IS-A зі своїм суперкласом або інтерфейсом

Q9. Вам потрібен метод з поведінкою, подібною до віртуального методу - очікується, що - він має бути перевизначений та не має тіла методу. Він просто має сигнатуру методу. Який метод слід використовувати?

  • abstract метод
  • внутрішній метод public
  • внутрішній метод
  • внутрішній метод protected

Q10. Який код створює новий об'єкт з класу Employee?

  • Employee currentEmployee = Employee.Create();
  • Employee currentEmployee = new Employee();
  • Employee currentEmployee;
  • Employee currentEmployee = Employee.New();

Q11. Який тип конструктора не може мати return?

  • за замовчуванням
  • копіювання
  • з параметрами
  • Конструктори взагалі не мають return

Q12. 1 Коли виконується конструктор?

  • коли об’єкт створюється з класу з використанням ключового слова new
  • коли клас визначено за допомогою ключового слова class
  • кожного разу, коли є посилання на об’єкт
  • коли об’єкт створюється з класу за допомогою ключового слова create

Q13. 2 Коли виконується конструктор?

  • коли об'єкт створюється з класу
  • коли клас визначено за допомогою ключового слова class
  • кожного разу, коли є посилання на об’єкт
  • коли об’єкт створюється з класу за допомогою ключового слова create

Q14. Якщо локальний клас визначено у функції, що вірно для об’єкта цього класу?

  • Об’єкт може бути доступний, оголошений і використаний локально в цій функції.
  • Об’єкт має бути оголошено всередині будь-якої іншої функції.
  • Об’єкт тимчасово доступний поза функцією.
  • Об’єкт може викликати всіх інших членів класу будь-де в програмі.

Q15. Які два блоки використовуються для обробки та перевірки помилок?

  • do та check
  • catching та trying
  • try та catch
  • do та while

Q16. Навіщо реалізовувати композицію, використовуючи ідентифікатор замість посилання?

  • Це полегшує збереження сутності.
  • усі ці відповіді
  • Це може зробити пошук сутності більш ефективним
  • Це мінімізує зчеплення.

Q17. Який вислів найкраще описує метод наслідування в ООП?

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

Q18. Який тип наслідування, якщо воно виконується безперервно, подібний до деревовидної структури?

  • багаторівневий
  • ієрархічний і множинний
  • ієрархічний
  • багаторазовий

Q19. Яке твердження вірне?

  • Конструктор параметра за замовчуванням не еквівалентний конструктору за замовчуванням
  • Конструктор за замовчуванням наслідується від батьківського класу
  • Конструктор за замовчуванням можна викликати явно
  • Конструктор за замовчуванням не може бути визначений програмістом

довідка "Конструктори можуть бути викликані явно або неявно. Метод неявного виклику конструктора також називається скороченим методом."

Q20. Що з наведеного НЕ є перевагою використання геттерів і сеттерів?

  • Геттери та сетери можуть прискорити компіляцію.
  • Геттери та сетери забезпечують інкапсуляцію поведінки.
  • Геттери та сетери забезпечують точку налагодження, коли властивість змінюється під час виконання.
  • Геттери та сетери дозволяють різні рівні доступу.

Q21. У контексті ООП, що таке асоціація?

  • Асоціація — це зв’язок, де всі об’єкти мають свій власний життєвий цикл і не мають власника.
  • Асоціація — це процес, при якому елементи моделі взаємодіють для забезпечення поведінки більш високого рівня.
  • Асоціація — це відношення "ціле/частина", де один об'єкт складається з одного або кількох інших об'єктів, кожен з яких є частиною цілого.
  • Асоціація — це зв’язок, де всі об’єкти мають свій власний життєвий цикл, але існує власність, і дочірні об'єкти не можуть належати іншому батьківському об'єкту.

Довідка

Q22. Чим User Stories відрізняються від Use Cases?

  • User Stories коротші і менш детальні.
  • User Stories точніші.
  • User Stories більш детальні і структуровані.
  • User Storise більш анекдотичні та особисті.

Q23. Який тип наслідування слід використовувати, щоб результат був гібридним?

  • Множинне
  • Будь-який тип наслідування
  • Многоступеневе
  • Ієрархічне

Пояснення:

  • Одинарне наслідування – це коли похідний клас успадковує властивості та поведінку від одного базового класу. Наприклад: Клас A → Клас B.
  • Ієрархічне наслідування – це коли кілька похідних класів створюються з одного базового класу. Наприклад: Клас A → Клас B → Клас C.
  • Множинне наслідування – це коли клас успадковується від кількох базових класів. Об'єкти, створені програмістами, матимуть об'єднані аспекти характеристик і функцій з кількох батьківських класів. Ці об'єкти дотримуються ієрархій своїх базових класів.
  • Многоступеневе наслідування – це коли похідний клас успадковується від іншого похідного класу. Ця особливість об'єднує аспекти кількох класів і дотримується їх ієрархій.
  • Гібридне наслідування – це неоднорідна функція використання множинного наслідування. Тут похідний клас створюється з комбінацій одиночного, ієрархічного та многоступеневого наслідувань. Це наслідування використовується для змішування різних типів наслідування, наприклад, коли одиночне наслідування змішується з множинним наслідуванням або ситуація, коли множинне наслідування змішується в межах однієї програми.

Довідка

Q24. Мова, яка не підтримує поліморфізм, але підтримує класи, вважається якою?

  • об'єктно-орієнтованою мовою
  • мовою, основаною на класах
  • мовою, орієнтованою на процедури
  • якщо класи підтримуються, поліморфізм також буде підтримуватися

Довідка

Q25. Два класи поєднують private атрибути і надають public методи для доступу та маніпулювання цими даними. Де використовується абстракція?

  • Абстракція використовує private специфікатор доступу для атрибутів.
  • Абстракція використовує public методи для доступу та маніпулювання атрибутами.
  • Абстракція використовує концепцію класу з обома, і атрибутами, і методами.
  • Недостатньо інформації для визначення, де використовується абстракція.

Пояснення:

Абстракція в об'єктно-орієнтованому програмуванні означає приховування внутрішніх деталей реалізації і надання тільки необхідного інтерфейсу для взаємодії з об'єктом. В цьому випадку, публічні методи, які забезпечують доступ до приватних атрибутів, є прикладом абстракції, оскільки користувачі класу взаємодіють з даними через ці функції, не маючи доступу до деталей реалізації даних.

Q26. Які п'ять патернів створення з книги "Банда чотирьох(Gang of Four)"?

  • Observer, State, Strategy, Template Method і Visitor.
  • Composite, Visitor, State, Prototype і Singleton.
  • Composite, Builder, Factory Method, Prototype і Singleton.
  • Abstract Factory, Builder, Factory Method, Prototype і Singleton.

Q27. У багаторівневому наслідуванні один клас наслідує скільки класів?

  • лише один клас
  • два класи
  • стільки класів, скільки потрібно
  • принаймні два класи

Q28. Якщо об'єкт передається за посиланням, зміни, зроблені у функції, розповсюджуються _

  • на основний об'єкт викликаючої функції
  • на об'єкт викликаючої функції та на об'єкт викликаної функції
  • на копії об'єкта, яка створюється під час передачі
  • лише в локальному контексті викликаної функції

Q29. Що таке метод?

  • набір інструкцій, призначений для виконання операції що часто використовується в програмі і не повертає значень
  • те саме, що функція та підпрограма
  • набір змінних, які можуть змінюватися з часом
  • функції, прив'язані до конкретних класів (або екземплярів) у об'єктно-орієнтованому програмуванні

Q30. Мобільний телефон складається з компонентів, таких як материнська плата, камера і датчики. Материнська плата представляє всі функції телефону, дисплей показує лише зображення, а телефон представлений як єдине ціле. Який з наведених компонентів має найвищий рівень абстракції?

  • камера
  • дисплей
  • материнська плата
  • мобільний телефон

Q31. Який клас має найвищий рівень абстракції у відносинах багаторівневого наслідування з п'ятьма рівнями?

  • клас на третьому рівні
  • клас на першому рівні
  • Всі мають однаковий рівень абстракції.
  • клас на другому рівні

Q32. Який з наступних варіантів НЕ є базовим типом наслідування?

  • багаторівневе наслідування
  • подвійне наслідування
  • одиночне наслідування
  • ієрархічне наслідування

Q33. Чому дублювання коду є таким підступним?

  • Дублювання використовує зайвий простір.
  • Потрібно підтримувати всі дублікати.
  • Дублювання може викликати занепокоєння щодо інтелектуальної власності.
  • Дублювання легко приховати.

Q34. Коли і як часто викликається статичний конструктор?

  • Він викликається спочатку, коли створюється об'єкт, і викликається з кожним новим екземпляром об'єкта.
  • Він викликається, коли об'єкт знищується, і тільки один раз.
  • Він викликається спочатку, коли створюється об'єкт, і тільки один раз.
  • Він створюється в момент, коли об'єкт відкидається.

Q35. Що демонструє наведених нижче код і чому?

   static void Multiply(int num1, int num2) {};
   static void Multiply(double num1, double num2, double num3) {};
   static void Multiply(float num1, float num2) {};
  • поліморфізм, тому що кожен метод може виконувати різне завдання
  • перевизначення методу, тому що відображає однакову назву методу, різні або однакові параметри і той же тип поверненняtype
  • перевантаження методу, тому що дозволяє створювати кілька методів з однією назвою, які відрізняються типом параметрів
  • перевизначення методу, тому що відображає однакову назву методу, різні параметри і той же тип повернення

Q36. Яка мета використання статичного конструктора?

  • для ініціалізації всіх членів зі статичним значенням
  • для видалення статичних членів, коли вони не потрібні
  • для ініціалізації статичних членів класу
  • для очищення всіх ініціалізованих значень статичних членів

Q37. Що таке картки CRC?

  • Code Responsibility Collection картки - це інструмент для мозкового штурму, що використовується в проектуванні процедурного програмного забезпечення.
  • Class Responsibility collaboration картки — це інструмент для мозкового штурму, що використовується в проектуванні об'єктно-орієнтованого програмного забезпечення.
  • Code Responsibility Correction картки — це інструменти для відлагодження.
  • Code Responsibility Correction картки — це інструменти для моделювання.

Довідка

Q38. Чим вміст композиції відрізняється від вмісту агрегації?

  • Якщо один елемент агрегації звільняється, всі його елементи стають придатними для збору сміття.
  • Якщо композиція знищується, вміст також знищується.
  • Вміст композиції - це всі брати та сестри.
  • Агрегація містить лише абстрактні класи.

Q39. Яке з наступних тверджень про композиції та агрегації є правильним?

  • Якщо один елемент агрегації звільняється, всі його елементи стають придатними для збору сміття.
  • Якщо композиція знищується, вміст також знищується.
  • Вміст композиції є всіма братами і сестрами.
  • Агрегація містить лише абстрактні класи.

Q40. Який результат використання більшого рівня абстракції?

  • Може підвищити вразливість коду.
  • Може зробити код небезпечнішим.
  • Може знизити читаність коду.
  • Може бути безпечнішим для кодування.

Q41. Що є неправильним щодо член-функцій класу?

  • Член-функції можуть бути визначені тільки всередині або поза тілом класу.
  • Член-функції можуть бути оголошені друзями іншого класу.
  • Член-функції не потрібно оголошувати всередині визначення класу.
  • Усі член-функції повинні бути визначені.

Q42. Чому при створенні нового класу використовується наслідування?

  • щоб захистити атрибути від небажаних змін
  • щоб ефективніше делегувати відповідальність
  • щоб заощаджувати пам'ять
  • щоб розділити поведінку класу від загальнішого до більш специфічного

Q43. Окрім атрибутів і поведінки, яку якість повинен мати клас?

  • назву
  • стан
  • колір
  • об'єкт

Q44. Який тип функції серед наведених демонструє поліморфізм?

  • вбудована функція
  • невизначена функція
  • віртуальна функція
  • функція-член класу

Q45. Які слова з наведеного списку є кандидатами на об'єкти: trumpet, clean, enrage, leaf, tree, collapse, active, і lively?

  • leaf і tree
  • clean, enrage і collapse
  • clean, active і lively
  • leaf, tree і trumpet

Q46. Що найкраще описує те, що робить об'єктно-орієнтоване програмування?

  • Воно фокусується на об'єктах, які взаємодіють один з одним.
  • Воно потрібне виключно для інтерфейсів.
  • Воно потрібне виключно для класів.
  • Воно створює один клас для всієї бізнес-логіки.

Q47. Чи можуть абстрактні класи використовуватися в багаторівневому наслідуванні?

  • Ні, абстрактні класи можуть використовуватися тільки в одно-рівневому наслідуванні, оскільки їх потрібно реалізувати негайно.
  • Так, завжди
  • Так, але тільки з одним абстрактним класом
  • Ні, абстрактні класи не мають конструкторів.

Q48. Який тип наслідування може призвести до проблеми діаманта?

  • одно-рівневе
  • багаторівневе
  • ієрархічне
  • множинне

Q49. Який взаємозв'язок між абстракцією та інкапсуляцією?

  • Абстракція полягає у приховуванні непотрібних деталей і показі тільки суттєвої інформації, тоді як інкапсуляція дозволяє програмісту реалізувати бажаний рівень абстракції.
  • Абстракція та інкапсуляція по суті одне і те саме.
  • Абстракція та інкапсуляція не пов'язані.
  • Інкапсуляція полягає у виведенні наявної інформації, тоді як абстракція дозволяє програмісту реалізувати бажаний рівень інкапсуляції.

Q50. Які з цих ключових слів є специфікаторами доступу?

  • abstract та public
  • public та private
  • this та final
  • final та abstract

Q51. Що таке посилання на об'єкт?

  • Це адреса лише змінної — не методу об'єкта.
  • Це поверхневий покажчик, що містить адресу об'єкта.
  • Це фізична адреса об'єкта.
  • Це адреса, де зберігаються змінні та методи об'єкта.

Q52. Чому модульне тестування є складнішим в ООП порівняно з функціональним програмуванням?

  • Об'єкти можуть підтримувати внутрішній стан, який не є легко доступним для тестів.
  • Якість фреймворків для модульного тестування функціональних мов є кращою.
  • ООП сприяє повторному використанню коду, що означає, що ваші тести повинні враховувати більше випадків використання.
  • Об'єктно-орієнтовані мови часто залежать від фреймворків, таких як Spring або Hibernate, що ускладнює їх тестування.

Q53. Яка функція діаграми випадків використання?

  • Вона з'єднує учасників з випадками використання.
  • Вона пов'язує учасників з ролями, які вони виконують у всіх випадках використання.
  • Вона перераховує всіх учасників для кожного випадку використання.
  • Вона зменшує кількість учасників, які необхідні.

Q54. Чим відрізняються поведінка об'єкта та атрибути?

  • Поведінка описує динамічні властивості; атрибути є статичними.
  • Атрибути описують стан; поведінка описує зміну.
  • Атрибути застосовуються тільки до конкретного об'єкта; поведінка застосовується до інших зв'язаних об'єктів.
  • Поведінка є векторними величинами; атрибути є скалярними величинами.

Q55. Принцип відкритості/закритості стверджує, що класи повинні бути відкритими для _ але закритими для _

  • модифікації; дублювання
  • рефакторингу; дублювання
  • розширення; модифікації
  • повторного використання; інкапсуляції

Q56. Чому можливо перевизначити метод базового класу?

  • щоб визначити метод, який має бути реалізований у похідному класі
  • щоб визначити власну реалізацію успадкованого члена
  • щоб визначити метод, який має бути реалізований тільки в суперкласі
  • щоб визначити клас, який може бути успадкований

Q57. Що таке конструктор копіювання?

  • Це унікальний конструктор для створення нового об'єкта як копії вже існуючого. Можливий лише один конструктор копіювання, який може бути визначений користувачем або системою.
  • Це конструктор, який дублює себе на вимогу.
  • Це загальний конструктор для запобігання створенню нового об'єкта як копії вже існуючого. Можливі кілька стандартних конструкторів, які можуть бути визначені користувачем або системою.
  • Це конструктор, який дублює себе самостійно, базуючись на доступній пам'яті.

Q58. Який вираз найбільш точно описує блок catch?

  • Блок catch, який буде виконано, це той, що найкраще відповідає типу винятку, що виник.
  • Кілька блоків catch ніколи не можуть бути асоційовані з одним блоком try.
  • Кілька блоків catch є обов'язковими для кожного блоку try.
  • У випадку винятку всі блоки catch будуть виконані.

Q59. Є п'ять класів. Клас E успадковується від класу D, D від C, C від B, і B від A. Які конструктори класів будуть викликані першими, якщо створюється об'єкт класу E або D?

  • A
  • B
  • C
  • C і B

Q60. У вас є модулі, що залежать один від одного. Якщо ви змінюєте один модуль, потрібно внести зміни у залежні. Який термін використовується для опису цієї проблеми, і яке можливе рішення?

  • Зв'язність. Рішенням є показати, що кожен модуль має певні обов'язки, і використовувати антизалежний шаблон проектування.
  • Інкапсуляція. Рішенням є впровадження одного з принципів SOLID для забезпечення того, щоб модулі не інкапсулювали один в одного.
  • Залежність. Рішенням є рефакторинг коду для досягнення слабкої зв'язності за допомогою інверсії контролю та впровадження залежностей.
  • Залежність. Рішенням є впровадження поліморфізму та абстракції для зміни та вилучення залежних елементів модуля так, щоб він функціонував самостійно.

Q61. _ описує агрегацію

  • Клас ресурсів
  • Група методів
  • Колекція об'єктів
  • Список дітей

Q62. Який тип функції можна використовувати для поліморфізму?

  • virtual function
  • inline function
  • undefined function
  • private function

Q63. Яка перевага використання впровадження залежностей?

  • слабка зв'язність
  • повторне використання коду
  • ліниве ініціалізування
  • абстракція даних

Q64. Чи потрібно повертати об'єкт, якщо він був переданий за посиланням у функцію, і чому або чому ні?

  • Так, викликаюча функція повинна відобразити зміни.
  • Ні, натомість потрібно використовувати глобальну змінну.
  • Ні, зміни будуть автоматично відображені у викликаючій функції.
  • Так, об'єкт повинен бути таким же у викликаючій функції.

Q65. Чому потрібне наслідування?

  • ...

Q66. Який найкращий приклад відношення суперкласу і підкласу?

  • автомобіль:тойота
  • качки:ставок
  • пальці:ноги
  • скала:камінь

Q67. Які твердження найкраще описують шаблони проектування Gang of Four(Банди чотирьох) під назвою Memento та Observer?

  • Memento повідомляє кілька класів про зміни. Observer захоплює та відновлює внутрішній стан об'єкта.
  • Memento відтерміновує точні кроки алгоритму для підкласу. Observer визначає нову операцію для класу без змін.
  • Memento змінює поведінку об'єкта, коли його стан змінюється. Observer інкапсулює алгоритм всередині класу.
  • Memento захоплює та відновлює внутрішній стан об'єкта. Observer повідомляє кілька класів про зміни.

Q68. Що вказує значення (0.5,0.5,0.5) у специфікації класової діаграми position: Coordinate = (0.5,0.5,0.5)?

  • типове значення атрибута Coordinate
  • розмір масиву position
  • збільшення значення атрибута position
  • типове значення атрибута position
Q69. Який найбільш точний приклад принципу заміщення Ліскова?
  • A
public class Car{
}
public class FlyingCars extends Car{
   public void fly(){}
}
public class Tesla FlyingCar{}
public class Honda Car{}
  • B
public class Car{
   public void fly(){}
}
public class Tesla extends Car{}
public class Honda extends Car{}
  • C
public class Car{
public void fly(){}
}
public class Tesla Car{}
public class Honda Car{}
  • D
public class Car{
}
public class FlyingCars extends Car{
   public void fly(){}
}
public class Tesla extends FlyingCar{}
public class Honda extends Car{}

Довідка

Q70. Яка різниця між параметром і аргументом?

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

Q71. Який обсяг видимості має клас, вкладений всередину іншого класу?

  • Захищений (Protected)
  • Приватний (Private)
  • Глобальний (Global)
  • Залежить від специфікатора доступу та використаного наслідування

Пояснення: Це залежить від специфікатора доступу та типу наслідування, яке використовується з класом, оскільки якщо клас наслідується, то вкладений клас може бути використаний і підкласом, якщо він не є приватним.

Q72. Методи та атрибути, які визначають об'єкт, є своєрідним шаблоном, як його назва?

  • Колекція (Collection)
  • Змінна (Variable)
  • Клас (Class)
  • Процедура (Procedure)

Q73. Припустимо, що використовується одиночне наслідування з класами A та B, де A є базовим класом. Потім припустимо, що є класи C, D та E, де C є базовим класом, а D наслідується від C, а E наслідується від D. Клас C робиться успадкованим від класу B. Який тип наслідування відображено?

  • Многоступеневе (Multilevel)
  • Гібридне (Hybrid)
  • Одиночне (Single level)
  • Множинне (Multiple)

Q74. Яка основна ідея розділення проблем?

  • Усі ці відповіді
  • Додатки розбиваються на частини
  • Частини визначені з мінімальним перетином
  • Кожна частина відповідає за окрему проблему

Q75. Яка мета блоку finally?

  • Завжди виконувати блок коду finally, коли блок try виключено
  • Виконувати код, коли виключення не сталося
  • Виконувати блок, якщо сталося виключення
  • Виконувати код, коли цього потребує збірка сміття

Q76. Який з варіантів не є мовою ООП?

  • C#
  • Java
  • C
  • Python

Q77. Яка функція фіналізатора або деструктора?

  • Звільняти ресурси, які більше не потрібні
  • Видаляти ім'я змінної
  • Скидувати значення атрибута
  • Зберігати місце, навіть після того, як об'єкт більше не використовується

Q78. Який тип класу не можна створити?

  • Захищений клас (Protected class)
  • Базовий клас (Base class)
  • Анонімний клас (Anonymous class)
  • Абстрактний клас (Abstract class)

Q79. У контексті ООП, що таке композиція?

  • Композиція — це акт одного об'єкта, який передає іншому об'єкту операцію, що виконується від імені початкового об'єкта.
  • Композиція — це відношення частина/ціле, де об'єкт складається з одного або кількох інших об'єктів, кожен з яких є частиною цілого.
  • Композиція — це зв'язок, при якому асоціація класу/імені не здійснюється до того, як об'єкт, призначений ім'ям, створюється під час виконання.
  • Композиція — це процес збору класів, які надають набір послуг для певної області.

Q80. Статичний поліморфізм використовує метод _?

  • Перевантаження (Overloading)
  • Наслідування (Inheritance)
  • Абстракцію (Abstraction)
  • Перекриття (Overriding)

Q81. Чого не має конкретний клас?

  • Батьків
  • Чистих віртуальних функцій
  • Атрибутів
  • Мети

Q82. Як динамічне типізування ускладнює усунення несправностей?

  • Може бути складно визначити змінні, які мають неправильний тип
  • Динамічні змінні можуть приймати лише обмежені значення
  • Для динамічних змінних фіксоване зберігання
  • Статичні змінні більш гнучкі, ніж динамічні

Q83. У чому різниця між раннім і пізнім зв'язуванням?

  • Раннє зв'язування — це коли змінна отримує значення при створенні області видимості. Пізнє зв'язування — це коли змінна отримує значення після виходу з області видимості
  • Раннє зв'язування — це коли змінна отримує значення при запуску програми. Пізнє зв'язування — це коли змінна отримує значення після того, як програма запущена
  • Немає різниці. У обох випадках змінні отримують значення, коли програма завершила запуск і працює
  • Раннє зв'язування — це коли змінна отримує своє значення на етапі компіляції. Пізнє зв'язування — це коли змінна отримує значення під час виконання

Q84. У чому різниця між інтерфейсом і абстрактним класом?

  • Інтерфейси можуть містити код або дані. Абстрактні класи не містять код або дані. Клас може успадковуватися від декількох абстрактних класів, але може реалізувати лише один інтерфейс.
  • Інтерфейси можуть містити код або дані. Абстрактні класи не містять код або дані. Клас може успадковуватися тільки від одного абстрактного класу, але може реалізувати необмежену кількість інтерфейсів.
  • Абстрактні класи можуть містити код або дані. Інтерфейси не містять код або дані. Клас може успадковуватися тільки від одного абстрактного класу, але може реалізувати необмежену кількість інтерфейсів.
  • Абстрактні класи можуть містити код або дані. Інтерфейси не містять код або дані. Клас може успадковуватися від декількох абстрактних класів, але може реалізувати тільки один інтерфейс.

Q85. Які параметри потрібно передати конструктору класу?

Оскільки тут не вказана конкретна мова програмування, розглянемо всі мови.

  • Посилання на підклас (reference to subclass) // Посилання на підклас ніколи не є необхідними, оскільки ви можете просто ініціалізувати підклас і використовувати його об'єкт.
  • Посилання на базовий клас (reference to base class) // Посилання на базовий клас не потрібні в Java, JavaScript і Python
  • Посилання на this (reference to this pointer) // Хоча Python і JavaScript можуть вимагати передачі this або self у конструкторі, це не передається у конструктор Java.
  • Нічого (none) // Вище зазначені варіанти неправильні, тому "нічого" є правильним.

Q86. Які чотири принципи об'єктно-орієнтованого програмування?

  • маніпуляція, інкапсуляція, успадкування і інверсія залежностей
  • інверсія залежностей, принцип відкритості/закритості, інкапсуляція і успадкування
  • розділення інтерфейсів, абстракція, інверсія залежностей і успадкування
  • абстракція, інкапсуляція, наслідування і поліморфізм

Q87. З принципів SOLID об'єктно-орієнтованого програмування, яке твердження найкраще описує принцип заміщення Ліскова?

  • Клас повинен мати тільки одну відповідальність — тобто тільки зміни в одній частині специфікації програмного забезпечення повинні впливати на специфікацію класу.
  • Програмні сутності повинні бути відкриті для розширення, але закриті для модифікації.
  • Багато специфічних для клієнта інтерфейсів краще, ніж один універсальний інтерфейс.
  • Об'єкти в програмі повинні бути замінювані екземплярами своїх підтипів без зміни правильності програми.

Q88. Окрім відповідальностей, що ще повинно бути вказано на картках класів-відповідальностей-співпраці (CRC)?

  • Яка мова програмування буде використана.
  • Програміст, відповідальний за реалізацію.
  • Взаємодіючі класи.
  • Атрибути.

Q89. Яка найкраща назва функції, що виправляє це оцінювання?

  • makeResult()
  • questionScore()
  • calculateScore()
  • getAnswers()

Q90. Яке відношення найкраще ілюструє відношення абстрактний-конкретний клас?

  • кіт : кошеня
  • колір : червоний
  • планета : місяць
  • вантажівка : вікно

Q91. Що не може бути використано для поліморфізму?

  • Перевантаження конструкторів (overloading constructors)
  • Перевантаження членів функцій (overloading member functions)
  • Статичні члени функцій (static member functions)
  • Перевантаження попередньо визначених операторів (overloading predefined operator)

Q92. Скільки рівнів дозволяє багаторівневе наслідування в програмі?

  • тільки 10 рівнів наслідування
  • стільки рівнів наслідування, скільки потрібно протягом 10 хвилин
  • стільки рівнів наслідування, скільки потрібно
  • лише стільки рівнів, скільки дозволяє пам'ять, розділена на швидкість процесора

Q93. Що таке віртуальний метод?

  • метод, який, як ви очікуєте, може бути переписаний у похідних класах
  • метод, від якого не очікується, що він буде переписаний у похідних класах
  • приватний метод, від якого не очікується, що він буде переписаний у публічних похідних класах
  • метод, який існує тимчасово — після використання він перестає використовуватися будь-яким викликом

Q94. Що з наведеного не є базовим принципом об'єктно-орієнтованого програмування?

  • Інкапсуляція (Encapsulation)
  • Компіляція (Compilation)
  • Успадкування (Inheritance)
  • Поліморфізм (Polymorphism)

Довідка

Q95. Як відрізняються поведінки і атрибути об'єкта?

  • Поведінка описує динамічні властивості; атрибути є статичними.
  • Атрибути описують стан; поведінки описують зміну.
  • Атрибути застосовуються тільки до конкретного об'єкта; поведінка застосовується до інших пов'язаних об'єктів.
  • Поведінки є векторними величинами; атрибути є скалярними.

Q96. Наскільки тісно повинні бути зв'язані ваші класи і чому?

  • Слід збільшити зв'язок, щоб покращити залежності між класами.
  • Слід обмежити зв'язок, щоб зменшити залежності між класами.
  • Слід збільшити зв'язок, щоб члени класу відповідали меті класу.
  • Слід обмежити зв'язок, щоб члени класу відповідали меті.

Q97. Яке твердження найкраще описує клас-друг?

  • Класи-друзі підтримують базовий клас за потреби.
  • Клас-друг може отримувати доступ до приватних і захищених членів класу, в якому він оголошений як друг.
  • Класи-друзі не мають реалізації.
  • Клас-друг може отримувати доступ лише до захищених членів класу, до якого він є другом.

Довідка

Q98. Який з наведених прикладів коду демонструє множинне наслідування?

  • class employee{ }; class stream{ }; class topper{ };
  • class employee{int rating;}; class stream:public employee{ };
  • class employee{int rating;}; class stream{int total;}; class topper: employee, stream{ };
  • class employeef{int rating};}: class stream{ }: class topper: public employee{ }:

Q99. Що таке багаторівневе наслідування?

  • клас, який не має більше одного батька.
  • клас, який не є похідним від іншого похідного об'єкта.
  • не подвоєння однорівневого наслідування.
  • класи, похідні від інших похідних класів.

Довідка

Q100. Чи можна мати два класи з однаковим ім'ям в одному проекті?

  • Ні, не можна.
  • Так, якщо їх конструктори різні.
  • Так, якщо їх методи різні.
  • Так, якщо вони знаходяться в різних просторах імен (namespaces).

Q101. Об'єкти передаються за _

  • значенням або посиланням, в залежності від мови програмування
  • значенням
  • значенням або посиланням, в залежності від програми
  • посиланням

Q102. Якщо мова реалізує лише передачу параметрів за значенням у функції, чи можуть об'єкти, передані як параметри, бути встановлені на нові екземпляри всередині функції і їх нове значення повернутися до виклику?

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

Q103. Що таке інкапсуляція?

  • визначення класів, зосереджуючись на тому, що важливо для мети
  • визначення даних і відповідних методів разом в одному класі
  • зробити всі методи приватними
  • використання слів для визначення класів

Q104. Що таке метод?

  • функція, що асоціюється з даними та поведінкою
  • те саме, що і функція та підпрограма
  • набір змінних, що можуть змінюватися з часом
  • набір інструкцій, розроблений для виконання часто використовуваної операції в програмі який не повертає значень

Q105. Який найточніший приклад принципу заміщення Ліскова?

  • A public class Car{ } public class FlyingCars extends Car{ public void fly(){} } public class Tesla FlyingCar{} public class Honda Car{}

  • B public class Car{ public void fly(){} } public class Tesla extends Car{} public class Honda extends Car{}

  • C public class Car{ public void fly(){} } public class Tesla Car{} public class Honda Car{}

  • D public class Car{ } public class FlyingCars extends Car{ public void fly(){} } public class Tesla extends FlyingCar{} public class Honda extends Car{}

Довідка

Q106. Що описує агрегацію?

  • Клас ресурсів
  • Група методів
  • Колекція об'єктів
  • Список дітей

Q107. Яка вигода від використання ін'єкції залежностей?

  • слабке зв'язування (loose coupling)
  • повторне використання коду
  • лінива ініціалізація
  • абстракція даних

Q108. Що не може бути використано для поліморфізму?

  • Перевантаження конструкторів (overloading constructors)
  • Перевантаження членів функцій (overloading member functions)
  • Статичні члени функцій (static member functions)
  • Перевантаження попередньо визначених операторів (overloading predefined operator)

Q109. Екземпляр якого типу класу не може бути створений?

  • Захищений клас (Protected class)
  • Базовий клас (Base class)
  • Анонімний клас (Anonymous class)
  • Абстрактний клас (Abstract class)

Q110. З принципів SOLID об'єктно-орієнтованого програмування, яке твердження найкраще описує принцип заміщення Ліскова?

  • Клас повинен мати тільки одну відповідальність — тобто тільки зміни в одній частині специфікації програмного забезпечення повинні впливати на специфікацію класу.
  • Програмні сутності повинні бути відкриті для розширення, але закриті для модифікації.
  • Багато специфічних для клієнта інтерфейсів краще, ніж один універсальний інтерфейс.
  • Об'єкти в програмі повинні бути замінювані екземплярами своїх підтипів без зміни правильності програми.

Q111. Які п'ять шаблонів створення з шаблону "Банди чотирьох (Gang of Four)" ?

  • Observer, State, Strategy, Template Method, і Visitor.
  • Composite, Visitor, State, Prototype, і Singleton.
  • Composite, Builder, Factory Method, Prototype, і Singleton.
  • Abstract Factory, Builder, Factory Method, Prototype, і Singleton.

Q112. Яка різниця між інтерфейсом і абстрактним класом?

  • Інтерфейси можуть містити код або дані. Абстрактні класи не містять коду або даних. Клас може успадковувати більше одного абстрактного класу, але може реалізувати лише один інтерфейс.
  • Інтерфейси можуть містити код або дані. Абстрактні класи не містять коду або даних. Клас може успадковувати лише один абстрактний клас, але може реалізувати необмежену кількість інтерфейсів.
  • Абстрактні класи можуть містити код або дані. Інтерфейси не містять коду або даних. Клас може успадковувати лише один абстрактний клас, але може реалізувати необмежену кількість інтерфейсів.
  • Абстрактні класи можуть містити код або дані. Інтерфейси не містять коду або даних. Клас може успадковувати більше одного абстрактного класу, але може реалізувати лише один інтерфейс.

Q113. Який зв'язок найкраще ілюструє відносини абстрактного і конкретного класу?

  • кіт : кошеня
  • колір : червоний
  • планета : місяць
  • вантажівка : вікно

Q114. Яка перевага використання ін'єкції залежностей?

  • слабка зв'язаність
  • повторне використання коду
  • лінива ініціалізація
  • абстракція даних

Q115. _ описує агрегацію

  • Клас ресурсів
  • Група методів
  • Колекція об'єктів
  • Список дітей

Q116. Який тип функцій можна використовувати для поліморфізму?

  • віртуальна функція
  • вбудована функція
  • не визначена функція
  • приватна функція

Q117. Яка перевага використання ін'єкції залежностей?

  • слабка зв'язаність
  • повторне використання коду
  • лінива ініціалізація
  • абстракція даних

Q118. Чи потрібно повернути об'єкт, якщо він був переданий за посиланням у функцію, і чому або чому ні?

  • Так, функція виклику повинна відобразити зміни.
  • Ні, слід використовувати глобальну змінну.
  • Ні, зміни автоматично відобразяться у функції виклику.
  • Так, об'єкт повинен бути таким же у функції виклику.

Q119. З принципів SOLID об'єктно-орієнтованого програмування, яке твердження найкраще описує принцип заміщення Ліскова?

  • Клас повинен мати лише одну відповідальність — тобто тільки зміни в одній частині специфікації програмного забезпечення повинні впливати на специфікацію класу.
  • Програмні сутності повинні бути відкриті для розширення, але закриті для модифікації.
  • Багато специфічних для клієнтів інтерфейсів краще ніж один універсальний інтерфейс.
  • об'єкти в програмі повинні бути замінювані екземплярами їх підтипів без порушення коректності програми.

Q120. Окрім відповідальностей, що ще повинно бути вказано на картках Class-responsability-collaboration (CRC)?

  • Яка мова програмування буде використана.
  • Програміст, відповідальний за реалізацію.
  • Взаємодіючі класи.
  • Атрибути.

Q121. Яка найкраща назва для функції, що виправляє цю оцінку?

  • makeResult()
  • questionScore()
  • calculateScore()
  • getAnswers()

Q122. Хто винайшов ООП?

  • Андреа Ферро
  • Адель Голдберг
  • Алан Кей
  • Денис Річі