CS 371p Весна 2025: Емелі Діас

pic

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

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

Щодо вправи Shapes3, я отримав допомогу від сусідів. Виявилося, що я забув додати ключове слово const у методі, що призводило до невідповідності сигнатури. Як тільки я виправив це, тести пройшли без проблем. Для підготовки до квізів ми з друзями обговорювали наші записки і добре перевіряли один одного, щоб переконатися в правильності наших відповідей і зрозуміти матеріал.

Проект Life спочатку видавався надто складним через великі обсяги завдань і складність взаємодії клітин. Проте після того, як я попрацював вдома з рішеннями і глибше вивчив матеріал, все стало зрозумілим, і я зміг оцінити всі деталі цього проекту. Лекція про ShapeHandle спочатку була не зовсім зрозумілою, але приклад з Shapeptr допоміг мені краще зрозуміти, як можна делегувати методи до AbstractCell і використовувати клас-обробник як простий обгортник.

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

Перекладено з: CS 371p Spring 2025: Emely Diaz