Pristanak na kolačiće

Koristimo kolačiće kako bismo poboljšali vaše iskustvo i analizirali korištenje stranice.

Objektno orijentisano programiranje u JavaScriptu

Dobrodošli na naše novo blog izdanje posvećeno najboljim praksama objektno orijentisanog programiranja u JavaScriptu. Kroz ovaj blog, provesti ćemo vas kroz ključne koncepte i tehnike OOP-a u JavaScriptu.

Objektno orijentisano programiranje (OOP) je programski stil baziran na klasama i objektima. Ovaj stil grupiše podatke (svojstva) i metode (akcije) unutar entiteta.

 

OOP je razvijen kako bi kod postao fleksibilniji i lakši za održavanje.

JavaScript je jezik baziran na prototipima, što znači da podržava i funkcionalno i objektno orijentisano programiranje. Upoznajmo sada najbitnije prakse koje nam pomažu pri kodiranju i boljem razumijevanju JavaScripta.

 

Razumijevanje objekata

Objekti su temeljni gradivni blokovi u JavaScriptu, i koriste se za skladištenje kolekcija parova ključ-vrijednost. Pogledajmo kako kreirati objekat koristeći sintaksu objektnog doslovnog zapisa:

const car = {
  make: "Toyota",
  model: "Camry",
  year: 2022,
  color: "Silver",
};

 

Drugi način je koristeći new Object() sintaksu:

const car = new Object();
car.make = "Toyota";
car.model: "Camry";
car.year: 2022;
car.color: "Silver";

 

Objektima koje smo kreirali možemo pristupiti koristeći dot (tačka) notaciju, a kreira se ovako: objectName.keyname. 

Primjer za naš slučaj bi mogao biti:

console.log(car..year) // vraća 2022

Pored samog pristupanja, objekte možemo brisati, dodavati new properties i uređivati stare, na način da im pristupimo koristeći pomenutu notaciju, a zatim dodijelimo novu vrijednost. 

Jedan primjer dodavanja new property i brisanja istog, navodimo ispod.

car.oilType = "D34";
console.log(car.oilType);
delete car.oilType;

 

Klase u JavaScriptu

U programiranju, klasa je tip strukture koju definiše programer, a koja se zatim koristi za kreiranje više objekata istog tipa. Kreiranjem jedne klase, možemo dodavati svojstva i metode specifične samo za tako kreiranu klasu. Klase predstavljaju srž objektno orijentisanog programiranja, a u isto vrijeme nam olakšavaju proces kreiranja i razvijanja aplikacija ili projekata. 

Sada ćemo primjer koji smo koristili za primjer objekta prevesti u klasu i dodati jednu metodu.

 

class Car {
  constructor(make, model, year, color) {
    this.make = make;
    this.model = model;
    this.year = year;
    this.color = color;
this.isRunning = false;
  }

  start() {
    this.isRunning = true;
    console.log("The car is now running.");
  }

  stop() {
    this.isRunning = false;
    console.log("The car has been stopped.");
  }
}

 

Instancu klase Car kreiramo na naredni način:

var car1 = new Car("Toyota", "Camry", 2022, "Silver");

var car2 = new Car("Honda", "Civic", 2021, "Red");

 

Razmotrimo sada četiri osnovna koncepta OOP-a : apstrakcija, enkapsulacija, nasljeđivanje i polimorfizam.

Osnovni koncepti OOP-a:

Apstrakcija

Apstrakcija u OOP-u je proces izlaganja samo neophodnih funkcija korisniku, dok se kompleksna unutrašnja logika skriva kako bi se programi olakšali za korištenje i razumijevanje. Na primjer, kada šaljemo poruku putem svog telefona, sve funkcije i logika koja usmjerava poruku ka drugoj osobi su skrivene jer nam nije potrebno znati ih, niti znati kako funkcionišu. Apstrakcija pomaže smanjenju kompleksnosti, povećava upotrebljivost i čini promjene u aplikaciji manje ometajućim.

Inkapsulacija

Inkapsulacija je proces grupisanja srodnog koda u jednu cjelinu. Inkapsulacija onemogućava drugim dijelovima koda da manipulišu ili mijenjaju način rada grupe aplikacije, osim ako eksplicitno ne pristupimo toj jedinici i ne izmijenimo je. Inkapsulacija nam pomaže da smanjimo složenost i povećamo ponovnu upotrebu koda.

Nasljeđivanje

Nasljeđivanje u OOP-u smanjuje dupliciranje koda, omogućavajući nam da izgradimo dio aplikacije na drugom dijelu tako što naslijedimo svojstva i metode tog dijela aplikacije. Primjer bi bio da klase poput Auto, Motocikl, Bus mogu imati potrebu za istim metodama i svojstvima.

Polimorfizam

U programiranju, polimorfizam je termin koji se koristi za opisivanje koda ili programa koji može obraditi mnoge vrste podataka vraćajući odgovor ili rezultat na osnovu datih podataka. Polimorfizam pomaže da eliminišemo kompleksne i nepotrebne "if" i "switch" naredbe, jer mogu postati dugi pri pisanju složenih programa.

Kao primjer enkapsulacije možemo pogledati način na koji pišemo private properties i metode, gdje na taj način ograničavamo ono što korisnik može da vidi i može da mijenja. Dakle, vidimo da koristimo malo neobičnu sintaksu, sa znakom # ispred property.

 

class Person {
  #firstName;
  #lastName;

  constructor(firstName, lastName) {
    this.#firstName = firstName;
    this.#lastName = lastName;
  }

  #getFullName() {
    return ${this.#firstName} ${this.#lastName};
  }
}

 

Zatim imamo primjer nasljeđivanja koji koristi ključnu riječ extends. Ovdje možemo vidjeti i polimorfizam, jer klasa Employee override-a metodu greet() koja je definisana u klasi Person.

 

class Employee extends Person {
  constructor(firstName, lastName, age, position) {
    super(firstName, lastName, age);
    this.position = position;
  }

  greet() {
    super.greet();
    console.log(`I work as a ${this.position}.`);
  }
}



Objektno Orijentisano Programiranje (OOP) predstavlja moćan pristup u razvoju JavaScript aplikacija. Kroz ovaj blog, istražili smo ključne koncepte OOP-a, i uvidjeli kako nam OOP omogućava organizaciju koda u logičke jedinice, olakšava održavanje i proširivanje aplikacija, i omogućava efikasno upravljanje složenim sistemima. Polimorfizam, na primjer, omogućava različitim objektima da se ponašaju na način koji je prirodan za njihov tip, čime se smanjuje potreba za dugim if-else nizovima.

Učenje i primjena OOP-a u JavaScriptu može poboljšati organizaciju vašeg koda, olakšati timsku suradnju i povećati ponovnu upotrebu koda. OOP nije samo programska paradigma, već i alat za rješavanje stvarnih problema na efikasan način.

 

Nadamo se da ste kroz ovaj blog stekli dublje razumijevanje OOP-a u JavaScriptu i da ćete primijeniti ove principe u svojim projektima.

Happy coding!