Download as pdf or txt
Download as pdf or txt
You are on page 1of 38

Osnovne strukture u Javi

Drugo predavanje

Prof. dr Kristijan Kuk

Osnovne akademske studije


Informatika i računarstvo
Konstruktori i klasa Date

 Konstruktori uvek imaju isto ime kao i klasa


 npr. konstruktor za klasu Date naziva se Date
Klasa Date je deo standardne
Jave i reprezentuje datum i
 Za konstrukciju nekog objekta vreme (tačku u vremenu).
koristi se kombinacija konstruktora i operatora new

Date birthday; //ne referencira


birthday = new Date(); //referencira

2 Projektovanje i modelovanje
Klasa Zaposleni
class Zaposleni{
//konstruktor
public Zaposleni(String im, double pl){
ime = n;
plata = s;
}

//metode
public void povecajPlatu(double procenat){
double p = plata * procenat /100;
plata += p;
}

public String getIme(){


return ime;
}

//atributi
private String ime;
private double plata;
}
3 Projektovanje i modelovanje
Main klasa
class GlavnaKlasa(){
public static void main (String[] args){
Zaposleni[] z = new Zaposleni[3];
z[0] = new Zaposleni(“Petar”, 15000);
z[1] = new Zaposleni(“Janko”, 25000);
z[2] = new Zaposleni(“Marko”, 30000);

for(Zaposleni zap : z){


//povecavamo platu za 5% svima
zap.povecajPlatu(5);
}

for(Zaposleni zap : z){


System.out.println(“Ime:”+zap.getIme()+
“, plata:”+zap.getPlata());
}
}
}
4 Projektovanje i modelovanje
Ključne reči public i private

 Sve metode u klasi Zaposleni su označene kao public


 označava da bilo koja metoda, u bilo kojoj klasi može da poziva
te metode
 Metode i atributi označeni ključnom rečju private se
mogu koristiti (i pozivati) samo iz klase u kojoj se nalaze
 Metode i atributi označeni ključnom rečju protected se
mogu pozivati samo iz klasa iz istog paketa ili iz bilo koje
potklase

5 Projektovanje i modelovanje
Ključna reč this

 U svakoj metodi, ključna reč this predstavlja referencu na


objekat iz kojeg je pozvana
class Zaposleni(){
private String ime;

public Zaposleni(String ime){


this.ime = ime;
}

public String getIme(){


return this.ime;
}
}

6 Projektovanje i modelovanje
Polja primerka tipa final

 Atribut može da se definiše kao final


 takvo polje se mora inicijalizovati u konstruktoru
 posle toga polje se ne može više menjati

class Zaposleni{

private final String ime;
}

7 Projektovanje i modelovanje
Statički atributi i metode

 Označavaju se ključnom rečju static


 Statički atributi
 znači da u klasi postoji samo jedan takav atribut
 nasuprot tome, svaki objekat ima sopstvenu kopiju svih
nestatičkih atributa
 uobičajeno je da se konstante označavaju kao static
 Statičke metode
 metode koje se ne izvršavaju na objektima
 iz njih se ne može pristupiti nestatičkim atributima

8 Projektovanje i modelovanje
Komentari u Javi

 Ne pokazuju se u izvršnom programu

 Postoje tri načina za pisanje komentara:


 // - komentar počinje od ovog znaka, a završava se na kraju
reda
 /* … */ - označava početak i kraj komentara (pogodno za veće
komentare)
 /** … */ - za komentare koji će ući u automatsku izradu
dokumentacije

9 Projektovanje i modelovanje
Tipovi podataka

 Java je strogo tipiziran jezik – svaka promenljiva mora


imati deklarisan tip
 Razlikuju se:
 celobrojni tipovi
 int (4 bajta), short (2 bajta), long (8 bajtova), byte (1 bajt)
 tipovi za brojeve u pokretnom zarezu
 float (4 bajta), double (8 bajtova)

Izabrani tip u većini situacija je double (u odnosu na float), s obzriom


da je float ograničen na maksimalno 7 značajnih decimalnih cifara,
što često nije dovoljno (u odnosu na 15 cifara kod double-a).

10 Projektovanje i modelovanje
Tipovi podataka

 char – znakovni tip Savet: Izbegavati korišćenje tipa char.


Gotovo je uvek bolje koristiti stringove.
 2 bajta
 kao vrednost uzima znake (velika i mala slova, cifre, specijalne
znakove)

 boolean – logički tip


 ima dve vrednosti: false i true
 ne može se vršiti konverzija između celobrojnih i boolean
vrednosti

11 Projektovanje i modelovanje
Promenljive

 Svaka promenljiva ima neki tip


 Deklarisanje promenljive: tip imePromenljive
double brPoena;
int ocena1, ocena2;
boolean polozio = true;

 Naziv promenljive mora započeti slovom i mora biti


sekvenca slova i cifara
 u Javi izrazi “cifra” i “slovo” imaju šire značenje

12 Projektovanje i modelovanje
Prebrojivi tipovi

 U nekim situacijama promenljiva može sadržati ograničen


skup vrednosti (primer: odeća može imati vrednosti
“small”, “medium” i “large”)
 Prebrojivi tip se definiše na sledeći način:

