You are on page 1of 26

SVEUČILIŠTE/UNIVERZITET „VITEZ“ TRAVNIK

FAKULTET INFORMACIONIH TEHNOLOGIJA


CIKLUS STUDIJA; GODINA STUDIJA: I CIKLUS; II GODINA
SMJER: INFORMACIJSKE TEHNOLOGIJE

POREĐENJE OOP I PROCEDURALNOG PROGRAMIRANJA


NA PRIMJERIMA JAVA vs C
SEMINARSKI RAD

Travnik, Novembar, 2017.god.


SVEUČILIŠTE/UNIVERZITET „VITEZ“ TRAVNIK
FAKULTET INFORMACIONIH TEHNOLOGIJA
CIKLUS STUDIJA; GODINA STUDIJA: I CIKLUS; II GODINA
SMJER: INFORMACIJSKE TEHNOLOGIJE

POREĐENJE OOP I PROCEDURALNOG PROGRAMIRANJA


NA PRIMJERIMA JAVA vs C
SEMINARSKI RAD

IZJAVA: Ja, _____________, student Sveučilišta/Univerziteta „VITEZ“ Vitez,


indeks br. ___________, odgovorno i uz moralnu i akademsku odgovornost,
izjavljujem da sam ovaj radi izradila potpuno samostalno, uz korištenje citirane
literature i pomoć profesora odnosno asistenta.

Potpis studenta: _______________

STUDENT:

PREDMET: Objektno programiranje

PROFESOR:

ASISTENT:
SADRŽAJ

1. UVOD................................................................................................................................................ 4
1.1. PROBLEM, PREDMET I OBJEKT ISTRAŽIVANJA ......................................................................... 2
1.2. SVRHA I CILJEVI ISTRAŽIVANJA................................................................................................. 2
1.3. RADNA HIPOTEZA I POMOĆNE HIPOTEZE................................................................................ 3
1.4. ZNANSTVENE METODE ............................................................................................................ 3
1.5. STRUKTURA RADA .................................................................................................................... 4
2. OPĆENITO O OBJEKTNO ORIJENTIRANOM PROGRAMIRANJU ........................................................ 5
2.1. KLASE I ČLANOVI ...................................................................................................................... 7
2.2. NASLJEĐIVANJE ........................................................................................................................ 7
2.3. POLIMORFIZAM ....................................................................................................................... 8
3. JAVA ................................................................................................................................................. 9
3.1. OBJEKTNO ORIJENTIRANO PROGRAMIRANJE U JAVI ............................................................ 11
3.1.1. DEFINICIJA KLASE ........................................................................................................... 11
3.1.2. ATRIBUTI U DEFINICIJI KLASE ......................................................................................... 11
3.1.3. METODE U DEFINICIJI KLASE .......................................................................................... 12
3.2. PROCEDURALNO PROGRAMIRANJE ....................................................................................... 12
4. POREĐENJE I RAZLIKE OOP I PP ..................................................................................................... 16
5. ZAKLJUČAK ..................................................................................................................................... 22
1. UVOD

Programiranje jeste umijeće stvaranja programa koji mogu da služe u različite


svrhe. Osoba koja stvara programe naziva se programer. Pri kreiranju programa,
svaki programer je dužan da poštuje programsku sintaksu, kako bi programi
ispravno funkcionisali. Programsku sintaksu čine pravila slaganja ključnih riječi
u naredbe.

Metodologija programiranja može se podijeliti na proceduralno i neproceduralno


komuniciranje sa računarom.

Kod proceduralnog komuniciranja, neophodno je računaru opisati precizan


postupak rješavanja nekog problema.

Kod neproceduralnog komuniciranja sa računarom, računaru treba da saopćimo


šta želimo, da uradimo, a ne kako treba da uradimo.

Tema ovog seminarskog rada jeste poređenje objektno orijentiranog


programiranja s proceduralnim programiranjem, s ciljem baziranja na uočavanje
razlika između JAVE i C -a.

Objektno orijentirano programiranje je glavni pristup programiranju računara za


