You are on page 1of 3

Osnovni principi objektno orijentisanog programiranja

Posmatrajmo nastavni proces u školi. Recimo da u učionici 1 učenik


IVa, Pera, radi zadatak iz matematike po zahtevu profesora Laze, a u
učionici 2 profesor Mika predaje svim učenicima odeljenja IVb novu lekciju iz
fizike. Sasvim je moguće da sutradan uloge profesora budu promenjene, pa
da profesor Mika u IVa ispituje ili predaje novu lekciju iz fizike, a profesor
Laza u IVb predaje novu lekciju iz matematike.
Već u ovom uprošćenom prikazu nastavnog procesa možemo uočiti
osnovne objekte koji učestvuju u njemu (Pera, Mika, Laza, IVa, IVb,
matematika, fizika, učionica 1…).
Lako se može uočiti da Mika i Laza koordiniraju nastavnim procesom,
da upoznaju učenike sa novim gradivom, da vrše proveru znanja učenika,
ocenjuju ga. Oni imaju i zajednička svojstva (ime, stručna sprema, predmet
koji predaju, godine staža). Samim tim oni pripadaju jednoj od klasa
učesnika u nastavnom procesu, klasi Profesor.
Na sličan način možemo uočiti i klase Ucenik (Pera), Predmet
(matematika, fizika) , Odeljenje (IVa, IVb)…
Čovek koristi računar kao pomoćno sredstvo u rešavanju raznih
problema. Rešavanje problema iz naše okoline je pravljenje modela te iste
okoline. U modeliranju koristimo intelektualne operacije, a pri tome je
osnovni alat apstrakcija. Osnovni nivo apstrakcije je uočavanje šablona za
objekte sa više zajedničkih osobina. Na osnovu tih šablona gradimo klase
kontrolisanim uključivanjem i isključivanjem nekih detalja o objektima, što
je još jedan nivo apstrakcije.
Posmatranjem svih učenika uočavamo njihova zajednička svojstva. Na
primer, za sve učenike u nastavnom procesu je potrebno pratiti ime,
prezime, datum roñenja, razred, odeljenje a nisu nam od značaja boja kose,
boja očiju i slično. Svojstva od važnosti za proces koji pratimo nazivamo
atributima. Takoñe, svim učenicima možemo pridružiti iste „akcije“ koje su
značajne za proces: učenik odgovara i dobija ocenu, učenik menja
odeljenje... Te akcije u okviru klase nazivamo metodima klase, i njima se
opisuje funkcionalnost objekata te klase.
Klasa Ucenik je uopštenje (apstrakcija) pojedinačnih učenika. Svaki
pojedinačni učenik je primerak (instanca) klase Ucenik, i opisan je skupom
vrednosti atributa te klase. Vrednost atributa ime za konkretnog učenika je
na primer „Pera”, a vrednost atributa razred je broj 4. „Pera” i broj 4 su
pojedinačni podaci.
Svaki objekat u objektno orijentisanom programiranju (u daljem
tekstu OOP) predstavlja samostalnu, zaokruženu, celinu koju možemo
uklapati sa drugim objektima u skladu sa potrebama i tako rešavati složenije
probleme. Svaki objekat u OOP ima svoja unutrašnja stanja, kao i skup
metoda ili akcija koje može da izvrši. Enkapsulacija, jedan od važnih
principa OOP, je postupak objedinjavanja stanja i ponašanja objekta u jednu
celinu. Tako organizovane objekte je lakše kontrolisati i onemogućiti
neovlašćen pristup. Korisnici sa objektom komuniciraju samo kontrolisano,
pomoću javnih metoda i ne mogu neovlašćeno menjati unutrašnja stanja
objekta. Samo internim metodima objekta omogućen je pristup tim
stanjima. Ovakav pristup omogućava lakše organizovanje tima programera u
razvijanju istog projekta. Svaki član tog tima lako može koristiti sve objekte
koji su drugi članovi tima razvili, poznavajući samo načine komunikacije sa
objektima, bez poznavanja njihove realizacije.
Posmatrajmo klasu Dugme(button) na računaru. Na slici koja sledi
vidimo tri takva objekta. Kažemo da su oni instanca klase Dugme. Svi oni
mogu da prime iste poruke. Na njih se primenjuju isti metodi (npr. dugme je
pritisnuto...), imaju istu funkcionalnost. Funkcionalnosti koje imaju dobijene
su iz opšte klase Dugme.
Nasleñivanje je još jedna važna osobina jezika OOP. Ono je posledica
generalizacije kao metoda za modelovanje objekata. Na primer u nastavnom
procesu možemo polazeći od klasa Ucenik, Profesor uočavajući njihove
zajedničke atribute i metode napraviti novu klasu Osoba. Tu operaciju
nazivamo generalizacijom a obrnutu operaciju specijalizacijom.
Na primer, kažemo da se klasa Osoba specijalizuje u klasu Ucenik,
Profesor. Sve klase koje su dobijene specijalizacijom nasleñuju sve atribute i
metode osnovne ili generičke klase. Na primer, metod promeni_adresu
osnovne klase Osoba možemo primenjivati na objekte klase Ucenik jer je
klasa Ucenik izvedena klasa iz klase Osoba. Isto tako atribut prezime klase
Osoba imai svaki od objekata izvedenih klasa Ucenik i Profesor. Izvedene
klase osim nasleñenih osobina i funkcionalnosti mogu posedovati i neke
specifične koje ih dodatno karakterišu. Na primer, klasu Ucenik opisujemo
dodatnim atributima (razred, ocene, ...) i funkcionalnostima (odrediProsek,
uciLekciju ...).
Koncept nasleñivanja je od velike pomoći programerima. Izmeñu
ostalog obezbeñuje redukciju i lakše održavanje koda (zajedničke osobine i
funkcionalnosti pišu se samo jednom a njihove eventualne izmene vršimo
samo u osnovnoj klasi).
U izvedenim klasama možemo predefinisati neke od nasleñenih
funkcionalnosti u skladu sa specifičnostima izvedene klase. Na taj način je
omogućeno da objekti različitih izvedenih klasa reaguju različito izvršavajući
istu funkcionalnost osnovne klase. Osobina da se isti metod osnovne klase
izvršava na različite načine, u zavisnosti od toga kojoj izvedenoj klasi
objekat koji ga poziva pripada, naziva se polimorfizam.
Većina savremenih aplikacija za obradu dokumenata podržava
štampanje dokumenata bez obzira što u trenutku pisanja aplikacija
programer nema informaciju o vrsti štampača instaliranog na konkretni
računar. Programer u kodu koristi objekat klase Printer i poziva njegov
metod Print. Način realizacije tog metoda biće odreñen u trenutku
izvršavanja programa prilikom izbora konkretnog štampača koji je povezan
na računar na kome se izvršava program. Metod Print konkretnog štampača
realizovan je u programu koji prilagoñava štampač aktuelnom operativnom
sistemu (drajver). Ovako nešto je moguće zahvaljujući nasleñivanju i
polimorfizmu jer su svi štampači izvedeni iz osnovne sistemske klase Printer.
Koncept OOP podržavaju i novi, savremeni, programski jezici tako da
se može pretpostaviti da će osnovni principi OOP opstati i u ovako brzom
razvoju informacionih tehnologija. Svakako donekle modifikovani i
prilagoñeni novostima ali će ipak opstati.

You might also like