Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 15

SVEUILITE/UNIVERZITET VITEZ U TRAVNIKU

FAKULTET POSLOVNE INFORMATIKE


STUDIJ DRUGOG CIKLUSA, I. GODINA STUDIJA
SMJER INFORMACIONE TEHNOLOGIJE

Klase i objekti
Seminarski rad

Predmet: Objektno orjentirano programiranje


Profesor: Doc. dr Sinia Mini;
Asistent: mr.sc. Dragan Mlaki, dipl. ing. el
Student: Sandrino Vulovi

TRAVNIK, 7/2015.

Sadraj
1.

Uvod................................................................................................................. 3

2.

Pojmovi i definicije........................................................................................... 4

3.

Karakteristike klase.......................................................................................... 5

4. Konstruktor klase........................................................................................... 5
5.

Kreiranje klasa................................................................................................. 6
5.1.

Kreiranje klase na Java primjeru................................................................6

5.2.

Kreiranje objekta iz klase...........................................................................8

6.

Nasljeivanje klasa.......................................................................................... 9

7.

Zakljuak........................................................................................................ 14

8.

Literatura....................................................................................................... 15

1. Uvod
Donedavno je veina je programskih jezika bila bazirana na tzv. strukturnom programiranju.
Zadani problem se dijeli na manje probleme koji se zatim neovisno rjeavaju i ponovo spajaju
kako bi se dolo do rjeenja zadanog problema. Strukturno programiranje karakterizira
nastojanje da se programer usredotoi na nain kako e rijeiti neki problem, a da pri tome ne
treba puno voditi rauna kako e se pojedina naredba izvesti na razini samog hardvera.
Programi se rastavljaju na potprograme (funkcije i procedure), koji se tada po potrebi mogu
pozivati u razliitim dijelovima programa. Strukturno programiranje poznato je jo i kao top
down, odnosno modularno programiranje. Najpoznatiji strukturni programski jezici su Pascal,
C, Basic, itd.
Zahvaljujui veoma brzom razvoju informatike javila se potreba za novim nainom
programiranja koje e biti jo efikasnije. Osnovni cilj je napraviti program iji e se dijelovi
moi ponovo upotrijebiti u drugim programima. Kao posljedica toga javlja se drugaiji nain
programiranja a to je objektno-orijentirano programiranje. Prvi korak pri rjeavanju problema
kod objektno-orijentiranog programiranja je unutar zadanog problema identificirati vane
dijelove koje nazivamo objekti. Sljedei korak je pronai odnose izmeu objekata.
elimo li npr. napisati program koji e simulirati vonju automobila, osnovni objekti koji e
karakterizirati taj problem bit e automobil i voza. Sljedei korak bio bi odrediti neka
osnovna svojstva objekata. U naem bi primjeru neka svojstva automobila bila marka
automobila, maksimalna brzina, ubrzanje, dok bi za vozaa neka od svojstava mogla biti ime i
prezime, visina, teina. Nadalje nam preostaje definirati neke operacije nad objektima.
Neke od operacija mogle bi biti poveavanje brzine, koenje. Kao to se moe primijetiti na
ovom primjeru, za svaki su objekt definirane neke osnovne karakteristike koje ga opisuju svojstva, te operacije koje se nad njim mogu izvravati - metode.
Programski jezici koji omoguavaju objektno-orijentirano programiranje zovu se objektno
orijentirani programski jezici. Svi noviji programski jezici su vie ili manje objektnoorijentirani. Java je jedan od najrasprostranjenijih programskih jezika koji je u potpunosti
objektno-orijentirani.

