OBJEKTNO ORIJENTISANO PROGRAMIRANJE - KLASE I OBJEKTI

Jedna od ideja koja leži u osnovi objektno orijentisanog softvera je da se softver organizuje na način koji odgovara načinu razmišljanja objektno orijentisanog mozga. Umesto mašinskih instrukcija koje menjaju bitove u glavnoj memoriji, mi želimo "stvari" koje nešto "rade". Naravno da se na mašinskom nivou ništa nije promenilo, obrasci bitova se i dalje menjaju preko mašinskih instrukcija. Promena je u tome što mi ne moramo da razmišljamo na taj način.
Pitanje: Navedite nekoliko objekata.
Olovka, tastatura, cipele, sto
Pitanje: Šta je to što karakteriše neki objekat.Prva stavka iz ove liste je suviše restriktivna. Mogu postojati i objekti koji nisu opipljivi. Prisetite se svog računa u banci. Premda to nije materijalna stvar, račun ima svoje osobine (stanje, vlasnika) i vi sa njim možete da činite neke stvari (da podižete novac, ugasite ga). U skladu sa ovim može se reći da jedan objekat:Objekat ima stanje, ponašanje i identitet. Struktura i ponašanje sličnih objekata su definisani njihovom zajedničkom klasom.
​PRIMERE IZ OVE OBLASTI MOŽETE NAĆI NA SLEDEĆOJ WEB STRANI: Klase i objekti - primeri

Video lekcije


VIDEO 1: Klase i objekti u JAVI

​Klase i objekti, Java, programiranje, Objektno orijentisano programiranje, Tacke u ravni, Konstruktori, Metode objekta,

VIDEO 2: Objekti i Metode u Javi

Metode kao sastavni deo objekta. Metode koje vraćaju i ne vraćaju vrednost. Definicija i pozivanje metoda. Pozivi metoda iz uvezenih klasa.

​VIDEO 3: Statičke promenljive i metode

Statičke promenljive. Promenljive kao osobine klase. Statične metode. Razlika između promenljivih kao osobina objekta i statičnih promenljivih. Primer sa kvadratima i trouglovim

​VIDEO 4: Enkapsulacija objekta. geteri i seteri

Kako se vrši i šta predstavlja Enkapsulacija objekta u Javi. Sakrivanje atributa objekta. Upotreba Getera i Setera u klasi.

​VIDEO 5: Vidljivost podataka u klasi

​Razlika između lokalnih podataka, definisanih u metodi i polja za klasu.

Složeni podaci-objekti


 Za rezervisanje memorije objekta koristimo sledeći obrazac:

tip_podatka naziv_podatka=new konstruktor(parametri_konstruktora);

Za tip podatka se koristi naziv Klase kojoj pripada objekat. Npr. ako objekat pripada klasi Scanner onda bi definicija tog objekta koji ćemo nazvati ucitavac biti:

​Scanner ucitavac=new Scanner(System.in);

Definisanje složenog podatka.

 softverski objekti imitiraju objekte iz prirode, tako da i jedni i drugi imaju:​​

Klasa-kao opis objekta

 Klasa objekta je zapravo opis svih objekata koji joj pripadaju, a to su objekti koji imaju iste:
​Definisanjem objekta mi smo ga kreirali po opisu (Klasi) i on će imati osobine i metode tamo navedene :

Metode klase Scanner

U klasi Scanner postoje navedene neke metode npr:Objekti u prirodi i softverski objekti imaju​Softverski objekti imaju identitet pošto zauzimaju poseban deo memorije. Softverski objekat je poseban, čak i ako izgleda isto kao neki drugi objekat.
Softverski objekti imaju stanje. Deo memorije koju zauzima softverski objekat se koristi za promenljive koje sadrže vrednosti.
Softverski objekti imaju ponašanje. Deo memorije koju oni zauzimaju se troši za skladištenje metoda (programa) koji objektu omogućavaju da "nešto radi". Objekat nešto radi, kada se izvršava neki od njegovih metoda

Ako pretpostavimo da za objekat uzmemo početni dijalog prozor iz prikazane aplikacijeSoftverski objekti: Primer Dialog-Frame​Na sledećoj slici je prikazana slika tog objekta u memorijiKlase i objekti-struktura objektaSa prikazane slike tog objekta u memoriji zaključujemo:

Klasa objekta

Klase i objekti na primeru tačaka u ravni:

