Добро пожаловать в серию "Детские шаги" по концепциям информатики: 4 столпа объектно-ориентированного программирования (ООП) вместе с Тони! Я промолчал - не смог ответить на это во время технического интервью (моего первого) живого кодирования через Skype, после буткемпа. Воспользовавшись обучающим видео Программирование с Мошем, здесь, как напоминание о начале работы.
Четыре столпа: инкапсуляция, абстракция, наследование и полиморфизм
До ООП написание кода могло стать беспорядочным. Например, когда написанные функции присутствуют везде, в результате получается спагетти-код. Итак, ООП - это решение этой проблемы. В ООП мы группируем связанные переменные и функции, которые с ними работают, в объекты, что также известно как инкапсуляция.
Объект localStorage браузера имеет такое свойство, как «длина», возвращающее количество объектов в «Хранилище» с помощью других методов, таких как «removeItem» и «setItem».
Давайте воспользуемся подходом ООП в инкапсуляции с этой информацией! В приведенном ниже фрагменте кода это процедурный пример (переменные с одной стороны и функции с другой стороны для расчета заработной платы).
«Лучшие функции - это те, у которых нет параметров!» - Дядя Боб - Роберт С. Мартин
//Procedural Programming: In the code snippet below, this is the Procedural Example (variables on one side and function on the other side to calculate one’s wage). //variables let baseSalary = 30_000; let overtime = 10; let rate = 20; //line below holds parameters function getWage(baseSalary, overtime, rate) { return baseSalary + (overtime * rate); } //////////////////////////////////////// //Better option in OOP (below) making maintainance of these functions, easier! //No parameters here and a single unit! let employee = { baseSalary: 30_000, overtime: 10, rate: 20, getWage: function() { return this.baseSalary + (this.overtime * this.rate); } }; //a in single unit with fewer and fewer parameters employee.getWage(); //30200
Абстракция - нам все равно, что внутри. Представьте аналогию DVD-плеера с несколькими кнопками снаружи по сравнению со сложностями внутри материнской платы! Скрытые свойства и методы, дающие нам некоторые преимущества.
Преимущества:
- с более простым объектом интерфейса с несколькими свойствами и методами по сравнению с объектом с более чем несколькими свойствами и методами.
- Снижение воздействия изменений - которые не будут вытекать наружу. На остальной код приложения это не повлияет.
Наследование !! - механизм, устраняющий избыточный код.
Полиморфизм. Поли означает "много", а морфизм - "форма". Этот метод помогает нам удалить длинные операторы if / else, а также операторы switch / case.
Итак, перечислены преимущества ООП:
- Инкапсуляция: снижение сложности. Увеличьте возможность повторного использования. Сгруппируйте связанные переменные и функции вместе.
- Абстракция: снижение сложности. Скрыть детали. Показывайте только то, что важно, изолируя влияние изменений.
- Наследование: устранение избыточного кода.
- Полиморфизм: рефакторинг длинных операторов if и else, а также операторов switch / case.
Спасибо за внимание!
Ресурсы:
« Объектно-ориентированное программирование за 7 минут от Programming with Mosh»