Objektinis programavimas

 NoFonti.svg  Šiam straipsniui ar jo daliai trūksta šaltinių ar nuorodų į juos.
Jūs galite padėti Vikipedijai įrašydami tinkamas išnašas ar nuorodas į šaltinius.

Objektinis programavimas, trumpiau OOP (angl. Object-Oriented Programming) – programavimo paradigma, kompiuterinių programų architektūroje naudojanti objektus ir jų sąveikas. Beveik visos dabartinės programavimo kalbos turi patogias OOP programavimo galimybes.[reikalingas šaltinis] Kai kurios yra pilnai sukurtos šiuo pagrindu, pavyzdžiui, Java, Smalltalk, C++, Delphi ar C#.

Objektiškai programuoti galima bet kuria kalba[reikalingas šaltinis], tik jei nėra specialiai tam skirtų priemonių, gali būti žymiai sunkiau rašyti kodą ir jį suprasti.

Pagrindinės koncepcijosKeisti

  • Objektas – duomenų ir susijusio funkcionalumo talpinimas į vientisus vienetus; objektai padeda pasiekti moduliškumą ir nusako objektinės programos struktūrą.
  • Abstrakcija – galimybė programuoti nežinant konkrečių detalių apie informaciją.[reikalingas šaltinis]
  • 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.
  • Polimorfizmas – objektiškai orientuotos kalbos nekviečia paprogramių, bet siunčia pranešimus, todėl konkretus į pranešimą reaguojantis metodas priklauso nuo objekto, ne nuo siuntėjo. Tai leidžia dirbti su bendresnio tipo objektais (pvz., paukštis), nežinant konkretaus tipo (pvz., strutis ar pingvinas), dėl to nereikia kiekvienam konkrečiam tipui rašyti atskiro kodo.
  • Paveldėjimas- Objektų organizavimas specializuojant egzistuojančius bendresnius tipus, papildant ar iš dalies pakeičiant funkcionalumą.
  • Klasė - aprašas, nusakantis tam tikro tipo objektų duomenų struktūrą ir manipuliavimo jais taisykles (elgesį). Pavyzdžiui, jei aprašome klasę „Žmogus“, galėsime kurti šios klasės objektus kiekvienam konkrečiam asmeniui, šie objektai turės bendrą duomenų struktūrą, tačiau skirtingas reikšmes (skirsis ūgis, svoris, lytis, vardas).