You are on page 1of 13

SVEUČILIŠTE/UNIVERZITET „VITEZ“ VITEZ

FAKULTET INFORMACIONIH TEHNOLOGIJA


STUDIJ I CIKLUSA; GODINA STUDIJA: I CIKLUS: I GODINA
SMIJER: INFORMACIONE TEHNOLOGIJE

POLIMORFIZAM U JAVA PROGRAMSKOM JEZIKU


SEMINARSKI RAD
SVEUČILIŠTE/UNIVERZITET „VITEZ“ VITEZ
FAKULTET INFORMACIONIH TEHNOLOGIJA
STUDIJ I CIKLUSA; GODINA STUDIJA: I CIKLUS: I GODINA
SMIJER: INFORMACIONE TEHNOLOGIJE

POLIMORFIZAM U JAVA PROGRAMSKOM JEZIKU


SEMINARSKI RAD

IZJAVA: Ja, Dinno Bobić student Sveučilišta/Univerziteta „Vitez“ Vitez,


Indeks broj: 135-19/RIIT odgovorno i uz moralnu i akademsku odgovornost
izjavljujem da sam ovaj rad izradio potpuno samostalno uz korištenje citirane
literature i pomoć profesora odnosno asistenta.

Potpis studenta:_____________________

STUDENT: Dinno Bobić


PREDMET: Uvod u informatiku
PROFESOR: Prof.dr Mahir Zajmović

1
SADRŽAJ

1.0 UVOD.......................................................................................................................................4
1.1. PROBLEM, PREDMET I OBJEKTI ISTRAŽIVANJA..................................................4
1.2. SVRHA I CILJEVI ISTRAŽIVANJA...............................................................................4
1.3. RADNA HIPOTEZA I POMOĆNE HIPOTEZE.............................................................4
1.4. ZNANSTVENE METODE..................................................................................................4
1.5. STRUKTURA RADA..........................................................................................................5
2.0 HISTORIJA OFFICE 365......................................................................................................5
1.6. OPĆENITO O OFFICE 365...............................................................................................6
2.2 ZAHTIJEVA LI OFFICE 365 PRISTUP INTERNETU?................................................6
1.7. OFFICE 365 APLIKACIJE................................................................................................6
3.0. ODLIKE........................................................................................................................................7
3.1. SIGURNOST........................................................................................................................7
3.2. AŽURIRANJE.....................................................................................................................7
3.3. ALAT ZA SURADNJU.......................................................................................................7
4.0. ZAKLJUČAK...............................................................................................................................8
5.0. LITERATURA.............................................................................................................................8

2
1.0 UVOD

1.1. PROBLEM, PREDMET I OBJEKTI ISTRAŽIVANJA

U Javi možemo razdvojeno opisati sučelje objekta prema okolini (dakle


popis metoda s kojima raspolaže) i implementaciju tog sučelja (sam kod
metoda, atributi potrebni za čuvanje stanja). Posebno je bitno da za jednu
definiciju sučelja možemo imati mnogo različitih implementacija. Ovo je
korisno iz mnogo razloga, a u ovom seminarskom ćemo opisati jedan od njih.

Predmet seminarskog rada je da se istraži mogućnosti primjene


polimorfizma u programiranju, to jest specifično u Javi.

U radu se mogu uočiti sljedeći objekti istraživanja: mogućnosti office


365, korisnici i usluge.

1.2. SVRHA I CILJEVI ISTRAŽIVANJA

Cilj istraživanja je pobliže se upoznati sa polimorfizmom, te detaljno ga


predstaviti. Svrha rada je objasniti na koji način radi, zbog čega se javila
potreba da se koristi, kako ga koristiti kao programer.

1.3. RADNA HIPOTEZA I POMOĆNE HIPOTEZE

Polimorfizam (“višeobličnost”) je važna osobina objektno orijentisanog jezika


jer omogućuje da osnovna klasa definiše funkcije koje će biti zajedničke za sve
izvedene klase, ali da izvedenim klasama ostavi slobodu da same implementiraju sve
te funkcije.

1.4. ZNANSTVENE METODE

U ovom seminarskom radu koristit ćemo slijedeće znanstvene(stručne)


metode:
- Induktivna metoda
- Metoda analize

3
- Metoda deskripcije
1.5. STRUKTURA RADA

Struktura seminarskog rada je usklađena sa Upustvom za pisanje


seminarskog rada na prvom ciklusu studija kao i temi seminarskog rada. On 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,
- Struktura rada.

Drugo poglavlje, općenito o Polimorifzmu

Treće poglavlje, Klase i nasljeđivanje

Četvrto poglavlje, Preopterećenje u polimorfizmu

Peto poglavlje, Zaključak o polimorfizmu

2.0 Nasljeđivanje, polimorfizam i abstraktne klase

Klasa predstavlja skup objekata sa zajedničkom građom i ponašanjem. Klasa


