+ All Categories
Home > Documents > Programiranje u Javi, I - Open Source...

Programiranje u Javi, I - Open Source...

Date post: 06-Sep-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
11
Transcript
Page 1: Programiranje u Javi, I - Open Source Daysopensourcedays.hr/wp-content/uploads/2017/12/Programer... · 2018. 4. 26. · Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID 1.1 Povijesni razvoj
Page 2: Programiranje u Javi, I - Open Source Daysopensourcedays.hr/wp-content/uploads/2017/12/Programer... · 2018. 4. 26. · Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID 1.1 Povijesni razvoj

Autori: Daniel Bele Filip Tomić Danijel Kučak, dipl.ing. Urednik: Domagoj Ružak, mag.ing.aedif.

Naslov: OSNOVE JAVA PROGRAMIRANJA ZA ANDROID

Izdanje: 2. izdanje

Stručni recenzent: Ivan Mesic

Lektorica: Iva Lednicki Grafički urednik: Krešimir Pletikosa, ACE

Nakladnik: Algebra d.o.o., 2015.

Za nakladnika: mr.sc. Mislav Balković, dipl.ing.

Mjesto i godina izdanja: Zagreb, 2015.

Sva prava pridržana. Niti jedan dio ove knjige ne smije se reproducirati ili prenositi u bilo kojem obliku, niti na koji način. Zabranjeno je svako kopiranje, citiranje te upotreba knjige u javnim i privatnim edukacijskim organizacijama u svrhu organiziranih školovanja, a bez pisanog odobrenja nositelja autorskih prava. Copyright © Algebra d.o.o. CIP zapis dostupan u računalnom katalogu Nacionalne i Sveučilišne knjižnice u Zagrebu pod brojem ISBN 978-953-322-198-4

Page 3: Programiranje u Javi, I - Open Source Daysopensourcedays.hr/wp-content/uploads/2017/12/Programer... · 2018. 4. 26. · Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID 1.1 Povijesni razvoj

Sadržaj:1. Poglavlje: UVOD........................................................................................................................................................ 3

1.1 Povijesni razvoj i osnovna svojstva Jave ........................................................................................................... 41.2 Java platforma ................................................................................................................................................... 4

1.2.1 Kako radi Java ............................................................................................................................................... 41.3 Razvoj Java programa ....................................................................................................................................... 6

1.3.1 Prevođenje Java aplikacija ............................................................................................................................ 61.3.2 Izvršavanje Java aplikacija ............................................................................................................................ 71.3.3 Appleti ........................................................................................................................................................... 7

1.4 Klase i objekti u Javi – kratki uvod ..................................................................................................................... 8

2. Poglavlje: UVOD U RAZVOJNE ALATE ................................................................................................................. 112.1 Što je Eclipse? ................................................................................................................................................. 122.2 Instalacija Eclipsea .......................................................................................................................................... 12

2.2.1 Java Runtime Environment – JRE ............................................................................................................... 122.2.2 Java Development Kit ................................................................................................................................. 132.2.3 Eclipse ......................................................................................................................................................... 13

3. Poglavlje: OSNOVNE STRUKTURE JAVA PROGRAMSKOG JEZIKA ................................................................. 153.1 Varijable i izrazi ................................................................................................................................................ 16

3.1.1 Cjelobrojne varijable .................................................................................................................................... 163.1.2 Decimalne varijable ..................................................................................................................................... 183.1.3 Znakovne varijable ...................................................................................................................................... 193.1.4 Logičke varijable.......................................................................................................................................... 203.1.5 Predefinirane vrijednosti primitivnih tipova i prioritet operatora ................................................................... 203.1.6 Pretvaranje između podatkovnih tipova....................................................................................................... 223.1.7 Matematičke funkcije i konstante ................................................................................................................. 233.1.8 Komentari u programskom kodu ................................................................................................................. 24

4. Poglavlje: PETLJE I KONTROLA TIJEKA ............................................................................................................. 274.1 Iskazi kontrole tijeka programa ........................................................................................................................ 28

4.1.1 Iskaz if - else ............................................................................................................................................... 284.1.2 Iskaz switch ................................................................................................................................................. 304.1.3 Uvjetni operator ........................................................................................................................................... 32

