Ооп проти процедурного підходу.
Нещодавно у мене запитали, чим ООП краще процедурного підходу. Я подумав, що це питання хвилює більшість початківців розробників, і вирішив написати статтю на цю тему. Приємного прочитання.
Вступ
На початку слід запам`ятати: немає кращого чи гіршого стилю програмування. Все, що можна написати на ООП, можна написати і в процедурному стилі і навпаки. Однак, ООП володіє деякими перевагами, про які ми і поговоримо в цій статті.
Процедурний стиль програмування - це функції. Так-так, звичайні функції, які ви щодня використовуєте в своєму коді. У вас є якісь дані в якомусь типі, наприклад, число. Ви завантажуєте ці дані в функцію, і вона повертає результат.
В ООП ви створюєте єдину сутність - Об`єкт! У ньому є необхідні якості і методи, необхідні для маніпулювання даними. Ви завантажуєте дані в об`єкт, робите щось і отримуєте результат.
ООП легше для розуміючи в тому плані, що воно наближене до реальності. Наприклад, на форумі є учасники, вірно? Ну так створіть об`єкт 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.