određuje strukturu objekta navođenjem varijabli koje su sadržane u svim instancama
klase i određuje ponašanje objekata preko metode instance koje izražavaju ponašanje
objekata. Ovo je moćna ideja, ali nešto poput ovog se može postići u većini
programskih jezika.

2.1 OPĆENITO O POLIMORFIZMU

Polimorfizam je osobina objektno orijentisanih jezika koja omogućava da


osnovna klasa definiše zajedničke funkcije izvedenih klasa, koje se mogu
implementirati u izvedenim klasama na različit način.

4
Pošto zajednička klasa definiše jedinsveni interfejs izvedenih klasa, programer
treba da poznaje znatno manji broj različitih interfejsa, što olakšava razvoj i
održavanje složenih programa i kreiranje biblioteka funkcija.

2.2 KLASE

Naziv nasljeđivanje odnosi se na činjenicu da jedna klasa može naslijediti dio ili
svu strukturu i ponašanje od druge klase. Klasa koja nasljeđuje zove se
podklasa(subclass) klase od koje nasljeđuje. Ako je klasa B podklasa klase A onda je
klasa A nadklasa(superclass) klase B. Podklasa može nadpopunjavati strukturu i
ponašanje klase koju nasljeđuje, a može i zamijeniti ili izmjeniti naslijeđeno
ponašanje, ali ne i naslijeđenu strukturu. Odnos između podklase i nadklase je često
prikazan kao dijagram u kojem je podklasa prikazana ispod i povezana na nadklasu.

Slika 1. Izgled Nadklase i podklase


