Uvod v Objektno usmerjeno programiranje

(osnovni pojmi in koncepti)

V splošnem za programiranje lahko trdimo, da z njim modeliramo realen svet :

Objektno orientirano programiranje (OOP) je osnovano na objektih in relacijah med njimi. V primerjavi s (klasičnim) proceduralnim programiranjem v modeliranje oz. programiranje vnaša nove koncepte in termine :

  • objekt
  • razred
  • sporočilo
  • vmesnik
  • ...
  • ograjevanje
  • večobličnost
  • dedovanje
  • abstrakcija
  • ...

Mastno odebeljeni so tisti, ki si jih bomo ogledali v tem dokumentu.

Tipičen (ne edini) način reševanja problemov s proceduralnim programiranjem bi šel nekako takole:

Nekaj najpogostejših problemov, ki nastopajo pri proceduralnem pristopu k programiranju je

V realnem svetu procesi niso tako preprosti, kot so predstavljeni s proceduralnim principom:

da vstopiš v stranišče v stanovanju na Spodnjedupleški 36, ni dovolj, da veš kako to narediti, .. in to narediti, temveč moraš ponavadi vsaj zaprositi za dovoljenje, …

Objekti

Objekti so fizične in konceptualne stvari, ki jih najdemo v svetu okoli sebe.

Primeri objektov so tako :

  • strojna oprema,
  • programska oprema
  • dokumenti
  • ljudje
  • in celo koncepti (principi)

 

Struktura objektov (realnega sveta)

Objekt opredeljujeta :

Obnašanje opredeljuje kaj objekt "zna". Programsko je obnašanje realizirano s programsko kodo oz. podprogrami oz. metodami.

Objekt lahko smatramo za "stvar" ki lahko izvaja določen nabor aktivnosti. Ta nabor aktivnosti določa objektovo obnašanje.

Če je npr. "StatusDijaka" objekt, ahko ta nekaj pove o ocenah, šolskem letu, ali predmetih, ki jih dijak obiskuje tekoče šolsko leto.
Objekt "Dijak" lahko pove 'svoje' ime ali pa naslov med šolanjem.

Stanje objekta definira, kaj objekt "je". Programsko je tako realizirano z opisnimi atributi oz. podatki oz. lastnostmi.

Vsak objekt mora vsebovati (shranjevati) informacijo o tem, kako bo izvedel določeno aktivnost (kako se bo obnašal)

Nekateri objekti vsebujejo tudi podatke (spremenljivke) za podporo izvedbe zahtevanega obnašanja.

Ograjevanje

"le aktivnost objekta lahko spremeni stanje tega objekta"

poglejmo si par primerov :

Če omejimo spremembe stanja na lastne aktivnosti objekta to pomeni :

Princip s temi zakonitostmi imenujemo ograjevanje.

Ograjevanje objekta ne sme voditi k samozadostnosti objekta. V realnem svetu (vsak v tistem, ki se vrti tako hitro kot naš) nikoli ne obstaja en sam, izoliran, samozadosten objekt (obrnite se okoli sebe !). Npr. ljudje smo odvisni drug od drugega.
Ali potrebujemo ramo nekoga, da se na njej zjokamo,ali trgovino, da v njej kupimo čevlje, ... Tako v primeru nastopa večih objektov nastopi tudi potreba po komunkaciji med njimi.

Sporočila

.Objekti med seboj komunicirajo tako, da si izmenjujejo sporočila:



Za sporočilo lahko potemtakem rečemo, da je sredstvo za komunikacijo med objekti.

Komunikacija med objekti zaradi ograjevanja lahko predstavlja problem: ker smo aktivnosti in stanja zaprli v obseg, objekt načeloma nima možnosti komunikacije s svetom v katerem eksistira.

Vmesnik (objekta)

Nabor aktivnosti, ki drugim objektom omogoča, da dobijo vpogled v stanje tega objekta, ga spremenijo ali sprožijo njegovo aktivnost

 

Dejansko predstavlja tisti nabor aktivnosti, ki je “javno” dostopen .
Vmesnik lahko vsebuje tudi del stanja objekta, čeprav to ni najbolj običajno (beri: zaželeno).

Pošiljanje sporočil med objekti dejansko sedaj pomeni proženje aktivnosti vmesnika objekta, kateremu sporočilo pošiljamo. Programsko tak vmesnik realiziramo z javnimi metodami.

Aktivni objekti (akterji, actors)

Ponavadi stanje objekta spremeni aktivnost tega objekta, ki je bila povzročena preko vmesnika (prožena od zunaj), ni pa to nujno. Tipično tako ločimo 2 vrste objektov:

AKTERJI (aktivni objekti) so vrsta objektov, ki so možni svoje stanje samostojno (spontano) spreminjati.

Razred , primerki razredov, objekti, tovarna objektov

Za razred obstaja več definicij, v nadaljevanju bi uporabil naslednjo :


“class is `instance factory‘. " oz. razred je “tovarna” primerkov:

Značilno za tovarno je, da vsebuje vzorec in mehanizem, ki pove, kako izdelati izdelek.

Izdelek oz. primerek razreda je lahko objekt ( v primeru, da ga materializiramo)

Večobličnost

Večobličnost ali polimorfnost je lastnost, ki govori o tem, da se objekti v danih situacijah lahko različno obnašajo. Lastnost za nas ni nova, ker je v Java polimorfnost definirana že na nivoju metod. Obnašanje oz. metodo tu enolično določijo ime, število in vrsta parametrov. Če zanemarimo parametre, lahko rečemo, da se klic metode z istim imenom lahko različno izvrši.

Podobno je z objekti:

za primer si vzemimo aktivnost prehranjevanja živih bitij: človeka, ribe in mačke:

opazimo lahko, da kljub temu, da vsi trije objekti jedo, to počno na precej različne načine. Človeka ne bi komentiral, mačka si pomaga z jezikom, velika riba golta...

Dedovanje

je princip, ki nam omoga da na osnovi nekega objekta naredimo novega, ki je praktično enak tistemu, iz katerega smo ga naredili, le morda je bolj popoln oz. je bolj specializiran.Postopek poznamo iz realnega življenja, kjer dve osebi različnih spolov spočneta novo osebo, ki pa ima značilnosti tako ene kot druge osebe. Ali pa zakonitost dedovanja premoženja, kjer ima po smrti staršev naslednik vse dobrine, ki sta jih pred tem imela starša (recimo, da zanemarimo, da si je država vzela svoje preko davščin), ...

Pri dedovanju se v splošnem dedujejo tako aktivnosti, kot tudi lastnosti nekega objekta.

Primer :

recimo da imamo dva objekta; kvadrat in pravokotnik. Za pravokotnik lahko trdimo, da je v osnovi enak kvadratu, le da ima namesto ene, specificirani dve dolžini za stranice. Logično je torej pravokotnik kvadrat z dodatnim stanjem, ki predstavlja dolžino druge stranice: