Ukoliko ste upoznati sa osnovama programiranja, ili počeli da se interesujete za neki programski jezik, verovatno ste naišli na izraz Objektno orijentisano programiranje (OOP). U narednom tekstu pokušaćemo da vam približimo ovaj način programiranja, koristeći jednostavne primere.
PROCEDURALNO PROGRAMIRANJE
Rani programski jezici su bili takozvani Proceduralni – zato što bi programer definisao skup procedura, koje bi računar potom obrađivao.
Proceduralno programiranje koristi listu instrukcija da kaže kompjuteru šta da radi korak po korak. Proceduralno programiranje se, kao što je navedeno, oslanja na procedure. Procedura sadrži niz koraka koje treba izvršiti.
Proceduralni programski jezici poznati su i kao top-down jezici, odnosno preocedure se izvršavaju redom odozgo na dole.
Većina ranih programskih jezika je proceduralna. Primeri proceduralnih jezika uključuju Fortran, COBOL i C, koji su prisutni još od šezdesetih i sedamdesetih godina, a pored njih tu su i BASIC i Pascal.
Proceduralno programiranje se i dalje koristi, ali kada želite da programirate nešto izvan osnovnog niza koraka, proceduralni jezici mogu postati teški za upravljanje. Tu nastupa objektno orijentisano programiranje.
OBJEKTNO ORIJENTISANO PROGRAMIRANJE
Prvi objektno orijentisan programski jezik (Simula ) uveo je ideju o objektima. Objekti su skupovi informacija koje se tretiraju kao jedinstven entitet. O tome će biti više reči u nastavku teksta, ali, pre toga potrebno je spomenuti pojam Klasa u objektno orijentisanom programiranju.
Klase definišu objekat, odnosno one sadrže atribute i metode koje objekat treba da ima. Da bi se kreirao objekat, potrebno je prethodno imati klasu. Klase, dakle, predstavljaju neku vrstu šablona, prema kome se kreiraju objekti, što nas dalje navodi da klase mogu imati više objekata.
Možemo, na primer imatu klasu koja se zove Auto.
Atributi predstavljaju osobine objekta – na primeru automobila, to bi bili marka automobila, boja, broj vrata itd.
Metode predstavljaju operacije koje objekat izvršava – na primeru automobila metode bi bile: kreni, zaustavi, ubrzaj i sl.
Kada smo definisali klasu, možemo napraviti njenu instancu – odnosno objekat. Objekat možemo nazvati MojAuto i unutar njega navesti njegove atribute (na primer, opel, siva boja, 5 vrata). Nakon toga možemo pozvati i željenu metodu/funkciju.
Neki od poznatih objektno orijentisanih programskih jezika su: Java, Swift, Ruby, PHP, C#, C++
KONCEPTI OBJEKTNO ORIJENTISANOG PROGRAMIRANJA
Nasleđivanje
Nasleđivanje je koncept u Objektno orijentisanom programiranju, koji označava da klasa može imati svoje izvedene klase – podklase. U primeru koji smo naveli, klasa Auto (koja bi sada bila bazna klasa) može imati podklase, na primer prema vrsti vozila, koja bi mogla da ima svoje atribute i metode. Tako bi, klasa Auto, imala podklase – Limuzina, Karavan, Sportski automobil i sl. Objekti u podklasama bi nasleđivali sve atribute i metode od bazne klase, kao i od izvedene klase kojoj pripadaju.
Enkapsulacija i Apstrakcija
Enkapsulacija predstavlja nivoe zaštite atributa ili funkcija u okviru jedne klase.
Postoje 3 nivoa zaštite:
– Public – odnosno određena funkcija/atribut je dostupna bilo gde u okviru programa, odnosno i izvan same klase u kojoj su definisani
– Protected – funkcija/atribut je dostupna u okviru klase i njenih izvedenih klasa
– Private – funkcija/atribut je dostupna samo u okviru klase
Zbog čega je ovo važno?
Zaštita određenih funkcija/atributa je važna, prvenstveno iz sigurnosnih razloga. Osim toga, kako bi sam kod bio „čistiji“, jer nam nije potrebno da svaka klasa u okviru programa može da koristi sve elemente drugih klasa. Navešćemo ponovo primer automobila: Kao vozač automobila, vama nije potrebno da znate kako funkcioniše svaki deo automobila (motor, menjač, brisači). Automobil mora da poseduje sve te komponente, a vama kao vozaču je potrebno da imate mogućnost da, na primer, uključite brisače, ali vam nije neophodno da znate na koji način oni rade. Ovaj proces, u kome prikazujete samo relevantne podatke i sakrivate nepotrebne detalje o objektu od korisnika naziva se Apstrakcija.
Polimorfizam
Polimorfizam u Objektno orijentisanom programiranju predstavlja koncept prema kome se metoda ponaša različito u različitim objektima. U primeru automobila, u klasi Auto, možemo, na primer imati metodu Uključi ili Isključi. Ova metoda se može koristiti i za Brisače i za Svetla, ali je razlika u tome šta oni zapravo rade.