razvoj aplikacija, bilo web ili desktop.

Proceduralno programiranje- programska paradigma izvedena iz struktuiranog


programiranja izdvajanjem često ponavljanih blokova naredbi u procedure i
njihovom izvršavanju na principu poziva procedure.
1.1.PROBLEM, PREDMET I OBJEKT ISTRAŽIVANJA

U životu općenito se često pojavljuje potreba za programiranjem. To je


uslovljeno današnjim sve češćim korištenjem računara, elektronike, robota, što iz
upotrebe sve više izbacuje ljudske resurse. Međutim, čak i programiranje je
podijeljeno.
1
„Objektno orijentirano programiranje jeste tehnika programiranja, nastala 80.-tih
godina prošlog vijeka, a danas predstavlja najraširenije prihvaćenu tehniku
programiranja.

Moć OOP dolazi do izražaja naročito kod većih i složenijih programa. Tehnike
OOP su nastale kao pokušaj prevazilaženja krize softvera osamdesetih godina,
koja se zapravo i javila kao nemogućnost efikasne primjene proceduralnih i
modularnih tehnika programiranja na rješavanju složenih problema.“

Tehnike proceduralnog programiranja imaju mnogo nedostataka u odnosu na


OOP. One koriste čak i pointere (pokazivače) kao i sve vrste programskih
naredbi (sekvence, selekcije i iteracije), što kod OOP nije slučaj.

1.2.SVRHA I CILJEVI ISTRAŽIVANJA

Svrha ovog istraživanja jeste upoznavanje tehnika kao i načina korištenja OOP,
te postepeni prelazak s proceduralnog na OO programiranje.

Ciljevi ovog istraživanja jesu kroz praktične primjere pokazati načine i tehnike
OOP, s osvrtom na razlike između JAVE i C -a.

1
http://www.link-elearning.com/site/kursevi/lekcija/962

2
1.3.RADNA HIPOTEZA I POMOĆNE HIPOTEZE

Na temelju problema i predmeta istraživanja, postavlja se glavna (radna)


hipoteza:

Pošto se proceduralno programiranje danas smatra „zastarjelim i manje


korisnim“, većina programera nastoji koristiti OOP koje daje mnogo više
mogućnosti, počev od toga da se koriste objekti i klase s kojima je jednostavnije
za „rukovati“, pa do sposobnosti razvoja web ili desktop aplikacija.

Polazeći od svrhe i ciljeva istraživanja, postavljaju se tri pomoćne hipoteze:

1.PH. Savremenije tehnike programiranja daju nam veći opseg korištenja mnogih
načina programiranja (objekti, klase, polimorfizam, nasljeđivanje).

2.PH. Proceduralne tehnike strogo razdvajaju podatke od funkcija, odnosno koda,


koje obavljaju različite operacije nad tim podacima, dok se u slučaju OO
pristupa, podaci i funkcije, to jest kod, tretiraju kao cjelina.

3.PH. Prelazak sa proceduralnog na OOP uvjetuje promjenu načina razmišljanja


kao i pristupa u rješavanju problema.

1.4.ZNANSTVENE METODE

U ovom seminarskom radu koristit ćemo sljedeće znanstvene (naučne) metode:

- Metoda klasifikacije
- Metoda poređenja.

3
1.5.STRUKTURA RADA

Struktura seminarskog rada usklađena je sa Uputstvom za pisanje seminarskog


rada na prvom ciklusu studija kao i temi seminarskog rada. Ona sadrži pet
poglavlja.

Prvo poglavlje, Uvod, sadrži pet podpoglavlja:

- Problem, predmet i objekt istraživanja


- Svrha i ciljevi istraživanja
- Radna hipoteza i pomoćne hipoteze
- Znanstvene metode i
- Struktura rada.

Drugo poglavlje, Općenito o OOP nas upućuje u samo OOP, tehnike i načine
kreiranja porgrama.

Treće poglavlje, JAVA, nam govori o JAVA programskom jeziku kao osnovi
OOP. Upoznaje nas s Javinom sintaksom i implementacijom nekih zadataka.
Zatim, nešto o proceduralnom programiranju, o programiranju u proceduralnim
jezicima, te njihovom sve rjeđom upotrebom.