enum Velicina {SMALL, MEDIUM, LARGE};


//…
Velicina v = Velicina.SMALL;

13 Projektovanje i modelovanje
Konstante

 Označavaju se ključnom rečju final


final double CM_PER_INCH = 2.54;

 Klasne konstante – dostupne većem broju metoda unutar


klase
 označavaju se ključnim rečima static final
 ukoliko se ispred static final nalazi i ključna reč public, onda
mogu biti dostupne i metodama izvan klase
static final boolean BOOL_CONST = true;
public static final int INT_CONST = 10;

14 Projektovanje i modelovanje
Operatori

 Aritmetički operatori
 sabiranje (“+”)
 oduzimanje (“-”) Ukoliko su oba argumenta celi brojevi,
operator “/” označva celobrojno deljenje.
 množenje (“*”)
 deljenje (“/”)
 ostatak pri celobrojnom deljenju (“%”)
 Operatori inkrementiranja i dekrementiranja
 “++” i “--”
int m = 7, n = 7;
int a = 2 * ++m; // a je 16, a m je 8
int b = 2 * n++; // b je 14, a n je 8

15 Projektovanje i modelovanje
Operatori

 Relacioni i logički operatori


 jednakost (“==“)
 nejednakost (“!=”)
 manje od (“<”)
 veće od (“>”)
 logičko “i” (“&&”)
 logičko “ili” (“||”)
 negacija (“!”)
 ternarni operator “?” – uslov ? izraz1:izraz2

16 Projektovanje i modelovanje
Konverzije između numeričkih
tipova

 Često je potrebno konvertovati jedan numerički tip u


drugi
 Postoji šest legalnih konverzija koje ne dovode do gubitka
informacija
 byte u short, short u int, char u int, int u double, int u long, int u
double, float u double
 Postoje tri legalne konverzije koje mogu dovesti do
gubitka informacija int n = 123456789;
 int u float, long u float, long u double float f = n; /*f ima
ispravnu vrednost,
ali gubi preciznost*/

17 Projektovanje i modelovanje
Eksplicitne promene tipova
(“kastovanje”)

 U situacijama kada eksplicitno želimo konvertovati


(“kastovati”) neki tip u drugi
 sintaksa je da se ciljni tip zada zagradama praćenim imenom
tipa
 može doći do gubitka informacija

double x = 9.997;
int nx = (int) x; // x ima vrednost 9

18 Projektovanje i modelovanje
Matematičke funkcije i konstante

 Klasa Math sadrži skup matematičkih funkcija i konstanti


koje se mogu koristiti
 Neke od funkcija:
 Math.sin, Math.cos, Math.tan, Math.atan, Math.exp, Math.log...
 Neke od konstanti
 Math.PI, MathE

// stepenovanje
// u Javi ne postoji operator stepenovanja
double y = Math.pow(x, a);

19 Projektovanje i modelovanje
Stringovi

 Predstavljaju objekte klase String (paket java.lang)

 Stringovi su sekvence (Unicode) znakova

 “KPU – predstavlja konstantan objekat klase String

String greeting = “Hello”;


String e = “”; //prazan string

20 Projektovanje i modelovanje
Stringovi

 Metoda length vraća veličlinu stringa


String greeting = “Hello”;
int n = greeting.length();

 Metoda charAt(int n) vraća karakter na poziciji n


char first = greeting.charAt(0);
char last = greeting.charAt(4);

 Metoda substring() vraća podstring


String str = “Hello”;
String sStr = str.substring(0,3);
//sStr ima vrednost “Hel”;

21 Projektovanje i modelovanje
Stringovi

 Metode toLowerCase i toUpperCase konvertuju sva


slova stringa u mala, odnosno velika slova
 Metode startsWith(String) i endsWith(String) vraćaju
boolean vrednost u zavisnosti da li string počinje (odnosno
se završava) prosleđenim podstringom
 Za spajanje stringova može se koristiti operator “+”

String str = “Ovo “+”je “+”spojeni string.”;

22 Projektovanje i modelovanje
Stringovi

 Još neki metodi klase String:


 indexOf, lastIndexOf
 trim – uklanja nepotrebne beline sa početka i kraja stringa
 equals, equalsIgnoreCase

Važno: Za poređenje jednakosti


dva stringa ne koristiti operator
“==“, jer taj operator samo utvrđuje
da li se ta dva stringa nalaze na
istoj adresi.

23 Projektovanje i modelovanje
Ulaz i izlaz

 Česta je situacija da programi zahtevaju određeni ulaz, koji


obrađuju, a onda vraćaju rezultat na neki izlaz

 Moderni programi za ulaz i izlaz koriste GUI uz pomoć


SWING biblioteke, a trenutno će se opisati uzlaz i izlaz
preko konzole

24 Projektovanje i modelovanje
Ispis na konzolu

System.out.println(“Tekst...”);
System.out.print(“Tekst...”);

Savet: Prečica u NetBeans-u otkucati “syso”,


pa CTRL+SPACE.

25 Projektovanje i modelovanje
Klasa Scanner

 Scanner klasa se koristi za parsiranje primitivnih tipova i