4.2 Iteracijski iskazi ................................................................................................................................................ 334.2.1 While petlja .................................................................................................................................................. 334.2.2 Do..while petlja ............................................................................................................................................ 344.2.3 For petlja ..................................................................................................................................................... 35

5. Poglavlje: POLJA .................................................................................................................................................... 395.1 Polja ................................................................................................................................................................. 40

5.1.1 Pristupanje elementima polja ...................................................................................................................... 415.1.2 Višedimenzionalna polja.............................................................................................................................. 425.1.3 Korisne operacije nad poljima ..................................................................................................................... 495.1.4 ArrayList klasa ............................................................................................................................................. 51

6. Poglavlje: NIZOVI ZNAKOVA ................................................................................................................................. 556.1 Klasa String ..................................................................................................................................................... 56

6.1.1 Spajanje ( engl. concatenating ) nizova znakova ........................................................................................ 576.1.2 Metoda charAt() ........................................................................................................................................... 576.1.3 Metoda equals() .......................................................................................................................................... 576.1.4 Metoda endsWith() ...................................................................................................................................... 586.1.5 Metoda indexOf() ......................................................................................................................................... 586.1.6 Metoda length() ........................................................................................................................................... 596.1.7 Metoda split() ............................................................................................................................................... 606.1.8 Metoda startsWith() ..................................................................................................................................... 606.1.9 Metoda substring() ...................................................................................................................................... 616.1.10 Metoda toLowerCase()............................................................................................................................ 616.1.11 Metoda toUpperCase()............................................................................................................................ 626.1.12 Metoda trim() ........................................................................................................................................... 62

Page 4: Programiranje u Javi, I - Open Source Daysopensourcedays.hr/wp-content/uploads/2017/12/Programer... · 2018. 4. 26. · Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID 1.1 Povijesni razvoj

7. Poglavlje: KLASE .................................................................................................................................................... 657.1 Uvod ................................................................................................................................................................ 66

7.1.1 Deklaracija klase ......................................................................................................................................... 667.1.2 Modifikatori pristupa .................................................................................................................................... 677.1.3 Instanciranje objekata ................................................................................................................................. 677.1.4 Konstruktori ................................................................................................................................................. 717.1.5 Ključna riječ this .......................................................................................................................................... 737.1.6 Uništavanje objekata ................................................................................................................................... 73

7.2 Paketi ............................................................................................................................................................... 747.2.1 Stavljanje klase u paket ............................................................................................................................... 74

7.3 Statički članovi ................................................................................................................................................. 757.3.1 Statički uvoz ................................................................................................................................................ 777.3.2 Statičke metode za pristup statičkim poljima ............................................................................................... 787.3.3 Korištenje statičkog inicijalizacijskog bloka.................................................................................................. 78

7.4 Metode ............................................................................................................................................................. 797.4.1 Preopterećivanje metoda i konstruktora ...................................................................................................... 79

8. Poglavlje: NASLJEĐIVANJE I POLIMORFIZAM.................................................................................................... 818.1 Nasljeđivanje ................................................................................................................................................... 828.2 Polimorfizam .................................................................................................................................................... 888.3 Apstraktne klase .............................................................................................................................................. 908.4 Klasa Object .................................................................................................................................................... 918.5 Metode s promjenjivim brojem argumenata ..................................................................................................... 93

9. Poglavlje: SUČELJA ............................................................................................................................................... 959.1 Sučelja ............................................................................................................................................................. 969.2 Nasljeđivanje sučelja ....................................................................................................................................... 989.3 Sučelja i višestruko nasljeđivanje .................................................................................................................... 989.4 Korištenje sučelja............................................................................................................................................. 99

10. Poglavlje: IZNIMKE ........................................................................................................................................... 10310.1 Uvod .............................................................................................................................................................. 10410.2 Iznimke u Javi ................................................................................................................................................ 104

10.2.1 try/catch/finally blok ............................................................................................................................... 10410.2.2 Podjela iznimaka ................................................................................................................................... 10510.2.3 Obrađivanje više iznimaka i redoslijed obrade ...................................................................................... 11010.2.4 throw i throws naredbe .......................................................................................................................... 112

