Objektinis programavimas

Objektinis programavimas, trumpiau OOP (angl. Object-Oriented Programming) – programavimo paradigma, kompiuterinių programų architektūroje naudojanti objektus ir jų sąveikas. 

Daugelis naujesnių programavimo kalbų (Pascal, Python, Java, C++) turi specialias, objektinį programavimą labai palengvinančias galimybes. Tačiau objektinis programavimas įmanomas ir tam specialiai neskirta programavimo kalba, neretai taip programuojama C.

Svarbios objektinio programavimo kalbos yra: Java, C++, C#, Python, R, PHP, Visual Basic.NET, JavaScript, Ruby, Perl, SIMSCRIPT, Object Pascal, Objective-C, Dart, Swift, Scala, Kotlin, Common Lisp, MATLAB ir Smalltalk.

Pagrindinės sampratos 
Objektinis programavimas pagrįstas šiomis sampratomis:
 Objektas – programavimo vienetas, apimantis objektą aprašančią duomenų struktūrą bei darbui su ja skirtas funkcijas (metodus). Pati duomenų struktūra yra pirmasis šių funkcijų parametras. Daugelyje kalbų jis suprantamas savaime ir nerašomas, kitose (Python) rašomas kaip self. 
 Paveldėjimas- Objektų organizavimas specializuojant egzistuojančius bendresnius tipus, papildant ar iš dalies pakeičiant funkcionalumą. Pavyzdžiui, galimas abstraktesnis objektas „vabzdys“ su vabzdžio elgesiui ar išvaizdai modeliuoti skirtu kodu bei duomenų struktūromis. Jo pagrindu toliau gali būti kuriami objektai „musė“ ir „drugelis“ kur pridedama tik nedaug būtent šiam vabzdžiui specifinio kodo bei papildomų duomenų.
 Polimorfizmas – galimybė dirbti su objektu nežinant jo tikslaus tipo bei struktūros. Pavyzdžiui, bet kokį vabzdį aprašantis objektas gali turėti funkciją (metodą) nupiešk, kurią iškvietus, priklausomai nuo objekto, ekrane bus atvaizduota musė, drugelis ar koks kitas vabzdys. Ši samprata dar vadinama „abstrakcija“, nes gali būti dirbama su „abstrakčiais objektais“. Patys objektai visgi turi apie save žinoti, kas jie yra. Techniškai objekto duomenų struktūroje būna jo tipą nusakantis laukelis.
 Inkapsuliacija (informacijos slėpimas) – užtikrina, kad objekto naudotojas negali pakeisti objekto būsenos nenumatytu būdu. Tik objekto vidiniai metodai turi galimybę keisti objekto būseną. Objektas pateikia interfeisą (sąsają), nusakančia galimybes manipuliuoti objektu.
 Klasė – konkretus objekto tipas. Pavyzdžiui, gali būti programa aprašanti 8000 bičių spiečių. Šiuo atveju kiekviena bitė gali būti objektas, turintis jam būdingas savybes (padėtis erdvėje, greitis). Visos jos gali būti vienos klasės (Bitė) objektai, ir kuo nors skirtis nuo kitus vabzdžius aprašančių klasių.

Šaltiniai 

Objektinis programavimas