U Javi se može prilikom stvarajna nove klase daklarirati da je nova klasa podklasa
postojeće klase. U slučaju klase B ko{ja se definira kao podklasa klase A to se

class B extends A { zapisuje ovako:


*
* // dodaci na, i izmijene
* // onog što je naslijeđeno od klase A
*
}

5
Slika 2. Izgled više podklasa pod istom nadklasom

2.2 NASLJEĐIVANJE

Jedan od najvažnijih koncepata u objekno orijentiranom programiranju je


nasljeđivanje. Nasjljeđivanje predstavlja definiranje jedne klase u pogledu druge
klase, što ju čini lakšim za kreiranje i implementaciju u programu. Također pruža
mogućnost ponovne uporabe koda odnosno izbjegavanje višestrukog pisanja istih
dijelova. Kod kreiranja klase, umjesto pisanja potpuno novih podatkovnih i
funkcijskih članova, programer može definirati novu klasu nasljeđujući članove
postojeće klase. Postojeća klasa se naziva baznom klasom, a nova klasa se naziva
izvedenom. Ideja nasljeđivanja implementirana je na roditeljskom odnosu. Odnos
nasjljeđivanja prikazan je na slici.

6
Slika 3. Odnos nasjljeđivanja bazne i izvedene klase
Programi koji izvode nove klase od postojećih nude nekoliko prednosti:

 uštedu vremena jer dio koda koji je potreban novoj klasi već napisan i
testiran, to jest, znamo da radi ispravno i pouzdano
 proširivanje bazne klase bez ugrožavanja rada objekata i metoda izvedene
klase
 ako je baznu klasu naslijedilo puno izvedenih klasa, ona je zasigurno
pouzdana – što s više koda koristilo, to je vjerojatnije da su logičke pogreške
pronađene i ispravljene.

Objekti izvedenih klasa sadržavaju sve funkcijske i podatkovne članove bazne


klase, a mogu sadržavati i neka svoja specifična svojstva definirana u izvedenoj
klasi. Nasljeđivanje se definira na način da se u deklaraciji iza izvedene klase navodi
lista baznih klasa, razdvojeni zarezom. Sintaksa nasljeđivanja izvedene klase s
nazivom imeIzvedeneKlase od bazne klase s nazivom imeBazneKlase je prikazana
na slici (Sl.4.)

Slika 4. Sintaksa nasljeđivanja klase

Jedna bazna klasa se ne može navesti više puta u listi navođenja baznih klasa. Ispred
svakog naziva bazne klase moguće je staviti jednu od ključnih riječi public, private
ili protected, kojima se definiraju prava pristupa

2.2.1. Nasljeđivanje i prava pristupa

Prava pristupa nasljeđivanja određuju načine preslikavanja varijabli i metoda


bazne klase izvedenoj klasi.

Pristup Pravo pristupa atributima i metodama bazne klase


nasljeđivanja Javni pristup Zaštićeni pristup Privatni pristup
Javni Javni Zaštićeni Privatni
Zaštićeni Zaštićeni Zaštićeni Privatni
Privatni Privatni Privatni Privatni

7
Tablica 1. Pravo pristupa varijablama i metodama bazne klase prema pristupu
nasljeđivanja

Prema tablici (Tab.1.) vidljivo je kako različiti pristupi nasljeđivanja imaju različita

prava pristupa atributima i metodama definiranim u baznoj klasi:

 javnim pristupom nasljeđivanja, članovi bazne klase koji su definirani javnim


pristupom ostaju javni članovi izvedene klase kao i zaštićeni članovi koji
ostaju zaštićeni i u izvedenoj klasi. Članovi bazne klase koji su definirani
privatnim pristupom nisu dostupni direktno preko izvedene klase
 zaštićenim pristupom nasljeđivanja, članovi bazne klase koji su definirani
javnim pristupom postaju članovi sa zaštićenim pristupom, a članovi koji su
definirani zaštićenim pristupom u baznoj klasi ostaju zaštićeni članovi
izvedene klase. Privatno definirani članovi bazne klase ostaju privatni članovi
izvedene klase.
 privatnim pristupom nasljeđivanja, članovi bazne klase koji su definirani
javim i zaštićenim pristupom postaju članovi sa privatnim pristupom u
izvedenoj klasi. Privatno definirani članovi bazne klase ostaju privatni
članovi izvedene klase.

3.0. PREOPTEREĆENJE

3.1. PREOPTEREĆENJE OPERATORA

Preopterećenje operatora je proces kojim se ugrađeni operatori primjenjuju na


svojstven način, što znači da ih možemo koristit sa korisničkim definiranim tipovima
podataka. Kao i bilo koja metoda, preopterećeni operator ima povratni tip i popis
argumenata. Ne mogu se svi operatori preopteretiti. Tablica prikazuje pet operatora
koji se ne mogu opteretiti:

. .* :: ?: sizeof
Tablica 2. Operatori koji se ne mogu opteretiti
Nije moguće uvoditi novi operator, već samo proširiti značenje postojećih. Operator
po defniciji je funkcijski član koji za naziv ima ključni riječ operator iza koje se
stavlja simobl operatora.

8
+ - * / % ^ & |
~ ! , = < > <= =>
++ -- << >> == != && ||
+= -= /= %= ^= &= |= *=
<<= >>= [] () -> - >* new delete
Tablica 3. Operatori koji se mogu opteretiti
3.2. PREOPTEREĆENJE FUNKCIJA

Preopterećenje funkcija omogućava korištenje istog naziva za više funkcija ili


metoda koje se razlikuje po tipovima i/ili broju argumenata. Ne možemo preopteretiti
funkcije koje se razlikuje samo u povratnom tipu.

4.0 REDEFINASNJE METODA

Redefinisanje metoda omogućava polimorfizam u trenutku izvršavanja.


Polimorfizam omogućava da opšta klasa definiše metode koje će biti zajedničke za
sve klase koje su iz nje izvedene, ostavljajući potklasama slobodu da definišu
specifične varijante nekih ili svih pomenutih metoda.

Posmatrajmo slijedeće tri klase:


class Instrument {
abstract void sviraj();
}
class Violina extends Instrument {
void sviraj() {…}
}
class Klarinet extends Instrument {
void sviraj () {…}
}
class Muzicar {
void sviraj (Instrument i) {
i . sviraj ();
}
}
Kada metoda podklase ima isto ime i tip kao neka metoda nadklase, tada metoda
podklase ima prednost nad metodom nadklase, ona je redefiniše(engl. Override).
Kada se unutar podklase pozove tako redefinisana metoda, uvijek će se izvršiti njena
9
verzija koja je definisana u podklasi. Verzija metode koja je definisana u nadklasi će
biti skrivena.

Dakle, prethodni primjer definiše tri klase: klasa Instrument je apstraktna klasa
(njena metoda sviraj je apstraktna), a klase Violina i Klarinet naslijeđuju klasu
Instrument i, naravno, implementiraju (redefinišu) apstraktnu metodu. Posmatrajmu
sada klasu Muzičar

class Muzicar {
void sviraj (Instrument i) {
i . sviraj ();
}
}
Vidimo da klasa Muzičar ima metodu sviraj, koja kao parametar ima instancu
klase Intrument; sa druge strane, znamo da klasa Instrument ne može imati instance jer je
apstraktna.

Metoda sviraj će ipak biti upotrebljiva, jer se njoj kao parametar može
proslijediti instanca neke klase koja nasjljeđuje klasu Instrument, u ovom slučaju –
instancu klasa Violina i Klarinet.

Iskaz:
Muzicar m = new Muzicar();
m.sviraj (new Klarinet());
Izazvaće pozivanje metode sviraj klase Klarinet (iako se to nigdje eksplicitno ne
navodi u metodi sviraj klase Muzicar).

Iskaz:
m.sviraj (new Violina());
izazvaće pozivanje metode sviraj klase Violina po istom principu. Dakle, poziv
metode sviraj klase Muzicar će imate različite efekte zavisno od toga koji objekat
proslijedimo kao parametar.

10
5.0. ZAKLJUČAK

11
6.0. LITERATURA

https://javaprogramiranje.wordpress.com/2009/11/07/polimorfizam-i-redefinisanje-
metoda/ (4.11.2013.)

https://almirvuk.blogspot.com/2016/04/oop-polimorfizam-objasnjen.html(16.4.2016.)

http://laris.fesb.hr/java/inheritance.htm

https://skolakoda.org/polimorfizam

12

You might also like