10.3 Izrada vlastitih klasa iznimaka ....................................................................................................................... 113

11. Poglavlje: ULAZNO-IZLAZNI TOKOVI ............................................................................................................. 11511.1 Osnovno o tokovima ...................................................................................................................................... 11611.2 Binarni i znakovni tokovi ................................................................................................................................ 117

11.2.1 Binarni tokovi ........................................................................................................................................ 11711.2.2 Znakovni tokovi ..................................................................................................................................... 118

11.3 Međuspremnici .............................................................................................................................................. 11911.4 Dohvat podataka unesenih preko tipkovnice i ispis na konzolu ..................................................................... 121

11.4.1 Dohvat podataka preko tipkovnice ........................................................................................................ 12111.4.2 Ispis podataka na konzolu ..................................................................................................................... 121

12. Poglavlje: KOLEKCIJE ..................................................................................................................................... 12512.1 Generički tipovi .............................................................................................................................................. 12612.2 Kolekcije ........................................................................................................................................................ 127

12.2.1 Kolekcijski okvir ..................................................................................................................................... 12812.2.2 Sučelje Collection ................................................................................................................................. 12912.2.3 Sučelje Set............................................................................................................................................ 12912.2.4 Sučelje List............................................................................................................................................ 14112.2.5 Sučelje Map .......................................................................................................................................... 14712.2.6 Operacije na kolekcijama objekata ....................................................................................................... 154

Page 5: Programiranje u Javi, I - Open Source Daysopensourcedays.hr/wp-content/uploads/2017/12/Programer... · 2018. 4. 26. · Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID 1.1 Povijesni razvoj

U ovom poglavlju naučit ćete:

Što je Java

Osnovna obilježja Jave

Gdje i kako nabaviti Javu

Prevođenje i izvršavanje Java programa

Što je Applet

1. Poglavlje: UVOD

Page 6: Programiranje u Javi, I - Open Source Daysopensourcedays.hr/wp-content/uploads/2017/12/Programer... · 2018. 4. 26. · Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID 1.1 Povijesni razvoj

Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID

1.1 Povijesni razvoj i osnovna svojstva Jave Java je programski jezik razvijen početkom 90-ih godina prošlog stoljeća u tvrtki Sun Microsystems. Na čelu razvojne skupine bio je James Gosling. Java je većinu svoje sintakse naslijedila od C/C++ i Smalltalk jezika.

Osnovna je ideja razvojne skupine bila razviti novi jezik koji bi sintaksom sličio tadašnjim najpopularnijim jezicima (C/C++), ali koji bi s druge strane donio i neka nova svojstva, deficitarna u tada postojećim jezicima.

Postojalo je 5 osnovnih ciljeva koje je Java kao novi programski jezik trebala doseći. Trebala je, dakle, biti:

1. jednostavan i objektno orijentiran jezik, 2. neovisna o arhitekturi (portabilna), 3. robusna i sigurna, 4. programski jezik s visokim performansama te 5. interpretirana, višenitna i dinamična.

Možda je jedno od najvažnijih svojstava Jave, i svakako svojstvo po kojem je Java poznatija, portabilnost. Ideja je da se Java aplikacije razvijene na jednom operativnom sustavu mogu nepromijenjene izvršavati i na ostalim operativnim sustavima koji podržavaju Javu, tj. koji imaju instaliranu Java virtualnu mašinu (JVM). Na taj je način ušteda vremena i resursa kod razvoja i održavanja velikih aplikacija na različitim platformama velika.

Java je objektno orijentirani programski jezik. Objektno orijentirane aplikacije jednostavnije su za razumijevanje i održavanje od aplikacija koje nisu razvijane objektno orijentiranim pristupom. Ne samo da je Java objektno orijentirana, već ona izbjegava i neka svojstva koja su se u drugim objektno orijentiranim programima pokazala ne baš najboljima, npr. višestruko nasljeđivanje koje je Java zabranila.