Četvrto poglavlje, poređenje i razlike OOP i PP nam ukazuje na osnovne razlike


kao i prednosti i nedostatke OOP i PP.

Peto poglavlje, Zaključak, daje generalnu ocjenu o korištenju OOP, ali i


odgovara na pitanje da li je postavljena hipoteza potvrđena ili ne.

4
2. OPĆENITO O OBJEKTNO ORIJENTIRANOM
PROGRAMIRANJU

OOP uvodi drugačiji način razmišljanja u programiranju. Mnogo se više vremena


troši na projektovanje nego na implementaciju (kodiranje). Razmišlja se o
dijelovima sistema (objektima) koji nešto rade, a ne o tome kako se nešto radi
(algoritam).

U osnovi, OOP nastoji da u jednoj strukturi podataka objedini i podatke i akcije


koje se sprovode nad tim podacima (metode).
Ključni pojmovi u OOP:

- klase
- objekti
- poruke.
2
„Klasama se opisuje struktura i ponašanje pojedinih primjeraka klase.
Pojedinačni primjerci klase (instance) nazivaju se objekti. Svi objekti koji
pripadaju jednoj klasi imaju strukturu koja je definisana klasom kojoj pripadaju, i
nad njima se mogu izvršavati samo operacije koje su definisane tom klasom.
Klase se posmatraju kao šabloni za kreiranje novih objekata. U tom smislu je
pojam klase sličan pojmu tipa. Pripadnost klasi je svojstvo objekta, dok je
pripadnost tipu svojstvo promjenljivih i izraza. Svaka klasa se može posmatrati
kao cjelina u kojoj su, pored polja u kojima su opisani podaci (svojstva), opisana
i polja koja predstavljaju funkcije i/ili procedure. Ovakve funkcije, odnosno
procedure, definisane unutar klasa, nazivaju se metodi klase.

Svojstva objekata mjenjaju se pozivom odgovarajućih metoda. Pozivi metoda


nazivaju se poruke. Objekat odgovara na poruku tako što izvršava odgovarajući
metod.
Sintaksa poruka zavisi od konkretnog programskog jezika, ali je generalno slična
pozivu procedura i funkcija u proceduralnim programskim jezicima.“

OOP ima sljedeće osobine:

- strukture podataka i procedure integrisane u klase


- program može da se posmatra kao mreža objekata koji su u interakciji, pri
čemu svaki objekat zna svoje stanje
- apstrakcija, enkapsulacija, nasljeđivanje i polimorfizam
- ponovno korištenje objekata.

2
Miloš Milenov, Programski jezici, Objektno orijentirano programiranje, Beograd, 2006. god.,
365.str.

5
Osnovni pojmovi OOP: objekat, primjerak klase, instanca, klasa (operacije i
atributi), metode, funkcije, operacije, promjenljive, podaci, varijable i atributi.

3
„OOP je zasnovano na konceptu objekata. Objekti su struktura podataka sa
pridruženim skupom procedura i funkcija koje se nazivaju metode i služe za
operisanje podacima koji čine objekat.

Objekti imaju neke karakteristike, svojstva, atribute, kao i određena ponašanja.


Različiti objekti mogu imati slične atribute i ponašati se na sličan način.

U pravim objektno orijentiranim programskim jezicima, metode su jedini način


operisanja podacima koji su sadržani u objektima.Kao što je već rečeno, svaki
objekat predstavlja primjerak (instancu) neke klase. Definisanjem klase, definiše
se sadržaj objekta te klase, kao i skup metoda. „

OO programski jezici mogu se implementirati statički i dinamički. Dinamičku


implementaciju posjeduju netipizirani jezici (npr. SMALLTALK). U ovakvim
programskim jezicima, ne koristi se informacija o tipovima podataka, već samo
informacija o pripadnosti objekta određenoj klasi. Informacija o pripadnosti
objekta određenoj klasi koristi se tek u fazi izvršavanja programa.
Većina OO programskih jezika je implementirana statički. Kod ovakvih
programskih jezika, informacija o pripadnosti objekta određenoj klasi koristi se u
fazi kompajliranja programa.

