Ооп проти процедурного підходу.
Нещодавно у мене запитали, чим ООП краще процедурного підходу. Я подумав, що це питання хвилює більшість початківців розробників, і вирішив написати статтю на цю тему. Приємного прочитання.
Вступ
На початку слід запам`ятати: немає кращого чи гіршого стилю програмування. Все, що можна написати на ООП, можна написати і в процедурному стилі і навпаки. Однак, ООП володіє деякими перевагами, про які ми і поговоримо в цій статті.
Процедурний стиль програмування - це функції. Так-так, звичайні функції, які ви щодня використовуєте в своєму коді. У вас є якісь дані в якомусь типі, наприклад, число. Ви завантажуєте ці дані в функцію, і вона повертає результат.
В ООП ви створюєте єдину сутність - Об`єкт! У ньому є необхідні якості і методи, необхідні для маніпулювання даними. Ви завантажуєте дані в об`єкт, робите щось і отримуєте результат.
ООП легше для розуміючи в тому плані, що воно наближене до реальності. Наприклад, на форумі є учасники, вірно? Ну так створіть об`єкт 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: Об`єкти, шаблони і методики програмування
У цій книзі досить непогано розповідається про те, які плюси у ООП, як його правильно використовувати і що таке шаблони проектування. Дерзайте! Успіхів!
Келебії докса - введення в програмування на go
Правила освоєння php новачкам
Як правильно писати програми
Як зробити типи користувачів на php
Як переглянути avi-файл на сайті
Як запускати php-код
Як вивчити jаvascript швидше.
Створення сайту - наука чи мистецтво?
Стрілочні функції в es6.
Вивчаємо coffeescript. Цикли.
Створення функцій в jаvascript
Вивчаємо sass. Міксини.
Створення формул в word.
Методи для роботи з масивами в es5.
Вивчаємо coffeescript. Функції.
Русаков михайло юрьевич
Математичні функції в sql.
Обчислення в таблицях word.
Ротатор тексту на jаvascript
Відмінності між function declaration і function expression в jаvascript.
Анонімні, або лямбда-функції в php.
Стрілочні функції в es6.
Як переглянути avi-файл на сайті
Відмінності між function declaration і function expression в jаvascript.
Як зробити типи користувачів на php
Вивчаємо sass. Міксини.
Рекурсія в php
Вивчаємо coffeescript. Цикли.
Келебії докса - введення в програмування на go