1.2 Java platforma Java aplikacije mogu se izvršavati na različitim operativnim sustavima. Tako možete izvršavati Java aplikacije na Windows operativnom sustavu, Linuxu, Solarisu itd. To je moguće jer se Java aplikacije ne izvršavaju izravno na samom računalu, nego unutar JVM-a. JVM je skup programa koji kreiraju virtualno računalo, odnosno računalo unutar računala koje je sposobno interpretirati Java aplikacije, tj. izvršavati ih. Svaki operativni sustav na kojem se žele izvršavati Java aplikacije mora imati instaliran JVM. JVM možemo shvatiti kao sučelje (engl. interface) između Java aplikacije s jedne strane i samog operativnog sustava (s pripadajućom hardverskom platformom) s druge strane. Sama JVM nije portabilna, ona je svojstvena operativnom sustavu.

1.2.1 Kako radi Java

Izvorni kôd Java programa piše se u datotekama s ekstenzijom .java. Java prevoditelj (javac)pretvara izvorni kôd u objektni kôd. Objektni kôd često zovemo i bajt kôd, a sastoji se od jedne ili više datoteka s ekstenzijom .class. Objektni kôd interpretira, odnosno izvršava Java interpreter,sastavni dio JVM.

Page 7: Programiranje u Javi, I - Open Source Daysopensourcedays.hr/wp-content/uploads/2017/12/Programer... · 2018. 4. 26. · Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID 1.1 Povijesni razvoj

1. Poglavlje: UVOD Str. 5

Java izvorni kod

Java prevoditelj

Java objektni kôd

JVM (Java interpreter)

Operativni sustav

Objektni kôd se provjerava i puni u JVM

Prevoditelj pretvara Java izvorni kôd u objektni kôd

Java interpreter izvršava naredbe i komunicira s operativnim sustavom stroja na kojem se program izvodi

Page 8: Programiranje u Javi, I - Open Source Daysopensourcedays.hr/wp-content/uploads/2017/12/Programer... · 2018. 4. 26. · Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID 1.1 Povijesni razvoj

Str. 6 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID

1.3 Razvoj Java programa Danas je mnogo raznih razvojnih okruženja za pisanje Java programa. Primjeri takvih razvojnih okruženja su IBM Rational Application Developer, NetBeans, Borland JBuilder itd. Razvojna okruženja nam svojim alatima asistiraju pri pisanju programa jer između ostalog automatski kreiraju određene dijelove kôda te označavaju sintaksu, što je vrlo korisna mogućnost za iskusnije programere. Koliko god je korištenje takvih alata pogodno programerima, za početnike je bolje krenuti u Java svijet bez korištenja tih alata jer oni često generiraju kôd koji početnik ne razumije ili nije ni svjestan da je uopće generiran. Iz tih ćemo razloga za početak koristiti Java Development Kit (Java 2 platforma, standardno izdanje, verzija 8 ili novija; Java SE 8). Java Development Kit (u daljnjem tekstu JDK) je skup alata (npr. prevoditelj), biblioteka klasa, izvedbenih okruženja (Java Virtualna Mašina) koji nudi sve što treba za kreiranje Java programa. Vrijedi napomenuti da i sva spomenuta razvojna okruženja „ispod površine“ koriste JDK za prevođenje i izvršavanje Java programa. Sve o JDK-u možete pronaći i besplatno ga skinuti s adrese http://www.oracle.com/technetwork/java/javase/downloads/index.html.

1.3.1 Prevođenje Java aplikacija

Na početku pisanja Java programa potreban nam je tekstualni editor. Tu nema nikakvih dodatnih zahtjeva, prikladan je bilo koji tekstualni editor. Izvorna Java datoteka uvijek ima ekstenziju .java.Jednom kad je izvorna datoteka kreirana i spremljena, treba ju prevesti. To radimo koristeći naredbu javac koja predstavlja poziv prevoditelju. javac MojProgram.java

Ovdje je javac poziv prevoditelja koji se nalazi unutar JDK-a, a MojProgram.java je naziv datoteke s Java izvornim kôdom koju želite prevesti.

MojProgram.java - primjer

//MojProgram.java public class MojProgram { public static void main(String[] args) { //ispisivanje teksta na standardni izlaz System.out.println("Dobro došli u Java svijet!"); } }

