OOP rozwiązuje różne problemy, między innymi tak zwany "spaghetti code" czyli w skrócie mówiąc kod, który jest bardzo skomplikowany i trudny do zrozumienia, który ma różne powiązania w różnych miejscach. OOP rozwiązuje te problemy, ponieważ taki kod jest bardziej uporządkowany. Wszystkie powiązane ze sobą zmienne i funkcje są grupowanego w obiektach. Jak już wcześniej wspominałem zmienne, które występują w obiektach nazywamy właściwościami a funkcje - metodami. Także grupujemy wszystkie właściwości i metody do konkretnego obiektu.
Zobaczmy na kilka przykładów. Załóżmy, że chcemy na podstawie kwoty bazowej, stażu pracy i jakiegoś współczynnika obliczyć premię dla pracownika, nie będziemy się tutaj skupiać na jakichś skomplikowanych algorytmach obliczających premię, bo nie o to chodzi w dzisiejszym temacie. Napiszmy to najłatwiej jak tylko się da.
let baseSalary = 5000;
let yearsWorked = 10;
let ratio = 1.5;
function getBonus(baseSalary, yearsWorked, ratio) {
return baseSalary + (yearsWorked * ratio);
}
console.log(getBonus(baseSalary, yearsWorked, ratio)); //5015
Powyższy zapis jest podejściem proceduralnym. W takim podejściu istnieje mnóstwo funkcji i zmiennych. Wraz z rosnącym programem, takich funkcji i zmiennych może przybywać, będą one miały zapewne różne zależności, powiązania i powstaje wtedy właśnie wspomniany "spaghetti code". Dlatego nie jest to dobre podejście.Lepszym rozwiązaniem będzie zastosowanie tytułowej enkapsulacji, poprzez zgrupowanie powiązanych funkcji i zmiennych do konkretnego obiektu.
let employee = {
baseSalary: 5000,
yearsWorked: 10,
ratio: 1.5,
getBonus: function() {
return this.baseSalary + (this.yearsWorked * this.ratio);
}
};
console.log(employee.getBonus()); //5015
Stosując enkapsulację obiekt employee posiada kilka właściwości oraz 1 metodą, nie są one powiązane z żadnymi innymi zmiennymi czy funkcjami, wszystko jest wewnątrz obiektu. Poza tym jak widzisz metoda getBonus nie posiada żadnych parametrów. Uncle Bob byłby z nas dumny :) Bo jak Uncle Bob, czyli Robert C Martin napisał w książce pod tytułem "Czysty kod" (polska edycja) - "im mniej parametrów tym lepiej, a najlepsze funkcje to te bez żadnych parametrów". Dzięki bezparametrowym funkcjom, nasze aplikacje są łatwiejsze w rozszerzaniu. Mając tak zgrupowane właściwości i metody możemy również używać nasze obiekty w innych programach.To wszystko co chciałem Ci przekazać w tym artykule. Zapraszam Cię do kolejnych artykułów z serii podstaw programowania w języku JavaScript.
Poprzedni artykuł - Programowanie zorientowane obiektowo w JavaScript.
Następny artykuł - Abstrakcja w JavaScript.