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

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 23:00, 1 квітня 2021, створена Kanzat (обговорення | внесок) (Непотрібне уточнення)
Перейти до навігації Перейти до пошуку

SOLID — це абревіатура складена з перших літер п'яти базових принципів об'єктно-орієнтованого програмування та дизайну запропонована Робертом Мартіном.

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

Опис

Буква Абревіатура Назва
S SRP

Принцип єдиного обов'язку (Single responsibility principle): Кожен об'єкт має виконувати лише один обов'язок.

O OCP

Принцип відкритості/закритості (Open/closed principle): Програмні сутності повинні бути відкритими для розширення, але закритими для змін. Розширення певного класу/інтерфейсу може здійснюватись через його успадкування.

L LSP

Принцип підстановки Лісков (Liskov substitution principle): Об'єкти в програмі можуть бути заміненими їх нащадками без зміни коду програми.

I ISP

Принцип розділення інтерфейсу (Interface segregation principle): Багато спеціалізованих інтерфейсів краще за один універсальний. Інтерфейс може бути поділений на спеціалізовані ще на стадії проектування, заради майбутньої гнучкості програмних компонентів.

D DIP

Принцип інверсії залежностей (Dependency inversion principle): Залежності всередині системи будуються на основі абстракцій, що не повинні залежати від деталей; навпаки, деталі мають залежати від абстракцій. Модулі вищих рівнів не мають залежати від модулів нижчих рівнів.

SOLID та ООП

Дані принципи дуже тісно корелюють з принципами об'єктно-орієнтованого програмування. Зокрема принцип підстановки Барбари Лісков уособлює успадкування, він може трактуватись так: об'єкт, клас якого успадкований від іншого класу, отримує методи останнього. Принцип інверсії залежностей — це більш розширене трактування поліморфізму. А принцип єдиного обов'язку тісно пов'язаний з інкапсуляцією, що також передбачає існування інкапсульованого (відокремленого) набору методів.

Див. також

Основні поняття та суміжні теми

Принципи проектування та розробки

Посилання