120 likes | 373 Views
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.
E N D
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.
Premanacinuresavanjaproblema vise programskejezikedelimona : Proceduralne –racunardobijakompletanskupinstrukcijazaresenjeproblemakako? Deklarativneimaugradjenepostupkezaresenjeproblemainjimaopisujemo STA? znamo o problemuistazelimodadobijemopozivajuciga (Prolog i SQL) Posebnuklasuprogramskihjezika cine objektnoorjentisanijezici, kodkojihsuprisutniiproceduralniineproceduralnielementi. Kod OOP podaciipostupcisuobjedinjeni u jednucelinui cine aktivanobjekat, zarazlikuodpodataka u proceduralnimjezicimakojisukrajnjepasivni. Pristuppodacimaobjekatakontroliseprogramerimozeim se pristupitisamounutarjednogobjekta(kojiimasvojestanjeioperacijekojemozemozahtevatizaizvrsenje)
Primer: Posmatrajmo niz imena ucenika jednog odeljenja . Razvoj OOP je omogucio jednostavnije kreiranje programa i timski rad
Principi OOP Primer: Nastavni proces u skoli Pera -ucenikIVarazredaradizadatakizmatematike Prof Laza Profesor Mika predajesvimucenicimaodeljenjaIvbnovulekcijuizfizike ucionica1 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 : Ime Strucna sprema Predmet koji predaju Godine staza Oni pripadaju jednoj od klasa ucesnika u nastavnom procesu PROFESORI Na isti nacin uocavaju se i klase Ucenik Pera Predmet 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.