Program ima sljedeći ispis:Dobro došli u Java svijet!

Napomenimo da pri ovakvom pozivu prevoditelja, gdje ne navodimo putanju do .java datoteke, pretpostavljamo da se ona nalazi u trenutačno aktivnoj mapi.

Uz pretpostavku da u vašem programu nema pogrešaka, produkt prevođenja je datoteka s tzv. objektnim kôdom (bajtkôd, engl. bytecode) koja se kreira u istoj mapi kao i izvorna datoteka koju smo preveli. Da je bilo (sintaktičkih) pogrešaka u izvornom kôdu, prevoditelj ne bi generirao objektni kôd i ispisao bi poruke o greškama koje je pronašao pri pokušaju prevođenja.

Page 9: Programiranje u Javi, I - Open Source Daysopensourcedays.hr/wp-content/uploads/2017/12/Programer... · 2018. 4. 26. · Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID 1.1 Povijesni razvoj

1. Poglavlje: UVOD Str. 7

1.3.2 Izvršavanje Java aplikacija

Za izvršavanje objektnog kôda koristimo naredbu java koja je također dio JDK-a.

java MojProgram

Vrlo je bitno primijetiti jedno važno obilježje koje nam na prvu ruku možda izgleda i kao nedosljednost. Kad prevodimo datoteku naredbom javac, obavezno pišemo i ekstenziju datoteke koju prevodimo. Kod pokretanja ne pišemo extenziju .class.

1.3.3 Appleti

Osim programa koji se pokreću na prethodno opisani način, postoje programi pisani u Javi koji se izvršavaju u malo drugačijem okruženju. Primjeri takvih programa su apleti. Apleti se izvršavaju unutar web-preglednika (internetskog preglednika). Točnije, aplet se izvršava unutar JVM-e koja je „instalirana“ u internetski preglednik (tzv. Java 2 plugin). Ideja apleta je dati internetskim stranicama dinamiku, omogućiti im da mogu imati više funkcionalnosti od čistog prikazivanja teksta i grafike. Aplet se ne pokreće kao standardne java aplikacije koristeći naredbu java, nego se ucjepljuje unutar HTML stranice koristeći odgovarajuću oznaku (engl. tag). Kad korisnik u internetski preglednik utipka adresu neke internetske stranice koja sadržava i aplet, skupa se s ostalim resursima (slike, javascript datoteke itd.) s web-poslužitelja skida i objektni kôd (.class datoteka) apleta te se, ako preglednik ima instaliran Java plugin, aplet počinje izvršavati unutar preglednika.

MojAplet.java – primjer:

//MojAplet.java import javax.swing.JApplet; import java.awt.Graphics; public class MojAplet extends JApplet { //ispisuje tekst na površini apleta; vidjet će se unutar //internet preglednika public void paint(Graphics g) { g.drawOval(20, 20, 400, 250); g.drawString("Pozdrav iz apleta", 180, 150); } }

Ovdje nećemo ulaziti u detalje, dovoljno je zasad znati da je ovo primjer apleta za koji imamo mogućnost prikazivanja unutar internetskog preglednika. Da bismo to mogli, treba nam i HTML stranica koja uključuje aplet. To se radi pomoću predefiniranog HTML taga <applet>. Potpuno je nebitno o kojem je pregledniku riječ, bitno je samo da je on „Java enabled“, tj. da ima ucijepljenu Java virtualnu mašinu.

Page 10: Programiranje u Javi, I - Open Source Daysopensourcedays.hr/wp-content/uploads/2017/12/Programer... · 2018. 4. 26. · Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID 1.1 Povijesni razvoj

Str. 8 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID

Evo i primjera kako bi mogla izgledati HTML datoteka s uključenim apletom.

<html> <head>

<title>Stranica sa ucijepljenim apletom</title> </head> <body> <h1>Stranica sa ucijepljenim apletom</h1> <applet code="MojAplet.class" width="800" height="600" />

</body> </html>

Prethodni primjer unutar web-preglednika izgleda ovako:

1.4 Klase i objekti u Javi – kratki uvod

