Objektno orijentirano programiranje (OOP) je model programskog jezika koji se usredotočuje na korištenje objekata umjesto akcija za izvršavanje zadataka. To uključuje pristup koji više vodi računa o podacima i manje se bavi logikom, što je češći slučaj u drugim programskim paradigmama. Pogled na objekte i radnje obrnut je od onoga u drugim jezicima, a naglasak je na samim objektima, a ne na izvršavanju zadataka koji koriste objekte. Na sličan način, struktura ne razmatra odlučivanje o tome kako primijeniti logiku, već o definiciji podataka koji će se koristiti u programiranju.
Dizajniranje računalnog softvera s objektno orijentiranim programiranjem počinje definiranjem objekata kojima se manipulira programom. Programer će tada početi identificirati odnos između svakog objekta, što je proces koji se obično naziva modeliranje podataka. U suštini, programer nastoji smjestiti objekte u klasifikaciju, čime pomaže u definiranju podataka koji su dio nasljeđivanja koje svaki objekt donosi zadatku. Zapravo, proces definiranja ovih klasa i podklasa podataka obično se naziva nasljeđivanjem.
OOP također pomaže sortirati objekte na način koji omogućuje polimorfizam. Odnosno, različiti objekti će moći odgovoriti na zajedničku poruku, ali svaki na drugačiji način koji je jedinstven za taj objekt. Istodobno, ova vrsta programiranja omogućuje inkapsulaciju objekta, učinkovito skrivajući ili štiteći podatke povezane s objektom od jednostavnog pregleda bez sigurnosnog pristupa.
Jedna od prednosti objektno orijentiranog programiranja je da proces dobro koristi modularnost, što znači da su objekti i zadaci grupirani na način da je svaki modul sposoban za neovisno razmatranje. Ovo može biti od velike pomoći pri poboljšanju programa, budući da modularnost omogućuje rješavanje zadatka izmjena u postavljanju jednog dijela programiranja bez utjecaja na strukturu i funkciju drugih modula.