tekst zadatka: Kreirati 3 objekta koji predstavljaju tri tačke u ravni A,B,C. Premestiti tačku A u novi položaj A1.
§Prikazati koordinate tačaka posle premeštanja. Podaci tačaka su dati na slici.
Klase i objekti-primer Tačke u ravni



A(2,4)

B(5,-2)

C(-4,2)
​
A1(1,3)

Uočimo da sva tri objekta pripadaju istoj klasi jer imaju iste osobine x i y.To će biti 3 različite istance(objekata) iste klase
Stanje tačke A će se u toku programa promeniti, ali ne i osobine.
Da bi kreirali objekte prvo moramo da kreiramo klasu koja će da ih opisuje. Klasu ćemo nazvati Tacka. U njoj ćemo navesti zajedničke atribute x i y koje će imati sva 3 objekta.
​

​Klasa Tacka

Klase i objekti - klasa Tačka
Klase i objekti-Tačke u ravni glavna klasa 2 ​
Kreirajmo glavnu klasu i pozicionirajmo se na početak main metode

Klase i objekti-Tačke u ravni glavna klasa 3 ​
​Kreirajmo sva tri objekta, tj. rezervišimo memoriju za njih koristeći klasu Tacka kao opis

Klase i objekti-Tačke u ravni glavna klasa 3
​Da bi došli do osobina kreiranih objekta koristimo operator ”.”

Klase i objekti-Tačke u ravni glavna klasa 4 ​
​U listi koja se otvorila vidimo osobine i metode koju su opisane klasom Tacka. Ovde vidimo i neke nasleđene metode, o nasleđivanju ćemo kasnije govoriti

Klase i objekti-Tačke u ravni glavna klasa 5 ​
​Sada ćemo zadati sve koordinate na način kako je prikazano na slici levo.

Klase i objekti-Tačke u ravni glavna klasa 6
Slika 9: Klase i objekti-Tačke u ravni glavna klasa 6
​
Da bi premestili tačku A u novi položaj ponovo postavimo nove vrednosti x i y za objekat A
I na kraju se prikazuju podaci o tačkama:Klase i objekti-Tačke u ravni glavna klasa. Prikaz podataka
Slika 10: Klase i objekti-Tačke u ravni glavna klasa. Prikaz podataka

Primer: Geometrijski Oblici

Tekst zadatka:Kreirati objekte, za dva kvadrata i jedan krug. uneti stranice kvadrata i poluprečnik kruga i izračunati njihove površine.Rešenje:
S obzirom da dva objekta koji predstavljaju kvadrate imaju iste osobine: stranica a i površina P, možemo da kažemo da pripadaju istoj klasi, klasi koja opisuje bilo koji kvadrat. Možemo da damo naziv ovoj klasi npr Kvadrat ili Opis_Kvadrata, i taj "opis" će važiti za bilo koji kvadrat.
Sa druge strane, objekat koji predstavlja krug nema ste osobine kao kvadrat, dakle, on pripada drugoj klasi koju možemo da nazovemo npr. Krug ili Opis_Kruga. Postoji i ona "glavna" klasa, od koje se program startuje i koja ima main metodu u sebi. Neka se ta klasa zove kao i projekat: GeometrijskiOblici. Unutar ove klase se kreiraju objekti i kontroliše tok celokupnog programa. Klase su kreirane na sledeći način. Klasa Kvadrat, u sebi ima atribute kvadrata: a(stranica), P(površina) i prazan konstruktor.
U sledećoj lekciji biće reči o metodama, kao sastavnim delovima klasa i konstruktorima klasa: Metode i objektiKlasa Kvadrat:
package geometrijskioblici;

import java.util.Math;
public class Kvadrat
{

double a; //Stranica kvadrata kao polje ili atribut klase
double P; //Površina kvadrata kao polje ili atribut klase


//Konstruktor bez parametra
public Kvadrat() {
}
}
Klasa Krug:
package geometrijskioblici;