Java je objektno orijentiran programski jezik. To je izjava koju ćete čuti ili pročitati gdje god se susreli s Javom. U ovom poglavlju nećemo ići u detalje, ali ćemo pokušati u kratkim crtama pobliže pojasniti osnovne ideje objektno orijentirane paradigme primijenjene u Javi. Ako ste već upoznali to područje, ovo će biti dobar podsjetnik i uvod u sljedeća poglavlja, a ako niste, ovo je dobro mjesto za učenje osnovnih ideja. U nekim ćemo od sljedećih poglavlja pojedine aspekte ove teme detaljnije obraditi.

Jedno od osnovnih pitanja koja se postavljaju vezano za ovu temu jest pitanje zašto uopće postoji objektno orijentirano programiranje, tj. zašto uopće primijeniti objektno orijentirani pristup ako su se problemi rješavali i prije pojave tih jezika?Kad programirate u nekom od jezika koji ne koristi objektno orijentirani pristup, rješenje je svakog problema više-manje izraženo u terminima brojki i slova, osnovnih vrsta podataka kojima manipulirate u programu. U objektno orijentiranim jezicima pristup je drugačiji. Vi možete definirati tipove podataka koji su relevantni upravo za problem koji rješavate. Problem rješavate koristeći pojmove i objekte iz stvarnog svijeta. Na primjer, ako se problem koji rješavate tiče studenata na fakultetu, onda su potencijalni tipovi, odnosno objekti s kojima ćete raditi u vašem Java programu

Page 11: Programiranje u Javi, I - Open Source Daysopensourcedays.hr/wp-content/uploads/2017/12/Programer... · 2018. 4. 26. · Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID 1.1 Povijesni razvoj

1. Poglavlje: UVOD Str. 9

Student, Kolegij, Ispit, Prijavnica itd. S druge strane, ako rješavate problem u odjelu računovodstva, onda su očigledni kandidati za objekte u vašem programu Račun, Ponuda, itd.

Objekti su svuda oko nas. Studenti, kolegiji, automobili, biljke, životinje, mobiteli, računi… sve su to primjeri nekih objekata. Kad kažemo student, mislimo općenito, mislimo na skup svojstava koja opisuju sve studente. Primjeri tih svojstava su broj indeksa, datum rođenja, adresa stanovanja, završena srednja škola. Način na koji se u objektno orijentiranim okruženjima opisuje taj skup zajedničkih svojstava realnih entiteta je klasa.

Klasa je specifikacija, odnosno predložak koji definira svojstva koja opisuju odgovarajuću vrstu objekata. Tako ćemo u klasi Student pokušati opisati zajednička svojstva svih studenata koji su nam bitni u kontekstuproblema koji rješavamo. Klasa se kroz sam programski jezik implementira kao dio programskog kôda. Ne postoji pravilo koje kaže što se stavlja u klasu, a što ne. Ključni pojam koji se veže za definiranje klasa je apstrakcija. Apstrakcija znači odvajanje bitnog od nebitnog u smislu konteksta problema koji rješavamo. Konkretno, ako razvijamo poslovnu aplikaciju koju će koristiti fakultet, tada je broj indeksa studenta nama bitna stvar, dok nas broj otkucaja srca studenta ne zanima. Zašto? Zato jer je to za naš konkretan kontekst nebitna informacija, dok bi ta (ista) informacija bila bitna u medicinskoj aplikaciji. Mi smo ti koji definiramo klase tako da to najbolje odgovara problemu koji rješavamo.

Slijedi primjer vrlo jednostavne definicije klase Student.

//Student.java class Student { //definicije svojstava studenta visoke škole //koja svojstva ima student na visokoj školi ovisi //o aplikaciji koja se razvija int brojIndeksa; String ime; String prezime; }

Klasama ćemo se detaljnije baviti u 6. poglavlju, iako će svi primjeri i prije toga koristiti klase jer druge mogućnosti i nemamo; svaki Java program mora kreirati barem jednu klasu. Osnovni pojmovi o klasama navedeni u ovom poglavlju biti će sasvim dovoljni za razumijevanje materije do poglavlja 6.


Recommended