Objektno orijentirano programiranje naspram proceduralnog programiranja
Object Oriented Programming (OOP) i Procedural Programming su dvije paradigme programiranja. Programska paradigma je fundamentalni stil kompjuterskog programiranja, a razlikuju se po načinu na koji su različiti elementi programa predstavljeni i kako su definisani koraci za rešavanje problema. Kao što ime sugerira, OOP se fokusira na predstavljanje problema koristeći objekte iz stvarnog svijeta i njihovo ponašanje, dok se Proceduralno programiranje bavi predstavljanjem rješenja problema koristeći procedure, koje su kolekcije koda koji se izvode određenim redoslijedom. Postoje programski jezici koji podržavaju ključne aspekte OOP-a (zvani OOP jezici), Proceduralni (koji se nazivaju Proceduralni jezici) i oba. Ali jedna važna stvar koju treba napomenuti je da su OOP i Proceduralni dva načina predstavljanja problema koje treba riješiti, i nije bitno koji se jezik koristi. Drugim riječima, OOP jezici se mogu koristiti za proceduralno programiranje, dok se proceduralni jezici ponekad mogu koristiti za OOP, uz određeni napor.
Proceduralno programiranje je način programiranja identificiranjem skupa koraka za rješavanje određenog problema i tačnog redoslijeda kojim bi se oni trebali izvršiti da bi se postigao željeni ishod ili stanje. Na primjer, ako želite da izračunate završno stanje na kraju mjeseca za bankovni račun, tada bi potrebni koraci bili sljedeći. Prvo steknete početno stanje računa, a zatim smanjite sva zaduženja koja su nastala tokom mjeseca. Nakon toga dodajete sve iznose kredita koji su nastali tokom mjeseca. Na kraju procesa, dobićete zaključno stanje računa na kraju mjeseca. Jedan od glavnih koncepata proceduralnog programiranja je poziv procedure. Procedura poznata i kao potprogram, metoda ili funkcija sadrži uređenu listu instrukcija koje treba izvršiti. Procedura se može pozvati u bilo kom trenutku tokom izvršenja bilo kojom drugom procedurom ili sama po sebi. Primjeri proceduralnih programskih jezika su C i Pascal.
U OOP-u, fokus je na razmišljanju o problemu koji treba riješiti u smislu elemenata stvarnog svijeta i predstavljanju problema u smislu objekata i njihovog ponašanja. Objekt je struktura podataka koja vrlo liči na neki stvarni objekt. Objekti sadrže polja podataka i metode koje predstavljaju atribute i ponašanje objekata u stvarnom svijetu. Postoji nekoliko važnih OOP koncepata kao što su apstrakcija podataka, inkapsulacija, polimorfizam, razmjena poruka, modularnost i nasljeđivanje. Neki popularni OOP jezici su Java i C. Međutim, mogu se koristiti i za izvođenje proceduralnog programiranja.
Ključna razlika između OOP-a i proceduralnog programiranja je u tome što je fokus proceduralnog programiranja razbijanje programskog zadatka na kolekciju varijabli i potprograma, dok je fokus OOP-a razbijanje zadatka programiranja na objekti, koji enkapsuliraju podatke i metode. Najznačajnija razlika bi mogla biti u tome što dok Proceduralno programiranje koristi procedure za direktan rad na strukturama podataka, OOP će povezivati podatke i metode zajedno tako da će objekt raditi na svojim vlastitim podacima. Kada je u pitanju nomenklatura, procedura, modul, poziv procedure i varijabla u Proceduralnom programiranju se često u OOP-u nazivaju metodom, objektom, porukom i atributom.