Добро пожаловать в серию "Детские шаги" по концепциям информатики: 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-плеера с несколькими кнопками снаружи по сравнению со сложностями внутри материнской платы! Скрытые свойства и методы, дающие нам некоторые преимущества.

Преимущества:

  1. с более простым объектом интерфейса с несколькими свойствами и методами по сравнению с объектом с более чем несколькими свойствами и методами.
  2. Снижение воздействия изменений - которые не будут вытекать наружу. На остальной код приложения это не повлияет.

Наследование !! - механизм, устраняющий избыточный код.

Полиморфизм. Поли означает "много", а морфизм - "форма". Этот метод помогает нам удалить длинные операторы if / else, а также операторы switch / case.

Итак, перечислены преимущества ООП:

  1. Инкапсуляция: снижение сложности. Увеличьте возможность повторного использования. Сгруппируйте связанные переменные и функции вместе.
  2. Абстракция: снижение сложности. Скрыть детали. Показывайте только то, что важно, изолируя влияние изменений.
  3. Наследование: устранение избыточного кода.
  4. Полиморфизм: рефакторинг длинных операторов if и else, а также операторов switch / case.

Спасибо за внимание!

Ресурсы:

« Объектно-ориентированное программирование за 7 минут от Programming with Mosh»