You are on page 1of 29

BILD-IT

LEKCIJA 8: UVOD U OOP


OO PROGRAMIRANJE (OOP)

OOP podrazumijeva programiranje koristeći objekte. such definition, much knowledge.

Objekt → entitet iz stvarnog svijeta koji može biti jasno identifikovan.

Student, Krug, Olovka, Stol, Pas, Automobil….


OOP
Svaki objekt ima jedinstveno stanje, identitet i ponašanje.

Stanje objekta (properties, attributes) predstavljamo pomoću polja


podataka - data fields, “varijabli”.

Ponašanje objekta (actions) definišemo metodama.


OOP

Objekte istog tipa definišemo zajedničkom klasom.

Klasa → template koji definiše stanja i ponašanje objekta.

Objekt → instanca klase.


OOP

Objekte istog tipa definišemo zajedničkom klasom.

Klasa → template koji definiše stanja i ponašanje objekta.

Objekt → instanca klase.


OOP

Primjer: Olovka.java

Primjer: Pas.java
OOP

Odnos između klasa i objekta → recept za pitu i pita od jabuka.

Jedan recept, mnogo pita.


KONSTRUKTORI

Metoda posebnog tipa koju pozivamo da kreiramo novi objekt.

Konstruktori osmišljeni za incijalizaciju polja podataka objekta.

Mogu raditi bilo koju radnju, ne znači da trebaju.


KONSTRUKTORI

3 jedinstvene osobine konstruktora:

1. Konstruktor mora imati isto ime kao i klasa koja ga sadrži


2. Konstruktori nemaju return tip, čak ni void.
3. Konstruktore pozivamo sa new operatorom pri kreaciji objekta
KONSTRUKTORI

Primjer: OlovkaKonstruktor.java

Primjer: PasKonstruktor.java
KONSTRUKTORI

Kao i obične metode, konstruktori mogu biti overloadani → više


konstruktora, drugačiji parametri.

Ovo nam omogućava kreiranje objekata sa drugačijim početnim


vrijednostima.
UML DIJAGRAMI

Sistem koji koristimo za lakšu vizuelnu prezentaciju objekata i klasa.

UML → Unified Modeling Language

Primjer: Olovka
ZADATAK
PRISTUPANJE OBJEKTIMA

Nakon kreacije, objektnim stanjima i ponašanjima pristpupamo


pomoću tzv. dot operatora na referencim varijablama.

varijabla.polje → pristupanje polju podataka objekta


varijabla.metoda → pozivanje metode objekta
NULL

U Javi → varijabla predstavlja referencu na neki objekt / vrijednost.

Null → nepodešena referenca, ne pokazuje na neki objekt u memoriji.

Posebna vrijednost, literal, ništa.


NULL PRIMJER
Class Student {
String ime; // default vrijednost null
int godine; // default vrijednost 0
boolean poljeStudija; // default vrijednost false
char pol; //default vrijednost \u0000
}
STATIC

2 tipa varijabli: Instancne (objektne) i statične (klasne) varijable.

Instancne varijable → varijable vezane za specifičan objekt.

Klasne varijable → varijable zajedničke za sve objekte neke klase.


STATIC

Static varijable pohranjuju vrijednost u zajedničkoj memorijskoj lokaciji.

Ukoliko promijenimo vrijednost → svi objekti klase pogođeni.

Primjer: StaticOlovka.java && StaticOlovkaTest.java


STATIC

Static članovi klase (varijable i metode) ne mogu pristupati objektnim


članovima jer ne pripadaju specifičnom objektu.
MODIFIKATORI VIDLJIVOSTI
Visibility, access modifiers → definišu vidljivost članova naših klasa.
4 modifikatora:

1. public
2. protected
3. no modifier, default - tzv. package private
4. private
MODIFIKATORI VIDLJIVOSTI
ENKAPSULACIJA / DATA HIDING
Ukoliko postavimo naša stanja na private → štitimo podatke i
olakšavamo održavnje klase.

U prethodnom primjeru (StaticOlovka.java) neke članove možemo


modifikovati direktno → ovo je rijetko dobra praksa, iz više razloga.

Sa podacima se lakše manipuliše, klasa ranjiva na bugove i napade.


ENKAPSULACIJA
Krajni korisnik često mora da pristupi i modifikuje private stanje objekta

Da bi omogućili pristup private stanju objekta → getter metoda


(accessor)

Da bi omogućili mjenjanje private stanja objekta → setter metoda


(mutator)
PRIMJER

Primjer: OlovkaEnkapsulacija.java
IMMUTABLE OBJECTS

Kao što smo vidjeli - objektima možemo mjenjati stanje nakon kreacije.

Ukoliko ne želimo → immutable objekt, objekt koji ne mjenja stanje.

Klasa ovakvih objekata → Immutable klasa. (String klasa)


MISC.
this ključna riječ → način da objekt referencira samog sebe.

Više klasa u jednom fileu → moguće, samo jedna klasa može biti public.
Public klasa MORA imati isto ime kao i ime filea koji ju sadrži.

Objekat ne mora biti fizička stvar → transakcija, email, narudžba...


ZADATAK

Predstaviti svoj mobitel kao Java klasu + Java objekt.


ZADATAK

Modelirati student klasu + testirati par student objekata.


ZADATAK

Modelirati autor / pisac klasu, testirati.

BONUS: modelirati knjiga i druge potrebne klase, napraviti mini


knjizaricu.

You might also like