Osnovni principi objektno orjentisanog

Download Report

Transcript Osnovni principi objektno orjentisanog

Programski jezici
Da bi se premostile poteskoce u programiranju na asemblerskim jezicima ranih
50-ih godina 20.veka pocinju da se razvijaju i masinski nezavisni jezici ili jezici
viseg nivoa.
Koriscenjem jezika viseg nivoa naredbe i podaci se opisuju na nacin slican
prirodnom jeziku.
Osnovni jezik –masinski jezik
Na osnovu nacina prevodjenja i izvrsenja programa programe za prevodjenje
delimo na kompilatore i interpretatore .
Programski jezici koji se prevode kompilatorima nazivamo kompilatorski jezici
Fortran,Cobol, Algol…
Kod interpreterskih programa jedna po jedna instrukcija se prevodi i odmah
nakon prevodjenja izvrsava Lisp,Prolog Basic
U savremenim programskim jezicima kao sto je Java ili C# cest je kombinovani
pristup koji u sebi sadrzi i kompilatorske i interpreterske elemente.
Prvo se izvrsava kompilacija izvornog koda na masinski jezik virtuelne masine, a
zatim se instrukcije virtuelne masine interpretiraju na racunar na kome
izvrsavamo program.
Prema nacinu resavanja problema vise programske jezike delimo na :
1. Proceduralne –racunar dobija kompletan skup instrukcija za resenje
problema kako?
2. Deklarativne ima ugradjene postupke za resenje problema i njima
opisujemo STA? znamo o problemu i sta zelimoda dobijemo pozivajuci ga
(Prolog i SQL)
Posebnu klasu programskih jezika cine objektno orjentisani jezici , kod kojih
su prisutni i proceduralni i neproceduralni elementi.
Kod OOP podaci i postupci su objedinjeni u jednu celinu i cine aktivan
objekat, za razliku od podataka u proceduralnim jezicima koji su krajnje
pasivni.
Pristup podacima objekata kontrolise programer i moze im se pristupiti
samo unutar jednog objekta(koji ima svoje stanje i operacije koje
mozemo zahtevati za izvrsenje)
Primer: Posmatrajmo niz imena ucenika jednog odeljenja .
Kod proceduralnog
programiraja
Kod OOP
Niz imena se posmatra kao
skup pasivnih podataka
Niz imena je objedinjeno
Objekat-skup imena i
Objekat-skup akcija koji se
primenjuju nad tim imenima
Pisanje programa za rad sa
ovim nizom(dodavanje novog
ucenika ,brisanje…)
Koriscenje funkcije za rad
kojima objedinjujemo podatke
Razvoj OOP je omogucio jednostavnije kreiranje programa i timski rad
Osnovni principi
objektno orjentisanog
programiranja(OOP)
Principi OOP
Primer: Nastavni proces u skoli
Pera -ucenik IVa
razreda radi zadatak
iz matematike
Prof Laza
ucionica1
Profesor Mika
predaje svim
ucenicima odeljenja
Ivb novu lekciju iz
fizike
ucionica2
Osnovni objekti u ovom jednostavnom primeru su:
Pera,Mika,Laza,IVa,IVb ,matematika,fizika ucionica 1 i 2
Jasno je da nastavnim procesom koordinairaju Mika i Laza, da upoznaju ucenike sa
novim gradivom, da proveravaju znanje ucenika i ocenjuju ga.Oni imaju zajednicka
svojstva :
1. Ime
2. Strucna sprema
3. Predmet koji predaju
4. Godine staza
Oni pripadaju jednoj od klasa ucesnika u nastavnom procesu PROFESORI
Na isti nacin uocavaju se i klase Ucenik
1. Pera
2. Predmet
3. Odeljenje
Č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
rodjenja, 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.
Takodje, 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čunaruKaž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.
Nasledjivanje 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 nasledjuju 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 nasledjenih 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 ...).
U izvedenim klasama možemo predefinisati neke od nasledjenih 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.
Primer polimorfizma
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.