import java.util.Math;
public class Krug
{

double r; //Poluprečnik kruga kao polje ili atribut klase
double P; //Površina kruga kao polje ili atribut klase


//Konstruktor bez parametra
public Krug() {
}
}
Prvo treba kreirati nov projekat klikom na ikonicu "New Project", vidi sliku: Kreiranje novog projekta u Javi
Slika 11: Kreiranje novog projekta u Javi
Zatim dati naziv "GeometrijskiOblici", podesiti željenu lokaciju i kliknuti na dugme "Finish", vidi sliku:Kreiranje novog projekta u programskom jeziku Java, zadavanje naziva projekta i lokacije
Slika 12: Kreiranje novog projekta u programskom jeziku Java, zadavanje naziva projekta i lokacije
Kreiran je nov projekat koji u sebi ima generisan paket "geometrijskioblici" i u njemu fajl GeometrijskiOblici.java u kojem se nalazi klasa pod istim imenom, a to je glavna klasa, vidi sliku: Kreiranje novog projekta u programskom jeziku Java, završetak
Slika 13: Kreiranje novog projekta u programskom jeziku Java, završetak
Da bi se dodale preostale dve pomenute klase "Kvadrat" i "Krug" treba kliknuti desnim klikom na paket geometrijskioblici, a zatim u kontekst meniju klinuti na "New Class", što se može videti na sledećoj slici:Dodavanje novih klasa u Javi, u NetbeansIDE
Slika 14: Dodavanje novih klasa u Javi, u NetbeansIDE

​Glavna klasa je prikazana u nastavku:
package geometrijskioblici;

import java.util.Math;
import java.util.Scanner;
public class GeometrijskiOblici
{
public static void main(String[] args)
{
Scanner ucitavac=new Scanner(System.in);//Kreira se objekat za ucitavanje podataka
Kvadrat kvadrat1=new Kvadrat(); //Kreira se objekat prvog kvadrata
Kvadrat kvadrat2=new Kvadrat(); //Kreira se objekat drugog kvadrata
Krug krug1=new Krug(); //Kreira se objekat klase krug

/*Učitavanje podataka*/
System.out.println("Unesite redom stranice oba kvadratai poluprečnik kruga");
kvadrat1.a=ucitavac.nextDouble(); //Poziva metodu objekta koji vraća učitan double podatak
kvadrat2.a=ucitavac.nextDouble(); //Poziva metodu objekta koji vraća učitan double podatak
krug1.r=ucitavac.nextDouble(); //Poziva metodu objekta koji vraća učitan double podatak

/*Računanje površina objekata kvadrata i kruga*/
kvadrat1.P=kvadrat1.a*kvadrat1.a; //Računanje površine 1. kvadrata
kvadrat2.P=kvadrat2.a*kvadrat2.a; //Računanje površine 2. kvadrata
krug1.P=krug1.r*krug1.r*Math.PI; //Računanje površine kruga

/*Ispis rezultata*/
System.out.println("Površina 1. kvadrata: "+kvadrat1.P);
System.out.println("Površina 2. kvadrata: " +kvadrat1.P);
System.out.println("Površina kruga: "+krug1.P);
}
}
Ovde vidimo da su dva objekta, kvadrat1 i kvadrat2 kreirani po istom opisu(šablonu), a to je klasa koja ih opisuje pod nazivom Kvadrat. Treba uočiti da je reč o istoj klasi za dva različita objekta. Treći objekat, krug1 je kreiran tako što je za opis uzeta klasa "Krug". Pri kreiranju objekata se poziva Konstruktor klase koji ima isti naziv kao klasa.
Dakle za kreiranje objekata klase Kvadrat i konstruktor se tako zove, dok se pri kreiranju objekta klase Krug konstruktor takođe zove "Krug". To je metoda koja služi da se objektima u trenutku kreiranja daju neke početne vrednosti njihovim atributima. O tome će niti više reči u narednoj lekciji.
Za učitavanje se koristi objekat klase Scanner, koja mora biti importovana:
​
import java.util.Scanner;
U nastavku, posle učitavanja, se izračunavaju površine sva 3 objekta, a zatim i ispisuju rezultati. Pristup podacima koji predstavljaju atribute pojedinih objekta se vrši pomoću referenci tih objekata. Npr da bi se "dohvatio" podatak površine drugog kvadrata to se mora uraditi na sledeći način:
​
kvadrat2.P
Posle pokretanja aplikacije i unosa podataka ispisane su vrednosti površina, vidi sliku:Aplikacija GeometrijskiOblici, kreirana u Javi, izvršenje
Slika 15: Aplikacija GeometrijskiOblici, kreirana u Javi, izvršenje

​​Prethodno
​|<Nizovi u programskom jeziku Java
Sledeće
Metode i objekti>|

Srodni članci

Grafika u Javi
Podaci u Javi
Euklidov algoritam
Internet stvari
Trendovi u programiranju