Objektno orijentisano programiranje (OOP) u računarstvu je jedna od programskih paradigmi. Od ranih 1980-ih pa do danas ova paradigma je postala najuticajnija paradigma u komercijalnom razvoju softvera. Programski jezici poput C++ i Java programski jezik su svojom popularnošću utvrdili vodeći status OOP-a kao de facto obaveznog pristupa pri razvoju softvera danas, te i jezici koji tradicionalno nisu bili objektno orijentisani su naknadno dodali OOP koncepte (npr. Visual Basic, Pascal programski jezik itd.).
Davor
instanca Osobe
je runtime reprezentacija Osobe u programskom prostoru. Svaki objekat ima samo svoju informaciju (stanje) koje može biti dijeljeno između više instanci, što se u računarstvu zove reentrant. Tako npr. naš Mujo objekat bi imaoime::"Davor Tokić"
spol::"Muški"
godiste::"1962"
.ideNaPosao()
, kojom Mujo ide na posao biciklom, onda kad on kupi auto i ide autom na posao, ta promjena je skrivena unutar metode koja samo prikaže rezultat (tj. da je na putu na posao a ne čime ide).preselioNaAhiret()
, te klasu Ženu koja također proširuje klasu Osoba ali ima metodu preselilaNaAhiret()
. I Muškarac i Žena nasljeđuju činjenike ime, spol i godište, te metodu, tj. ponašanje umri() (i muškarci i žene umiru) ali se samo objekat muškarca preselioNaAhiret()
dok se žena preselilaNaAhiret()
.sahrana()
može biti implementirana kao ukopavanje, kremiranje ili mumifikacija.Ubiti, klasa je poput arhitektonskog nacrta zgrade, po kojoj graditelj (kompajler i linker), tj. izvođač radova (runtime) je u stanju da izgradi objekat te zgrade.
Algol Fortran LISP
1960
PL/1 Simula Smalltalk-72 Cobol
1970
Prolog Smalltalk-76 Smalltalk-74 Smalltalk-78 Smalltalk-80 Loops Pascal C
1980
Eiffel Ada C++ ObjectPascal Objective C CLOS
1990
Ada 9 Delphi Java ObjectCobol
2000
C#
Najbolji način za razumijevanje šta je to objektno orijentisano programiranje je da se razumiju razlike između strukturalnog i objektno orijentisanog programiranja. Te razlike se fundamentalne.
o Zadaci se uvijek u manje razvojene korake razgrađuju o Top-Down izrada o Podaci u poređu sa funkcijama igraju podređenu ulogu
o Fundament grade objekti a ne funkcije i procedure +Objekat je manje ili vise apstraktan element u oblasti primjene +Objekti i tipovi objekata (klase) predstavljaju podatke, koji imaju sopstvene funkcije, i samo od tih sopstvenih funkcija smiju biti obrađivane o Objekti su ustvari struktura podataka, koji imaju jedan poseban odnos, koji je u metodama utvrđen
Ključna razlika između klasičnog proceduralnog programiranja i objektno orijentisanog programiranja je nepostojanje jasne podele na podatke i funkcije/operacije koje se treba nad podacima izvršiti.
Naime, u objektno orijentisanom programiranju - polazi se od toga da se za bilo kakvu operaciju koristi podatak a da se nad svakim podatkom može izvršiti određeni niz operacija/radnji koje za taj podatak imaju smisla - stoga se umjesto razdvajanja na podatke i funkcije koje procesiraju podatke na određene načine, podacima direktno definišu metodi za operisanje nad njima samima.
umjesto:
podatak A (broj) funkcija smanji_za_jedan(broj) pa se obrada vrsi zvanjem fukcije smanji_za_broj(A) koja izvrši smanjivanje vrednosti brojcanog podatka A za jedan
koristi se:
podatak A (broj) metod podatka A poznaje metod smanji_za_jedan odnosno - da bi smanjili A za jedan jednostavno mu kazemo A.smanji_za_jedan