2. Pojmovi i definicije
Sama ideja objektno-orijentiranog programiranja potekla je iz realnog svijeta. Okrenemo li se
oko sebe vidjet emo neke objekte, npr. automobile, avione, zgrade, kue, motocikle,
televizore,... Prilikom programiranja nerijetko emo u svojim programima koristiti upravo
njih ili neke druge imaginarne objekte, kao sto su trokut, krug, broj, itd.
Kaemo li npr. automobil, avion ili trokut, mislimo na itavu klasu automobila, aviona ili
trokuta, mislimo na sve automobile, avione ili trokute. Meutim, kaemo li npr. crveni Audi
A3, izbor e biti ve malo smanjen, znat emo da su to samo crveni automobil marke Audi tip
A3. Znamo li npr. jo i registarsku oznaku znat emo tano koji je to automobil, a ako radimo
u policiji, znat emo sve i o vlasniku automobila, jainu motora, godinu proizvodnje,... Nakon
to znamo sve te detalje, vie ne govorimo o itavoj klasi automobila ve o konkretnom
automobilu, o objektu automobil.
Upravo tako je i u programiranju.
Klasa e biti svojevrstan predloak za objekt, ona sadri openita svojstva. Nakon to neku
klasu detaljno opiemo ona postaje objekt odnosno instanca. Instanca je samo drugi naziv za
objekt. Dakle, objekt odnosno instanca su konkretizacija klase. Takva konkretizacija klase,
definiranje osnovnih svojstava klase nazivamo kreiranje (instanciranje) objekta.

Primjer: Automobil
Neka osnovna svojstva automobila bila bi: marka, tip, snaga, maksimalna brzina,
snaga, boja, broj asije, registracijska oznaka. Ukoliko ne znamo sva navedena svojstva
ili bar veinu njih, govorimo o klasi automobil. Meutim ako kaemo to je Mazda,
121, snaga je 38 kw, maksimalna brzina je 180 km/h

plave je boje, klasu smo

uveliko smanjili. Znamo li jo i broj asije ili registracijsku oznaku znat emo tano o
kojem se automobilu radi i tada govorimo o tom automobilu kao objektu.

3. Karakteristike klase
Klase openito imaju neka svojstva. Osim svojstava, nad klasama je mogue izvravati
odreene radnje tzv. metode. Svojstva su u stvari neke globalne varijable dok su metode
funkcije (metode) definirane unutar neke klase. Openito svojstva i metode zovemo
elementima klase. Openito je cilj klase da njenim svojstvima i metodama moemo pristupati
iz drugih klasa. Generalno da bismo svojstvu ili metodi neke klase mogli pristupati iz druge
klase, one trebaju biti deklarirane public. Osim public, klasa moe imati i elemente (svojstva
ili metode) koji e biti samo pomoni za definiciju public metoda i ne trebaju se moi pozivati
u drugim klasama. Za takve emo metode rei da su private. Npr. u klasi u kojoj se nalazi
metoda koja provjerava je li neki broj prost, moe postojati metoda koja e brojati koliko neki
broj ima djelitelja a metoda moe biti pomona za metodu koja provjerava je li neki broj
prost, no nju ne moramo moi pozivati iz drugih klasa, stoga ona moe biti private metoda.

4. Konstruktor klase
Konstruktor klase je metoda unutar klase koja ima isto ime kao klasa a ne vraa nikakav tip.
Konstruktor se izvrava prilikom kreiranja objekta. On ne vraa nikakvu vrijednost a
namjena mu je inicijaliziranje svojstava objekta - postavljanje svojstava na neku poetnu
vrijednost. Jedna klasa moe imati jedan ili vie konstruktora. Mi objekt moemo kreirati bez
da znamo vrijednosti

svih svojstava te e se u tom sluaju svojstva postaviti na neke

inicijalne vrijednosti. U tom sluaju emo vrijednosti svojstava definirati kada ih saznamo.
Npr. ako imamo klasu auto, nije nuno da prilikom kreiranja objekta tipa auto znamo sva
njegova svojstva. U tom sluaju emo svojstva inicijalizirati na neke poetne vrijednosti,
npr. za maksimalna brzina e biti 100 km/h ako drugaije nije reeno. Ukoliko prilikom
kreiranja objekta znamo vrijednosti svih svojstava klase moemo
svojstvima. Upravo je to namjena vie konstruktora. U prvom
konstruktor

kreirati objekt s tim

sluaju

emo

pozvati

bez parametara koji e svojstva inicijalizirati na neku poetnu vrijednost,