Klase se mogu formirati na osnovu postojećih, postupkom nasljeđivanja, čime se


omogućava kreiranje hijerarhije klasa, pa postoji:

- jednostruko nasljeđivanje
- višestruko nasljeđivanje
- polimorfizam.

Najvažniji pojmovi i njihova značenja:

- Tip koji modeluje neki pojam iz problema koji se rješava pomoću


(neodvojive veze) podataka i pridruženih operacija, naziva se apstraktni tip
podataka.

- Skrivanje interne reprezentacije tipa, tj. detalja njegove implementacije od


korisnika tog tipa, naziva se enkapsulacija.
3
Veleučilište u Beogradu, Predavanja, OOP-programski jezik JAVA, 2014/2015 god., 13.str.

6
- Mogućnost korištenja već definisanih klasa za građenje hijerarhije klasa
naziva se nasljeđivanje.

- Mogućnost definisanja jedinstvenog po imenu metoda (procedure ili


funkcije), koji je promjenljiv istovremeno na svim klasama hijerarhije
nasljeđivanja, naziva se polimorfizam.

2.1.KLASE I ČLANOVI

Klasa- kolekcija promjenljivih, često različitih tipova, koji su kombinovani sa


skupom povezanih funkcija.

Primjer automobil:
Posmatrajmo automobil kao „nešto“ što posjeduje: vrata, sjedišta, točkove,
prozore. Zatim ga posmatrajte kao „nešto“ što ima mogućnost da se: pomjera,
ubrza, uspori, stane, parkira itd. Klasa nam omogućava da sve ovo rečeno
enkapsuliramo (upakujemo) ove različite dijelove i različite funkcije u kolekciju
koja se naziva objekat.
Enkapsuliranje svih informacija koje znamo o automobilu u jednu klasu ima neke
prednosti. Sve se nalazi na jednom mjestu pa olakšava manipulisanje podacima.

Promjenljive članice, također poznate kao podaci članovi, jesu članovi u klasi
koje upućuju na promjenljive u klasi. Npr. klasa auto bi mogla imati promjenljive
članice koje predstavljaju sjedišta, tip radio, gume i td.

Funkcije članice, također poznate kao metodi, jesu funkcije u klasi. One su dio
klase isto koliko i promjenljive članice. Određuju šta objekti klase mogu uraditi.
Npr. metodi klase auto bi mogli uključiti Start() i Break().

2.2.NASLJEĐIVANJE

Nove klase mogu biti definisane tako da naslijede sva svojstva određene klase
(klasa roditelj), ali i da se tim svojstvima dodaju nova.

Prednosti upotrebe nasljeđivanja:

- Podklase obezbjeđuju specijalizovana ponašanja na osnovu zajedničkih


elemeneata sa superklasom. Upotrebnom tehnike nasljeđivanja, programeri
mogu da koriste kod iz superklasa mnogo puta.

7
- Programeri mogu da implementiraju superklase koje se nazivaju apstraktne
klase, a definišu generička ponašanja. Apstraktne superklase definišu i mogu
parcijalno da implementiraju ponašanje podklasa.

4
„Nekada postoji potreba da izvedena klasa ima osobine više osnovnih klasa
istovremeno. Tada se radi o višestrukom nasljeđivanju.
Klasa se deklariše kao nasljednik više klasa tako što se u zaglavlju deklaracije,
iza znaka : navode osnovne klase razdvojene zarezom.

Ispred svake osnovne klase treba da stoji riječ public. „


Npr.:

Class Derived: public Base1, public Base2, public Base3


