Ооп проти процедурного підходу.

ООП проти процедурного підходу.

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

Вступ

На початку слід запам`ятати: немає кращого чи гіршого стилю програмування. Все, що можна написати на ООП, можна написати і в процедурному стилі і навпаки. Однак, ООП володіє деякими перевагами, про які ми і поговоримо в цій статті.

Процедурний стиль програмування - це функції. Так-так, звичайні функції, які ви щодня використовуєте в своєму коді. У вас є якісь дані в якомусь типі, наприклад, число. Ви завантажуєте ці дані в функцію, і вона повертає результат.

В ООП ви створюєте єдину сутність - Об`єкт! У ньому є необхідні якості і методи, необхідні для маніпулювання даними. Ви завантажуєте дані в об`єкт, робите щось і отримуєте результат.

ООП легше для розуміючи в тому плані, що воно наближене до реальності. Наприклад, на форумі є учасники, вірно? Ну так створіть об`єкт member, який буде обслуговувати сутність "учасник". Там будуть зберігатися всі їх дані: імена, прізвища, паролі, методи реєстрації, авторизації та багато іншого.

Ще один плюс ООП - модульність. Ви можете розбити свій код на окремі модулі і, отже, його буде легше підтримувати і покращувати.

Але найбільший плюс ООП - успадкування.

спадкування




Наприклад, ви можете створити об`єкт User, який, як зрозуміло з назви (ще один плюс ООП), Буде відповідати за користувачів. Він буде містити приблизно такі властивості і методи:

lt ;?php
classUser{
public $ username-
private $ login =false-

publicfunction isLogin(){
if($ this-gt;login ===false){
return`Користувач поза мережею`-
}else{
return`Користувач в мережі`-
}
}

publicfunction login(){
if($ this-gt;login ===false){
$ this
-gt;login =true-
}else{
$ this
-gt;login =false-
}
}
}
?gt;

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

Тепер ми вирішили створити адміністратора. Але він теж звичайний користувач, вірно? Так, з трохи більшими правами, але все ж він просто користувач. Навіщо все це переписувати? Просто успадкуємо.

lt ;?php
classAdministratorextendsUser{
publicfunction ban($ username){
// Банимо користувача
}
}
?gt;

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




головний принцип ООП - DRY(Dont`t Repeat Yourself) - не дублює код. І його слід дотримуватися.

Теж саме можна сказати і про перевантаження методів. Вам не потрібно міняти ВСЕ, вам потрібно лише поміняти частину коду.

Відео: Підходи до програмування

Сподіваюся, це зрозуміло. Ще один істотний плюс - типізація.

типізація

Ви можете явно вказати який об`єкт повинен бути, і ніякий інший не пройде.

lt ;?php
// ...
publicfunction __construct(User $ user){
// ...
}
// ...
?gt;

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

lt ;?php
$ user
=newUser() -
$ something
=newSomething() -
$ a
=newObj($ something) -
?gt;

Тут ми передаємо something замість користувача і отримаємо помилку.

наступний плюс ООП - виключення. Ви можете створити ті винятки, які вам потрібні і які будуть робити те, що вам потрібно. Далі ви можете відловлювати помилки і, якщо вони трапляються, то викликати ту чи іншу виняток. Таким чином ваш код стане більш стійким, а усувати помилки стане легше.

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

Відео: Основи процедурного програмування Газізов А А

Якщо хтось хоче серйозно вивчити ООП, то раджу почитати наступну книжку:

Метт Зандстра - PHP: Об`єкти, шаблони і методики програмування

У цій книзі досить непогано розповідається про те, які плюси у ООП, як його правильно використовувати і що таке шаблони проектування. Дерзайте! Успіхів!

Поділися в соціальних мережах:

Схожі
Створення функцій в jаvascriptСтворення функцій в jаvascript
Стрілочні функції в es6.Стрілочні функції в es6.
Як переглянути avi-файл на сайтіЯк переглянути avi-файл на сайті
Відмінності між function declaration і function expression в jаvascript.Відмінності між function declaration і function expression в jаvascript.
Як зробити типи користувачів на phpЯк зробити типи користувачів на php
Вивчаємо sass. Міксини.Вивчаємо sass. Міксини.
Рекурсія в phpРекурсія в php
Вивчаємо coffeescript. Цикли.Вивчаємо coffeescript. Цикли.
Келебії докса - введення в програмування на goКелебії докса - введення в програмування на go
Створення сайту - наука чи мистецтво?Створення сайту - наука чи мистецтво?
» » Ооп проти процедурного підходу.