Osnovni principi objektno orijentisanog programiranja
Posmatrajmo nastavni proces u koli. Recimo da u uionici 1 uenik
IVa, Pera, radi zadatak iz matematike po zahtevu profesora Laze, a u uionici 2 profesor Mika predaje svim uenicima odeljenja IVb novu lekciju iz fizike. Sasvim je mogue 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 uproenom prikazu nastavnog procesa moemo uoiti osnovne objekte koji uestvuju u njemu (Pera, Mika, Laza, IVa, IVb, matematika, fizika, uionica 1). Lako se moe uoiti da Mika i Laza koordiniraju nastavnim procesom, da upoznaju uenike sa novim gradivom, da vre proveru znanja uenika, ocenjuju ga. Oni imaju i zajednika svojstva (ime, struna sprema, predmet koji predaju, godine staa). Samim tim oni pripadaju jednoj od klasa uesnika u nastavnom procesu, klasi Profesor. Na slian nain moemo uoiti i klase Ucenik (Pera), Predmet (matematika, fizika) , Odeljenje (IVa, IVb) ovek koristi raunar kao pomono sredstvo u reavanju raznih problema. Reavanje problema iz nae okoline je pravljenje modela te iste okoline. U modeliranju koristimo intelektualne operacije, a pri tome je osnovni alat apstrakcija. Osnovni nivo apstrakcije je uoavanje ablona za objekte sa vie zajednikih osobina. Na osnovu tih ablona gradimo klase kontrolisanim ukljuivanjem i iskljuivanjem nekih detalja o objektima, to je jo jedan nivo apstrakcije. Posmatranjem svih uenika uoavamo njihova zajednika svojstva. Na primer, za sve uenike u nastavnom procesu je potrebno pratiti ime, prezime, datum roenja, razred, odeljenje a nisu nam od znaaja boja kose, boja oiju i slino. Svojstva od vanosti za proces koji pratimo nazivamo atributima. Takoe, svim uenicima moemo pridruiti iste akcije koje su znaajne za proces: uenik odgovara i dobija ocenu, uenik menja odeljenje... Te akcije u okviru klase nazivamo metodima klase, i njima se opisuje funkcionalnost objekata te klase. Klasa Ucenik je uoptenje (apstrakcija) pojedinanih uenika. Svaki pojedinani uenik je primerak (instanca) klase Ucenik, i opisan je skupom vrednosti atributa te klase. Vrednost atributa ime za konkretnog uenika je na primer Pera, a vrednost atributa razred je broj 4. Pera i broj 4 su pojedinani podaci.
Svaki objekat u objektno orijentisanom programiranju (u daljem
tekstu OOP) predstavlja samostalnu, zaokruenu, celinu koju moemo uklapati sa drugim objektima u skladu sa potrebama i tako reavati sloenije probleme. Svaki objekat u OOP ima svoja unutranja stanja, kao i skup metoda ili akcija koje moe da izvri. Enkapsulacija, jedan od vanih principa OOP, je postupak objedinjavanja stanja i ponaanja objekta u jednu celinu. Tako organizovane objekte je lake kontrolisati i onemoguiti neovlaen pristup. Korisnici sa objektom komuniciraju samo kontrolisano, pomou javnih metoda i ne mogu neovlaeno menjati unutranja stanja objekta. Samo internim metodima objekta omoguen je pristup tim stanjima. Ovakav pristup omoguava lake organizovanje tima programera u razvijanju istog projekta. Svaki lan tog tima lako moe koristiti sve objekte koji su drugi lanovi tima razvili, poznavajui samo naine komunikacije sa objektima, bez poznavanja njihove realizacije. Posmatrajmo klasu Dugme(button) na raunaru. Na slici koja sledi vidimo tri takva objekta. Kaemo 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 opte klase Dugme. Nasleivanje je jo jedna vana osobina jezika OOP. Ono je posledica generalizacije kao metoda za modelovanje objekata. Na primer u nastavnom procesu moemo polazei od klasa Ucenik, Profesor uoavajui njihove zajednike atribute i metode napraviti novu klasu Osoba. Tu operaciju nazivamo generalizacijom a obrnutu operaciju specijalizacijom. Na primer, kaemo da se klasa Osoba specijalizuje u klasu Ucenik, Profesor. Sve klase koje su dobijene specijalizacijom nasleuju sve atribute i metode osnovne ili generike klase. Na primer, metod promeni_adresu osnovne klase Osoba moemo 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 nasleenih osobina i funkcionalnosti mogu posedovati i neke specifine koje ih dodatno karakteriu. Na primer, klasu Ucenik opisujemo dodatnim atributima (razred, ocene, ...) i funkcionalnostima (odrediProsek, uciLekciju ...). Koncept nasleivanja je od velike pomoi programerima. Izmeu ostalog obezbeuje redukciju i lake odravanje koda (zajednike osobine i funkcionalnosti piu se samo jednom a njihove eventualne izmene vrimo samo u osnovnoj klasi). U izvedenim klasama moemo predefinisati neke od nasleenih funkcionalnosti u skladu sa specifinostima izvedene klase. Na taj nain je omogueno da objekti razliitih izvedenih klasa reaguju razliito izvravajui istu funkcionalnost osnovne klase. Osobina da se isti metod osnovne klase
izvrava na razliite naine, u zavisnosti od toga kojoj izvedenoj klasi
objekat koji ga poziva pripada, naziva se polimorfizam. Veina savremenih aplikacija za obradu dokumenata podrava tampanje dokumenata bez obzira to u trenutku pisanja aplikacija programer nema informaciju o vrsti tampaa instaliranog na konkretni raunar. Programer u kodu koristi objekat klase Printer i poziva njegov metod Print. Nain realizacije tog metoda bie odreen u trenutku izvravanja programa prilikom izbora konkretnog tampaa koji je povezan na raunar na kome se izvrava program. Metod Print konkretnog tampaa realizovan je u programu koji prilagoava tampa aktuelnom operativnom sistemu (drajver). Ovako neto je mogue zahvaljujui nasleivanju i polimorfizmu jer su svi tampai izvedeni iz osnovne sistemske klase Printer. Koncept OOP podravaju i novi, savremeni, programski jezici tako da se moe pretpostaviti da e osnovni principi OOP opstati i u ovako brzom razvoju informacionih tehnologija. Svakako donekle modifikovani i prilagoeni novostima ali e ipak opstati.