{ //...};

2.3.POLIMORFIZAM

Objekti međusobno utiču jedni na druge pomoću poruka. Naravno, različiti


objekti ne reaguju na isti način na dobijene poruke. Ovakva sposobnost različitih
objekata da na različit način odgovore na istu poruku naziva se polimorfizam.

Primjer:

Imamo objekte a,b i c različitih tipova. Za njihovo prikazivanje koristi se metod


display, koji se poziva pomoću izraza a.display, b.display, c.display.
Pošto su objekti različitih tipova, moramo nastojati omogućiti da se metod
display u svakom slučaju prilagodi strukturi objekta koji se prikazuje. U tom
slučaju, objekti a,b i c će različito reagovati na istu poruku dobijenu pozivom
procedure display.

Ovakav mehanizam podrazumijeva da se informacija o pripadnosti objekta


određenom tipu koristi tek u fazi izvršavanja programa. Pravi polimorfizam
zahtjeva dinamičku implementaciju jezika. Međutim, statička implementacija je
češće korištena. Zbog toga se polimorfizam, u statički implementiranim
programskim jezicima, implementira pomoću virtuelnih metoda za koje važi
dinamička implementacija. To je slučaj sa jezicima kao što su C++ i DELPHI.

4
Miloš Milenov, Programski jezici, Objektno orijentirano programiranje, Beograd, 2006 .g., 424.str.

8
3. JAVA

Java je srodnik jezika C++, koji je direktan potomak jezika C. Veći dio svojih
osobina Java je naslijedila od ova dva jezika. Iz jezika C, Java je preuzela
sintaksu.

Java programi mogu da rade na svakoj platformi koja podržava Javu zahvaljujući
sljedećem:

- Java program se ne izvršava direktno na računaru, već na standardizovanom


okruženju (Java platforma) koja se sastoji od dva elementa:
- JVM (Java Virtuelne Mašine)
- JAVA API (Java Application Programming
Interface)

Java kompajler prevodi izvorni Java kod u tzv. Byte kod koji predstavlja
mašinske instrukcije za JVM. Kada se izvršava Java program koji se zove Java
interpreter tumači byte kod i zatim izvršava akcije koje byte kod specificira
unutar JVM.

Pošto se Java kod sastoji od bytecode, a ne od pravih mašinskih instrukcija, on je


potpuno nezavisan od hardvera na kome se izvršava.

Svaki računar koji ima implementirano Java okruženje, izvršit će taj program
podjednako dobro kao i svaki drugi, a Java interpreter, koji se nalazi između
programa i fizičke mašine, spriječit će neautorizovane akcije programa.

Najjednostavnija sitaksa Jave:

9
Slika 1. Početni program u Javi

Izvor: NetBeans 8.0.2.

Napravili smo neku klasu koja je „javna“ i dali joj naziv zdravo. Unutar nje
nalazi se zaglavlje metode. Naziv metode je riječ main. Riječi public static void
pokazuju Java prevodiocu način korištenja main metode. String [] args opisuju
informaciju koja će biti proslijeđena metodu svaki put kada bude pozvan. Naziva
se lista parametara. System.out. je objekat čiji je zadataka da primi poruku koju
treba prikazati na ekranu. Println metoda je operacija koja se izvršava nad
porukom.

Postoje dvije osnovne vrste programa koji se mogu pisati u Javi:

- Aplikacija- samostalni program za rješavanje jednog ili skupa problema, koji


sadrži metodu main() i jednu ili više klasa
- Aplet- dinamički interaktivni program koji se može izvršiti u okviru web
stranice, posredstvom nekog od browsera.

10
3.1.OBJEKTNO ORIJENTIRANO PROGRAMIRANJE U JAVI

Objekat je integralna cjelina podataka i procedura za rad s njima. U OOP-u


glavne obrade se zasnivanju na manipulisanju objektima.

3.1.1. DEFINICIJA KLASE

Klasa- skup objekata sa zajedničkim svojstvima koji se ponašaju na isti način.


Ona definiše šablon za kreiranje instanci, tj. konkretnih objekata klase.

Klasa se može shvatiti kao novi tip, ona određuje koje vrijednosti mogu dobiti
promjenljive (objekti tog tipa i koje operacije se mogu vršiti nad njima).

Definicija klase je jako jednostavna i može sadržavati samo atribute i metode:

Class Krug {  klasa Krug


int x,y;
float r;
}
Krug k= new Krug (10,20,5);  instanca klase Krug

Instanca je konkretan objekat klase. Svi metodi definisani u klasi mogu se


primjeniti na instancu.

Atributi klase

Promjenljive iz definicije klase nazivaju se atributi klase ili instance promjenljive


ili instance klase.

U prethodnom primjeru x,y i r predstavljaju instance promjenljive, koje u instanci


k imaju redom vrijednost (10,20,5).

Instance promjenljive mogu biti nekog od promjenljivih, ali također i klasnih


tipova.

3.1.2. ATRIBUTI U DEFINICIJI KLASE

Atributi mogu biti proizvoljnog tipa ili reference na objekte proizvoljne klase,
uključujući klasu koju definišemo.
Postoje dvije vrste atributa:

11
- Statički i
- Nestatički atributi.

Statički atribut je zajednički za sve objekte klase. Deklariše se navođenjem


ključne riječi static ispred <tip>. Koristi se da čuva podatke koji su zajednički za
sve objekte.

Nestatički atribut: svako objekat klase posjeduje svoju sopstvenu kopiju svakog
od nestatičkih atributa koji se pojavljuju u definiciji te klase, i ti atributi imat će
svoje sopstvene vrijednosti. On se u definiciji klase deklariše na uobičajen način:
<tip> <ime> i eventualno se može zadati inicijalna vrijednost.

3.1.3. METODE U DEFINICIJI KLASE

Metode su zapravo funkcije i tako se i definišu. Tip vrijednosti koju metod vraća
može biti void ili proizvoljan tip (string, int). Lokalne promjenljive se ne
inicijaliziraju automatski, već se mora eksplicitno izvršavati njihova
inicijalizacija.

Kao i kod atributa, tako i ovdje postoje dvije vrste metoda:

- Statički i
- Nestatički.

Statički se mogu izvršavati čak i kada ne postoji ni jedan objekat te klase.


Definiše se tako što se doda ključna riječ static ispred definicije metoda.

Najbolji primjer statičkih metoda su matematičke funkcije implementirane u


standardnoj klasi Math. Ovi metodi ne rade sa objektima klasa, operišu isključivo
sa primitivnim tipovima.

3.2.PROCEDURALNO PROGRAMIRANJE

5
„Znatno napredniju skupinu programskih jezika čine tzv. proceduralni jezici.
Ova skupina predstavlja najširu skupinu programskih jezika, i u nju spada veliki
broj danas korištenih programskih jezika, kao što su BASIC, Pascal, Fortran,
Cobol, C...

5
http://www.computer.com.ba/II/01programski_jezici/index.htm 12.11.'17.g.

12
Karakteristika ovih jezika jeste da za rješavanje bilo kakvog problema uz pomoć
ovih jezika, moramo računaru jasno i precizno opisati postupak kako se rješava
taj problem (sastavljanje algoritma za rješavanje problema).“

Kao što znamo, proceduralne tehnike strogo razdvajaju podatke od funkcija,


odnosno koda, koje obavljaju različite operacije nad tim podacima.

Za razliku od asemblerskog jezika, proceduralni jezici ipak ne zahtijevaju


raščlanjavanje problema na previše elemenratne operacije.

Za razliku od mašinski orijentiranih jezika, proceduralni su jezici, problemski


orijentirani jezici, jer ne ovise od konkretne mašine na kojoj se program izvršava,
nego samo od problema koji se rješava.

BASIC- programski jezik namijenjen početnicima. Jedno vrijeme je bio izuzetno


popularan, a danas se sve više istiskuje iz upotrebe, radi korištenja nekih starijih
koncepata u programiranju. Na prvom mjestu se tok programa može
nekontrolisano pomjerati sa jednog na drugi kraj programa (GOTO naredbom),
što uzrokuje nepreglednost programa, kao i teško praćenje i održavanje takvih
programa. Danas se susrećemo s mnogo naprednijim varijantama kao što je
QBASIC, ali ipak ostaje mišljenje da BASIC nije jezik za ozbiljnije namjene.
Jedinu iznimku predstavlja Visual BASIC.

FORTRAN- znatno moćniji programski jezik u odnosu na BASIC, dugo vremena


se vodio kao najpopularniji programski jezik za naučno-tehničke proračune.
Sadržavao je ogromnu kolekciju matematičkih potprograma, koji su
programerima bili dostupni za upotrebu u vlastitim programima, što je znatno
olakšavalo programiranje. Fortran je slično Basic-u, dugo vremena podsticao
zastarjelo programiranje.

PASCAL- bio je zamišljen prvenstveno kao programski jezik za edukativnu


namjenu, jer podstiče pisanje jasnih, preciznih i čitljivih programa. Posjeduje
prilično stroga pravila pisanja programa, koja „tjeraju“ korisnika da se strogo
pridržava programske sintakse. Zbog toga se Pascal smatra najpogodnijim
jezikom za učenje programiranja.

13
C- ovaj programski jezik po osnovnom konceptu je najsličniji Pascalu, mada se
po sintaksi dosta razlikuje od njega. Za razliku od Pascala, sintaksa jezika C je
dosta slobodnija, što programeru daje znatno više mogućnosti, ali pod cijenu
pisanja nejasnih programa, u kojima se, nakon izvjesnog vremena, više ne snalazi
niti sami autor.
6
„C programski jezik razvijen je u ranim 70.-tim godinama 20.st. Autor ovog
jezika je Dennis Ritchie, no značajan doprinos razvoju ovog jezika dali su i drugi
programeri.On je stvorio ovaj programski jezik za rješavanje praktičnih problema
kodiranja sistemskih programa i jezgro OS UNIX, koji je praktično u cjelosti
napisan u C-u.

Ovaj se jezik dosta mijenjao tokom godina, te je u više navrata neformalno i


formalno standardizovan. C je od početka pa sve do danas ostao jedini
programski jezik koji je prilagođen za sve računarske platforme, od malih
sistema pa do mrežnih superračunara.

C se proširuje dodavajući mu sposobnosti objektno orijentiranog programiranja,


pa je došlo do pojave C++-a. Nažalost, ta kompatibilnost je i razlog zašto su
problemi koje programiranje u C-u nosi sa sobom naslijeđeni i u C++-u. Stoga,
efikasno i sigurno programiranje u C-u zahtijeva vještinu koja traži višegodišnje
iskustvo, pa je C jezik koji se ne preporučuje početnicima, već onima kojima je
to primarni posao.“

Najjednostavnija sintaksa C-a:

6
https://stefanpeka121.wordpress.com/category/proceduralni-programski-jezici/ 12.11.'17.g.

14
Slika 2. Osnovni program u C-u

Izvor: C-Free 5

Osnovni program u C-u jeste program pozdrav. Sa #include<stdio.h>


uključujemo standardnu biblioteku (standardni ulaz-izlaz). Metoda int main
zajedno sa { označava početak programa. Naredba printf vrši ispis teksta unutar
zagrade a pod navodnim znacima. Naredba return 0 vraća vrijednost 0 radi
funkcije tipa int main. } označava kraj programa.

15
4. POREĐENJE I RAZLIKE OOP I PP

7
„Mnogi C programeri koji sanjaju strukture, ili razmišljaju o tome kako će svoju
novu rutinu riješiti pomoću pokazivača na funkcije, dvoume se oko toga da li je
C++ dostojan njihovog koda. Niti jedna od ovih metoda nije dovoljno dobra.
Objektna tehnologija također ima svoje prednosti i mane (naravno nije niti ona
svemoguća) i ne može riješiti baš sve probleme. „

Iz takvih razloga, da ne bi došlo do pomutnje, navedene su osnovne razlike, kao i


prednosti različitih tehnika programiranja.

PROCEDURALNO PROGRAMIRANJE:

- Program se može posmatrati kao sekvenca poziva potprograma (procedura)


- Višestruko korištenje koda postiže se preko biblioteka, procedura i funkcija
- Koncentriše se na procedure- niz akcija
- Jedinica programiranja- funkcija, funkcije se grupišu u programe.

OBJEKTNO ORIJENTIRANO PROGRAMIRANJE

- Strukture podataka i procedure su integrisane u klase


- Program može da se posmatra kao mreža objekata koji su u interakciji, pri
čemu svaki objekt zna svoje stanje
- Apstrakcija, enkapsulacija, polimorfizam i nasljeđivanje
- Mogućnost ponovnog korištenja objekata

U nastavku slijedi nekoliko primjera zadataka u Javi i C-u.

7
http://free-zg.htnet.hr/jsribar/demistif.pdf 12.11.'17.g.

16
Pr.: Napraviti okvir i u njemu napisati ime.

Ovako to izgleda u C-u:

Slika 3. Ime u okviru

Izvor: C-Free 5

17
Ovako u JAVI:

Slika 4. Ime u okviru

Izvor: NetBeans

Sljedeći primjer zapravo ne služi ničemu, samo su deklarisane i inicijalizovane


vrijednosti x,y i z. Kroz if izraze smo poredili šta ako je x>0 ili y>0 ili z>0 i vršili
ispis.

18
Kako to izgleda u C-u:

Slika 5. Primjer

Izvor: C-Free 5

19
Ovako izgleda u JAVI:

Slika 6. Primjer

Izvor: NetBeans

Primjer 3. Bilo je potrebno napraviti semafor. Najlakše je uz pomoć logičkih


vrijednosti true i false i logičkih tipova podataka kao što su bool (C) i boolean
(JAVA). Ukoliko je zeleno = true, auto kreće, zuto = true, auto usporava i čeka
sljedeće komande, crveno = true, auto koči.

20
C

Slika 7. Semafor

Izvor: C-Free 5

JAVA

Slika 8. Semafor

Izvor: NetBeans

21
5. ZAKLJUČAK

Iz svega do sad navedenog, možemo zaključiti da je OOP u odnosu na PP mnogo


naprednije. Potpuno je drugačiji način razmišljanja. Razmišlja se o objektima
koje kreiramo, kao i klasama koje koristimo. OOP kao tehnika programiranja ima
puno više mogućnosti u odnosu na PP. Sama mogućnost kreiranja klasa i
objekata u veliku ruku olakšava pisanje programa. U C-u se to zove „mučenje“
pisanjem naredbi sve liniju po liniju. Iz tog razlog se kaže da je C u današnje
vrijeme kada je OOP uznapredovalo upravo zastarjeo.

Dok se u C-u koriste procedure i funkcije zasebno, u JAVI su strukture podataka


i procedure integrisane u klase.

Dok se proceduralno programiranje koncentriše na procedure, objektno


orijentirano programiranje posjeduje: apstrakciju, enkapsulaciju, polimorfizam
kao i nasljeđivanje. Kod OOP postoji mogućnost ponovnog korištenja objekata
jedne klase u nekoj sasvim drugoj klasi. OOP također pruža mogućnost kreiranja
raznih web ili desktop aplikacija.

Na osnovu do sada rečenog, možemo zaključiti da nam OOP može poslužiti u


svim segmentima programiranja, što nije slučaj s PP, te možemo reći da je
hipoteza, postavljena na početku, potvrđena.

22
LITERATURA

- Miloš Milenov, Programski jezici, Objektno orijentirano programiranje,


Beograd, 2006. god., 365.str.

- Veleučilište u Beogradu, Predavanja, OOP-programski jezik JAVA,


2014/2015 god., 13.str.

- M. Jurak, Predavanja, Programski jezik C, 2003./2004. g.

- http://www.link-elearning.com/site/kursevi/lekcija/962 12.11.'17.g.

- http://www.computer.com.ba/II/01programski_jezici/index.htm 12.11.'17.g.

- https://stefanpeka121.wordpress.com/category/proceduralni-programski-
jezici/ 12.11.'17.g.

- http://free-zg.htnet.hr/jsribar/demistif.pdf 12.11.'17.g.

23

You might also like