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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

SOLID — це абревіатура складена з перших літер п'яти базових принципів об'єктно-орієнтованого програмування та дизайну запропонована Робертом Мартіном в статті 2000 року англ. Design Principles and Design Patterns[1][2].

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

Як зазначає сам автор, запропоновані ним принципи не є «істиною в останній інстанції», правилами, або ж суворими законами. У нього немає доказів, що вони завжди працюють, або ж що їх слід неухильно дотримуватись. Проте, вони були сформульовані на основі спостережень й зазвичай допомагають уникнути проблем[1].

Опис[ред. | ред. код]

Буква Абревіатура Назва
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 та ООП[ред. | ред. код]

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

Див. також[ред. | ред. код]

Основні поняття та суміжні теми[ред. | ред. код]

Принципи проектування та розробки[ред. | ред. код]

Посилання[ред. | ред. код]

Примітки[ред. | ред. код]

  1. а б Robert C. Martin. Getting a SOLID start. objectmentor.com. Архів оригіналу за 26 грудня 2016. Процитовано 19 серпня 2013. 
  2. Martin, Robert C. (2000). Design Principles and Design Patterns. Архів оригіналу за 6 вересня 2015.