najee 0 ako se radi o numerikim vrijednostima odnosno prazan string ako se radi o
tekstualnim vrijednostima to definira sam programer klase. U drugom sluaju emo pozvati
konstruktor sa parametrima koji e vrijednosti svojstava postaviti na vrijednosti koje smo
proslijedili preko parametara. Openito je sluaj da klasa moe imati dvije ili vie metoda
koje se jednako zovu. U tom sluaju one moraju imati razliiti broj parametara ili parametri

moraju biti razliitog tipa a za takve metode kaemo da su preoptereene (overlodane)


metode.

5. Kreiranje klasa
5.1.

Kreiranje klase na Java primjeru

Klasu u Javi emo openito kreitati na sljedei nain:

public class

_klase

svojstva_i_metode;
)

Definirajmo klasu Trokut, ija e svojstva biti duine stranica trokuta (a, b i c) a metode e
biti Opseg () i Povrina () koje e vraati opseg i povrinu trokuta.
Ovdje emo openito imati tri svojstva (duine stranica a, b i c) koja e biti public svojstva
jer im trebamo moi pristupiti iz drugih klasa. Nadalje emo imati dvije isto tako public
metode Opseg () i Povrina () za raunanje opsega i povrine trokuta. Osim toga imat emo
jednu private metodu Poluopseg () koja e vraati poluopseg trokuta a koja nam je potrebna
za raunanje povrine trokuta Heronovom formulom:
P= s( sa )( sb )( sc)

, pri emu je s poluopseg:

c
; Ovdje je loginoimati najmanje dva knstruktora .
( a+b+
2 )

Prvi konstruktor bez parametara koji e vrijednosti parametara a, b i c postaviti na 0. Drugi


konstruktor e imati tri parametra i inicijalizirati svojstva a, b i c na vrijednosti parametara.
Ovdje ak ima smisla staviti i konstruktor koji e imati jedan parametar a odnosit e se na
jednako-stranine trokute i on e vrijednosti parametara a, b i c postaviti na vrijednost
6

proslijeenog parametra. Konstruktor s dva parametra nema previe smisla, on bi se odnosio


na jednakokrane trokute, no on nije spretan jer bi moglo doi do zbrke koji je parametar
duina osnovice jednakotranog trokuta a koji duina kraka trokuta.

5.2.

Kreiranje objekta iz klase

Kao to smo ve rekli, osnovna namjena klase je koristiti je u drugim klasama, odnosno
svojim programima. Nakon to smo nauili kreirati vlastitu klasu, vrijeme je da pokaemo
kako tu klasu pozivati u drugim klasama, te kako pozivati i definirati njena svojstva te
pozivati njene metode.
Na klasu moemo gledati kao na jedan novi tip podataka, koji e imati neke vrijednosti i nad
kojim emo moi izvravati neke operacije tj. pozvati metode.
Kao i svaki drugi tip podataka, klasu trebamo deklarirati. Opi oblik deklariranja objekta iji
e tip biti neka klasa je:

Na ovaj nain smo u stvari samo najavili da emo koristiti objekt ime_objekta, koji e biti tipa
ime _klase. Taj objekt jo zapravo ne postoji. S takvim objektom ne moemo jo nita raditi.
Da bismo mogli neto raditi nad tim objektom (npr. izvravati metode koje smo definirali
u pripadnoj klasi) moramo ga instancirati, tj. zaista ga stvoriti.. Objekt emo instancirati na
sljedei nain:

Prilikom instanciranja klase, mi u stvari tvari izvravamo odreeni konstruktor i to onaj iji
broj i tip parametara odgovaraju broju i tipu parametara koje smo naveli prilikom
instanciranja klase. esto emo posljednje dvije naredbe ujediniti te emo istovremeno
deklarirati i kreirati objekt. To emo napraviti sljedeom naredbom:

6. Nasljeivanje klasa
Nasljeivanje je vrlo est pojam u objektno orijentiranom programiranju. Kao i kod samog
objektno orijentiranog programiranja, osnovna ideja nasljeivanja je izbjei viestruko pisanje
istih dijelova koda. Ideja je vrlo jednostavna: imamo jednu osnovnu klasu s osnovnim
svojstvima i metodama koje je opisuju, a onda po potrebi kreiramo nove klase koje je
"nadopunjuju" s nekim dodatnim svojstvima i metodama. Za takve klase koje "nadopounjuju"
osnovnu klasu rei emo da je nasljeuju.

