OBJEKTNO ORIJENTISANO PROGRAMIRANJE
PREDAVANJE 3 – DEFINICIJA KLASE U JAVI
Miloš Kovačević
Đorđe Nedeljković
1 /18
OSNOVNI KONCEPTI
- Polja
- Konstruktori
- Metode
- Parametri
- Povratne vrednosti
- Dodela vrednosti
2 /18
DEMO – AUTOMAT ZA PRODAJU GSP KARATA
3
- Otvoriti projekat naive-ticket-machine u folderu chapter02
- Demonstracija mogućnosti aparata za prodaju karata
/18
OSNOVNA STRUKTURA KLASE
- Interakcija sa objektom u BlueJ-u omogućava shvatanje njegovog ponašanja
- Pogled u izvorni kod klase otkiva kako je ponašanje implementirano
- Sve Java klase imaju istu strukturu unutrašnje implementacije
4
public class TicketMachine
{
// unutrašnjost klase izostavljena
}
public class ImeKlase
{
Polja
Konstruktori
Metode
}
Zaglavlje klase
TicketMachine
Sadržaj
klase
/18
SINTAKSA I SEMANTIKA
- Sitaksa jezika definiše pravila po kojima se reči jezika ređaju u ispravne rečenice u datom jeziku
- Ispravno ≠ smisleno
- Primer: Pera jede Javu u procesoru. – sintaksno ispravno, ali besmisleno
- Sintaksa programskog jezika definiše koje kombinacije simbola i ključnih reči jezika (naredbi) predstavljaju ispravne delove programskog koda
- Semantika se bavi značenjem jezičkih konstrukcija (delova programskog koda)
- Sintaksno ispravan program nije nužno i korektan program
5 /18
DEFINICIJA KLASE U JAVI
- Početak i kraj klase: { },
- Jednoredni komentari: //
- Komentari omogućavaju lakše čitanje koda
- Naziv klase se po konvenciji piše velikim početnim slovom
- Višerečni nazivi klase pišu se spojeno, svako prvo slove nove reči veliko
- Primer: TicketMachine, KompleksniBroj, KasikaBagera, RadniNalog, ...
- Čitljivost koda je jedan od primarnih ciljeva dobrog dizajna
6
public class TicketMachine
{
// unutrašnjost klase izostavljena
}
/18
POLJA
- Polja skladište vrednosti svojstava objekata (polje implementira svojstvo)
- Vrednosti svih polja u objektu definišu njegovo stanje
- Sintaksa za polja:
7
public class TicketMachine
{
private int price;
private int balance;
private int total;
//Ostalo izostavljeno
}
private int price;
modifikator
vidljivostitip
ime polja
public class ImeKlase
{
Polja
Konstruktori
Metode
}
separator
/18
KONSTRUKTORI
- Konstruktori su metode koje se pokreću prilikom kreiranja objekta iz klase
- Moraju da se zovu isto kao i klasa (sintaksa jezika)
- Konstruktor inicijalizuje vrednosti polja (postavlja objekat u početno stanje)
- Često od spolja primaju parametre kojima se vrši inicijalizacija
8
public class ImeKlase
{
Polja
Konstruktori
Metode
}
public TicketMachine(int ticketCost)
{
price = ticketCost;
balance = 0;
total = 0;
}
separator
/18
PROSLEĐIVANJE PODATAKA PREKO PARAMETARA
9 /18
DODELA VREDNOSTI
- Vrednosti se skladište u polja kroz naredbu dodele vrednosti:
promeljiva = izraz;
- Primer:
price = ticketCost;
obim = 2*r*pi;
suma = 0;
...
- Nakon dodele prethodna vrednost promenljive se briše
10/18
METODE
- Metode implementiraju ponašanje objekata
- Metode se sastoje od zaglavlja (potpis) i tela
- Potpis metode govori o nameni metode (šta radi), a telo o implementaciji (kako radi)
- Metoda getPrice() vraća vrednost polja price – aksesor metoda11
public class ImeKlase
{
Polja
Konstruktori
Metode
}
public int getPrice()
{
return price;
}
povratni tip ime metode
lista parametara
(ovde prazna)
početak i kraj tela metode
return naredba
modifikator
vidljivost
/18
METODE
- Metode mogu da menjaju stanje objekta (dodeljuju nove vrednosti poljima)
- Metoda insertMoney(int amount) menja stanje – metoda mutator
12
public class ImeKlase
{
Polja
Konstruktori
Metode
}
public void insertMoney(int amount)
{
balance = balance + amount;
}
povratni tip
ime metode tip parametra
modifikator
vidljivost
naredba dodele
polje kome se
menja vrednost
parametar
/18
KONSTRUKTORI
- Konstruktor = specijalna metoda
- Sintaksa za konstruktore odstupa od sintakse za metode u dva elementa:
- Ime konstruktor metode mora da bude isto kao i ime klase
- Ne deklariše se povratni tip podatka jer se podrazumeva da konstruktor vraća novi objekat
13
public class ImeKlase
{
Polja
Konstruktori
Metode
}
public TicketMachine(int ticketCost)
{
price = ticketCost;
balance = 0;
total = 0;
}
public void insertMoney(int amount)
{
balance = balance + amount;
} /18
SINTAKSA - TEST
14
public class Proizvod
{
private cena;
public Proizvod()
{
cena = 300
}
public int dajCenu
{
return Cena;
}
public class Proizvod
{
private int cena;
public Proizvod()
{
cena = 300;
}
public int dajCenu()
{
return cena;
}
}
/18
TIPOVI PODATAKA
- Primitivni i objektni (klasni)
- Primitivni tipovi – tipovi podatka kod kojih se u promeljivoj skladišti vrednost
15
ime tipa opis Primer
Celi brojevi
byte
short
int
long
8-bitni ceo broj
16-bitni ceo broj
32-bitni ceo broj
64-bitni ceo broj
25
138
-5432
178468187687L
Realni brojevi
float
double
pokretni zarez – jednostruka tačnost
pokretni zarez – dvostruka tačnost
3.14f
3.14
Ostali
char
boolean
jedan karakter – 16 bita
logička vrednost (true ili false)
’m’
true
/18
TIPOVI PODATAKA – STRING KLASA
- Objekti klase String predstavljaju proizvoljne nizove alfanumeričkih znakova
- Primer: ”Ovo je string”, ”strana br. 100 ”, ” @*[ ];&% ”, …
- Primer dodele vrednosti:
String ime = ”Петар Петровић”;
- Konkatenacija stringova
4 + 5
═ 9
“mena" + “džment"
═ “menadžment"
"Rezultat: " + 6
═ „Rezultat: 6"
"# " + price + " cents"
═ "# 500 cents" 16/18
ŠTAMPANJE
17
public void printTicket()
{
// Simulate the printing of a ticket.
System.out.println("##################");
System.out.println("# The BlueJ Line");
System.out.println("# Ticket");
System.out.println("# " + price + " cents.");
System.out.println("##################");
System.out.println();
// Update the total collected with the balance.
total = total + balance;
// Clear the balance.
balance = 0;
}
/18
TEST
System.out.println(5 + 6 + "hello");
System.out.println("hello" + 5 + 6);
18
11hello
hello56
/18