Osnovni koncepti objektnega programiranja

Razredi

Razred (ang. class) je načrt oziroma recept za izdelavo objektov. To je del kode, ki v programu definira:

  • kje in kakšne tipe podatkov bodo objekti, izdelani iz razreda, shranjevali in
  • funkcije, ki jih bodo ti objekti vsebovali.

Ko gradimo oziroma izdelujemo objektno usmerjeno aplikacijo najprej ugotovimo, katere različne tipe entitet v aplikaciji potrebujemo. Običajno v knjižnicah nimamo na voljo vseh ustreznih. Zato ustvarimo enega ali več razredov, ki predstavljajo manjkajoče tipe entitet. Če na primer izdelujemo spletni forum, potem bomo zelo verjetno ustvarili razrede, imenovane Forum, Tema, Objava in Oseba. Predstavljamo si lahko, da z razredom ustvarimo nov podatkovni tip.

Objekti

Objekt (ang. object) je posebna vrsta spremenljivke, ki je izdelana oziroma ustvarjena iz razreda. Vsebuje dejanske podatke in vedenje o tem, katere so funkcije objekta, ki jih lahko pokličemo, da nekaj naredijo s podatki objekta. Iz enega razreda lahko ustvarimo poljubno mnogo objektov te vrste. Vsak objekt deluje neodvisno od drugih, čeprav vsi izvirajo iz istega razreda.

Če uporabimo primer iz resničnega življenja:

  • Razred je kot načrt za avto. Definira, kako bo avto, ki ga bomo izdelali po tem načrtu, izgledal in kako se bo obnašal, še vedno pa je to abstrakten koncept. Če imamo le načrt, s tem še nimamo nobenega avtomobila.
  • Objekt je resničen avto, ki ga izdelamo po načrtu. Ima resnične lastnosti (na primer kakšne barve je, kakšna je njegova trenutna hitrost itd.) in resnično obnašanje (na primer »pospeši« in »zaviraj«).

Ker objekt izdelamo iz razreda, pogosto rečemo, da je objekt primerek (ang. instance) razreda.

Lastnosti

Vrednosti podatkov, ki jih vsebuje objekt, so shranjene v posebnih spremenljivkah, ki jih imenujemo lastnosti (ang. properties). Lastnosti objekta so tesno povezane s samim objektom. Čeprav imajo vsi objekti, ki jih ustvarimo iz danega razreda, iste lastnosti, se vrednosti teh lastnosti med posameznimi objekti razlikujejo.

Metode

Funkcije, ki so definirane znotraj razreda – in uporabljene v objektu – imenujemo metode (ang. methods). V veliko pogledih so to kot običajne funkcije – lahko jim posredujemo vrednosti, lahko vsebujejo lokalne spremenljivke in lahko vračajo vrednosti. Vendar metode objekta tipično uporabljamo za delo z lastnostmi objekta.

Na primer metoda prijava(), ki jo uporabimo, da prijavimo člana v spletni forum, nastavi članovo lastnost prijavljen na resnično oziroma True. Podobno bo metoda obseg() v razredu Pravokotnik iz podatkov o pravokotniku izračunala in vrnila njegov obseg.

Metode se od funkcij razlikujejo tudi po tem, da vedno »vedo«, nad katerim objektom jih izvajamo.