Nasljeivanje je u nastavku ilustrirano na jednom jednostavnom primjeru:


Pretpostavimo da elimo organizirati svoju kolekciju DVD-a i elimo napraviti program koji
e nam to omoguit. Oito emo imati dvije vrste DVD-a: s filmovima i s glazbom.
Dakle kreirat emo dvije klase s pripadnim svojstvima i metodama:

Slika 1. Naslijeivanje klasa


Kao to moemo primijetiti, neka svojstva i metode se nalaze u obje klase i stoga i
moramo ih dva puta definirati. Problem moemo rijeiti tako da elemente koji se pojavljuju
u obje klase definiramo u jednoj posebnoj klasi DVD:

Slika 2. Definiranje posebne klase


Sada kada imamo definiranu klasu DVD, moemo kreirati i klase Film i Glazba koje
nasljeuju klasu DVD. Nasljeivanjem klase DVD, klase Film i Glazba automatski se
nasljeuju ista svojstva i metode klase DVD. Dakle, sva ta svojstva i metode ne trebamo jo
jednom definirati.
Openito pretpostavimo da imamo neku klasu A, koja ima svoja svojstva i metode. Klasu
A moe naslijediti klasa B, koja e u tom sluaju mati sva svojstva i metode kao i klasa A,
ali moe imati i jo neka svoja dodatna svojstva i metode. U tom sluaju je A nad klasa
klase B, dok emo za B rei da je pod klasa od klase A.
Kreiranjem instance klase B moi emo pozvati sve koje smo definirali u klasi B, ali i one
definirane u klasi A, dok emo kreiranjem instance klase A moi pozvati samo elemente klase
A. Pod-klasa tako takoer moe biti nad-klasa nekoj drugoj klasi i na taj nain je mogue
izgraditi hijerarhiju klasa.

Slika 3. Hijerarhija klasa

10

Klasu B koja e naslijediti klasu A kreiramo na sljedei nain:

Kod ovakve hijerarhije moe se desiti da je metoda s istim imenom kreirana u dvije klase koje
su na razliitom nivou u hijerarhiji. Npr. pretpostavimo da je u klasi A definirana metoda test
() i metoda s istim imenom definirana i u klasi B, koja nasljeuje klasu A.

Kako klasa B nasljeuje klasu A ona nasljeuje i njenu metodu test (), a isto tako ona ima i
svoju metodu test (). Kreiramo instancu klasd B te pozovemo metodu test (), nije sasvim jasno
koja metoda test () e se izvriti.
U ovakvim sluajevima izvrit e se metoda test () koja je definirana u klasi B i to se zove
prekoraenje (overrirde) metoda.
Openito smo mogli imati klasu C, koja nasljeuje klasu B (klasa C nema metodu test ()).
Pozivanjem metode test () nad instancom klase C izvrit e se metoda test () iz klase B. Dakle,
pravilo je takvo da se izvrava metoda iz prve nadklase.

11

12

Napomena:
Svaka klasa moe nasljeivati samo jednu klasu. Klasa moe imati samo jednu nad-klasu. S
druge strane neku klasu moe nasljeivati bilo koja klasa. Klasa moe biti podklasa.

13

7. Zakljuak
Klase i objekti su osnovne stvari bez kojih ojektno orjentirano programiranje ne bi bilo
zamislivo. Sama ideja objektno orijentiranog programiranja potekla je iz realnog svijeta.
Klase su svojevrstan predloak za objekt, one sadre openita svojstva. Nakon to neku klasu
detaljno opiemo ona postaje objekt odnosno instanca. Instanca je samo drugi naziv za
objekt. Dakle, objekt odnosno instanca su konkretizacija klase. Takva konkretizacija klase,
definiranje osnovnih svojstava klase nazivamo kreiranje (instanciranje) objekta. Klase i
objekti su osnovne stvari bez kojih ojektno orjentirano programiranje ne bi bilo zamislivo.

14

8. Literatura
1. Java objektno orjentisano programiranje Predrad Broanac
2. Java programiranje Skripta Univerzitet Vitez u Travniku

15

You might also like