Objektno usmerjeno programiranje (OOP) je model programskega jezika, ki se osredotoča na uporabo objektov namesto dejanj za izvajanje nalog. To vključuje pristop, ki se bolj zaveda podatkov in manj skrbi za logiko, kar je pogosteje v drugih programskih paradigmah. Pogled na predmete in dejanja je obraten od tega, kot je v drugih jezikih, in poudarek je na samih predmetih in ne na izvajanju nalog, ki uporabljajo predmete. Podobno struktura ne upošteva odločanja o uporabi logike, temveč o definiciji podatkov, ki bodo uporabljeni pri programiranju.
Oblikovanje računalniške programske opreme z objektno usmerjenim programiranjem se začne z definiranjem objektov, s katerimi bo program manipuliral. Programer bo nato začel ugotavljati razmerje med vsakim objektom, proces, ki se običajno imenuje modeliranje podatkov. V bistvu programer skuša predmete postaviti v klasifikacijo, s čimer pomaga definirati podatke, ki so del dedovanja, ki ga v nalogo prinese vsak predmet. Dejansko se proces definiranja teh razredov in podrazredov podatkov običajno imenuje dedovanje.
OOP pomaga tudi pri razvrščanju predmetov na način, ki omogoča polimorfizem. To pomeni, da se bodo različni objekti lahko odzvali na skupno sporočilo, vendar vsak na drugačen način, ki je edinstven za ta objekt. Hkrati ta vrsta programiranja omogoča inkapsulacijo predmeta, s čimer učinkovito skrije ali zaščiti podatke, povezane s predmetom, pred enostavnim ogledom brez varnostnega dostopa.
Ena od prednosti objektno usmerjenega programiranja je, da proces dobro izkorišča modularnost, kar pomeni, da so predmeti in naloge združeni tako, da je vsak modul sposoben samostojno obravnavati. To je lahko v veliko pomoč pri izboljšavah programa, saj modularnost omogoča reševanje naloge spreminjanja nastavitve enega dela programiranja, ne da bi to vplivalo na strukturo in funkcijo drugih modulov.