— Привіт, Аміго! Я хочу, щоб ти зрозумів призначення ООП. Для цього я розповім тобі одну історію.

Була собі невелика компанія, яка займалася доставкою товарів у космосі.…

— Як Galactic Rush?

— Така, як Galactic Rush. У ній працювало 5 людей. Одна займалася фінансами, друга працювала на складі, третя виконувала доставку, четверта керувала рекламою, а п'ята керувала усім цим.

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

І тут почалися проблеми. Людей стало більше, і вони один одному заважали.

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

На складі є 10 коробок з новими гіпердвигунами, які постачають щомісяця. Кур'єр полетів відвозити один гіпердвигун, і тепер інший клієнт із замовленням на 10 гіпердвигунів змушений чекати ще місяць. Перший кур'єр просто не знав про інше замовлення, яке виконує інший кур'єр.

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

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

Треба було щось робити, тому директор вирішив розділити монолітну компанію на кілька відділів. З'явився відділ доставки, відділ маркетингу, відділ закупівель, фінансовий відділ та відділ запасів. Тепер вже ніхто не міг просто взяти корабель. Директор відділу доставки отримував всю інформацію про доставки і видавав корабель тому кур'єру, чия доставка була вигіднішою для компанії. Склад також не дозволяв будь-якому кур'єру взяти будь-який товар, а контролював цей процес. Фінансовий відділ міг не дати грошей на маркетинг, якщо знав, що скоро буде закупівля. Кожен відділ мав одну публічну особу – керівника. Внутрішнє влаштування кожного відділу було його внутрішньою справою. Якщо кур'єр хотів отримати товар, він йшов до начальника складу, а не на склад. Якщо з'являлася нова заявка, її отримував директор відділу доставки (public person), а не кур'єр (private person).

Іншими словами, директор об'єднав у групи (відділи) ресурси та дії над нимиа також заборонив іншим втручатися у внутрішню структуру відділівКонтактувати можна було лише з певною особою.

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

— Зажди. Проблема була в тому, що будь-який співробітник міг безконтрольно працювати з будь-яким ресурсом та віддавати команди будь-якій людині?

— Так, саме так.

— Цікаво. Ми запровадили невелике обмеження, але отримали більше порядку. А також змогли краще контролювати це.

— Так. Розділяй і володарюй у справжньому вигляді.

— Як ти гарно сказав – розділяй та володарюй. Потрібно буде запам'ятати.