stringova

 Rastavlja svoj ulaz na tokene, pri čemu je podrazumevani


delimiter belina

 Rezultujući tokeni se mogu konvertovati u vrednosti


različitih tipova, koristeći razne next metode

26 Projektovanje i modelovanje
Čitanje ulaza

 Za čitanje ulaza najpre je potrebno kreirati objekat klase


java.util.Scanner, kome se prosleđuje standardni ulazni tok
(System.in)
 Korišćenjem različitih metoda klase Scanner može se
pročitati ulaz
 npr. metoda nextLine čita red ulaza

Scanner in = new Scanner(System.in);


System.out.println(“Vase ime:”);
String ime = in.nextLine();

27 Projektovanje i modelovanje
Metode klase Scanner

 useDelimiter() – postavlja proizvoljni delimiter


 next, hasNext, nextInt, nextDouble, hasNext...
 Konstruktori (važniji):
 public Scanner(InputStream source)
 public Scanner(File source)
 public Scanner(String source)

Scanner sc = new Scanner(new File(”myNumbers”));


while(sc.hasNextLong())
long aLong=sc.nextLong();

28 Projektovanje i modelovanje
Kontrola toka

 Naredba if
 sintaksa: if (uslov) then { naredba1;} else {naredba2;}
 zagrade nisu potrebne potrebne ukoliko se naredbe ne
predstavljaju blok naredbi
 deo else je opcioni
if (a==b) then {
System.out.println(“Jednaki”);
System.out.println(“brojevi.”);
}
else
System.out.println(“Nisu jednaki.”);

29 Projektovanje i modelovanje
Kontrola toka
switch ( ocena ) {
case 1:
 Naredba switch System.out.println("Nedovoljan");
break;
 u slučaju da nema case 2:
System.out.println("Dovoljan");
break-a, izvršili bi se break;
svi uslovi od prvog case 3:
System.out.println("Dobar");
koji odgovara uslovu break;
case 4:
 u slučaju da nijedan System.out.println("Vrlo dobar");
uslov ne odgovara, break;
case 5:
izvršiće se default System.out.println("Odlican");
deo break;
default:
System.out.println("Nista od
navedenog");
break;
}

30 Projektovanje i modelovanje
Kontrola toka

 Ciklusi while i do while


while ( i < n ) {
System.out.println(i + " : Java");
i++;
}

do {
System.out.println(i + " : Java");
i++;
} while (i < n);

31 Projektovanje i modelovanje
Kontrola toka

 Ciklus for
for (int i = niz.length-1; i >= 0; i--) {
System.out.print(niz[i]);
if ( i > 0)
System.out.print(", ");
}

 Naredba continue – nastavlja izvršavanje petlje od


početka, uz preskakanje naredbi ispod continue
 Naredba break – prekida izvršavanje petlje

32 Projektovanje i modelovanje
Nizovi

 Predstavljaju strukturu podataka koja čuva kolekciju


vrednosti istog tipa
 Nizovska promenljiva čuva referencu niza (ne sam niz)
 sam niz je poseban entitet koji će biti negde drugo u memoriji
 Svakoj pojedinačnoj vrednosti pristupa se kroz celobrojni
indeks
 Primer: ako je a niz, onda a[i] predstavlja i-ti element niza

33 Projektovanje i modelovanje
Deklaracija nizovske promenljive

int[] niz; ili int niz[];

 Na ovaj način samo je deklarisana nizovska promenljiva –


niz još uvek ne postoji u memoriji

 Da bi se alocirala memorija za niz potrebno je još navesti


tip podatka i broj elemenata

34 Projektovanje i modelovanje
Definicija niza

int[] niz; //deklaracija


niz = new int[10]; //definicija

 Na ovaj način kreiran je niz koji će sadržati deset


elemenata tipa int
 Moguće je i jednom naredbom deklarisati i definisati niz
 ključna reč new ukazuje da se alocira nova memorija za niz
 podaci su inicijalno popunjeni nulama

int[] niz = new int[10];

35 Projektovanje i modelovanje
Nizovi

 Atribut (a ne metod) niza length sadrži broj elemenata


koje niz sadrži
 automatski se ažurira

 Inicijalizacija nizova
//prvi nacin
int []niz2 = {1,2,3,4,5};

//drugi nacin
int niz2[] = new int[10];
niz2[0] = 5; niz2[1] = 3;

36 Projektovanje i modelovanje
For-each petlja

//prolazi kroz svaki element niza


for (double vred : niz){
prosek += vred;
}
prosek /= niz.length;

 Petlja iterira kroz svaki element niza


 Može se koristiti i za kolekcije
 Za obradu dela niza mora se koristiti standardna petlja

37 Projektovanje i modelovanje
Nizovi nizova
// deklaracija
int[][] m;

// definicija
m = new int[3][4];
m[1][3] = 4;
m[0][1] = 1;
m[2][3] = 5;
m[1][0] = 3;

 Na primeru je prikazan dvodimenzionalni niz


 Moguće je i kreirati nizove nizova promenljive dužine

38 Projektovanje i modelovanje

You might also like