Увод у класе и објекте у ЈаваСкрипту
Сада ћемо се бавити проучавањем ООП-а у ЈаваСкрипту. Хајде да размотримо пример из живота, а затим га пренесемо на ЈаваСкрипт.
Као пример узмимо аутомобил. Он има точкове, боју, врсту каросерије, запремину мотора и тако даље. Поред тога, возач му може давати команде: да крене, да се заустави, да скрене надесно, налево и слично.
Може се рећи да постоји неки клас аутомобила, који поседује заједничка својства (сви имају точкове и свима им се могу давати команде).
Конкретан аутомобил, који стоји на улици - то је представник те класе, или, другим речима, објекат те класе. Сви објекти ове класе имају својства: број точкова, боју, врсту каросерије и методе: крени, заустави се, скрени надесно, налево.
Другим речима, сама класа је цртеж, по којем се у фабрици праве аутомобили. Објекат је сама возила, направљена по том цртежу.
У ЈаваСкрипту се класа креира помоћу кључне
речи class, након које следи назив
те класе. Хајде да направимо класу Car:
class Car {
// овде је код, односно ЈаваСкрипт-цртеж аутомобила
}
Одредимо сада у нашем цртежу да ће сваки аутомобил, направљен по овом цртежу, имати својство за боју и својство за количину горива.
Зато унутар класе напишимо својство
color и својство fuel:
class Car {
color; // боја аутомобила
fuel; // количина горива
}
Хајде сада да направимо методе наше класе.
У ЈаваСкрипту су методе сличне обичним функцијама,
само се декларишу без кључне речи function.
Као што је већ поменуто, наш аутомобил може да се креће, да скреће, да се зауставља. Направимо одговарајуће методе у нашој класи:
class Car {
color; // боја аутомобила
fuel; // количина горива
// Команда крени:
go() {
// неки ЈаваСкрипт код
}
// Команда скрени:
turn() {
// неки ЈаваСкрипт код
}
// Команда заустави се:
stop() {
// неки ЈаваСкрипт код
}
}
Направили смо цртеж нашег аутомобила. Сада треба да одемо у фабрику и направимо објекат ове класе (то јест конкретан аутомобил).
У ЈаваСкрипту се то ради помоћу кључне речи
new, након које пише име класе:
new Car; // наређујемо фабрици да направи аутомобил
Међутим, ако се само направи објекат класе - то ни до чега неће довести (то је исто, што, на пример, декларисати низ и нигде га не уписати). Потребна нам је променљива за складиштење овог објекта.
Нека се та променљива зове myCar
- уписаћемо у њу направљени објекат:
let myCar = new Car;
Након прављења аутомобила може се приступати његовим својствима. Приступ њима се остварује преко тачке. Хајде да поставимо својства нашег објекта:
let myCar = new Car; // наређујемо фабрици да направи аутомобил
myCar.color = 'red'; // фарбамо у црвену боју
myCar.fuel = 50; // сипамо гориво
Све, наш аутомобил је направљен, обојен и напуњен горивом. Сада му можемо давати команде преко метода овог аутомобила.
Приступ методама се такође остварује преко тачке, али, за разлику од својства, након имена метода следи писати заграде. Хајде да дајемо команде нашем објекту:
myCar.go();
myCar.turn();
myCar.stop();