You are on page 1of 8

VEBE 03 STATIC ATRIBUT, NIZ KAO PARAMETAR KLASE

STATIC ATRIBUT
Svaka klasa moe imati atribut koji je zajedniki za sve instance te klase.
Definie se kljunom rei static
Promena tog atributa u bilo kojoj instanci klase menja taj atribut svim njenim instancama
Vrednost atributa se dohvata preko imena klase a i preko njene instance
Sa static atributom se moe raditi samo u okviru static metoda
ZADATAK 1 : Definisati klasu Krug da ima:
Privatna Polja: x, y (koordinate centra kruga) : integer
Privatno polje r (poluprenik kruga) : integer

Javno static polje: broj, privatnog set svojstva: integer

Set i Get metode


Javni podrazemevani konstruktor koji inicijalizuje vrednosti polja x, z i r na 0,
Javni parametarizovani konstruktor za parametre (X, Y, R)

NAPOMENA: u okviru oba konstruktora podesiti polje broj tako da predstavlja broj kreiranih
instanci klase Krug u glavnom delu programa.

Javnu metodu: povrsina() : double, koja rauna povrinu


Override metode toString() za ispis na ekranu poruke sedeeg formata: Povrsina kruga
parametara X = 1, Y = 2, R = 3 je: 28.26

U glavnom delu programa (main) :


Ispisati vrednost polja broj
Kreirati instacu klase Krug : a, pomou podrazumevanog konstruktora
Ispisati vrednost polja broj
Kreirati instacu klase Krug : b, pomou parametarizovanog konstruktora
Ispisati vrednost polja broj
Dodeliti vrednosti poljima objekta a preko kreiranih svojstava.
Demostrirati poziv metode povrsina na ispisu povrina Krugova a i b
Koje e vrednosti ispisivati na monitoru prilikom ispisa vrednosti polja broj u prethodno
definisanim trenutcima.
Mogu li sledei kodovi izvriti u okviru main dela programa (objasniti):

Krug.broj = 5;
a.broj = 5;

REENJE:
public class Krug {
private int x,y,r;
public static int broj;
public Krug(){
x = y = r = 1;
//uvecavanje static atributa
++broj;
}
public Krug(int x, int y, int r){
this.x = x;
this.y = y;
this.r = r;

//uvecavanje static atributa


++broj;

public void setX(int x) {


this.x = x;
}
public void setY(int y) {
this.y = y;
}
public void setR(int r) {
this.r = r;
}
public double povrsina(){
return r*r*Math.PI;
}
@Override
public String toString() {
return ("Povrsina kruga parametara X = "+x+", Y = "+y+", R =
"+r+" je: "+povrsina());
}
}

public class Glavna {


public static void main(String[] args) {
System.out.println("static broj = " + Krug.broj);
Krug a, b = new Krug(3, 5, 7);

// 0

System.out.println("static broj = " + Krug.broj);

// 1

a = new Krug();
a.setX(1);
a.setY(2);
a.setR(3);
System.out.println("static broj = " + Krug.broj);

// 2

System.out.println(a);
//Povrsina kruga parametara X = 1, Y = 2, R = 3 je: 28.274333882308138
System.out.println(b);
//Povrsina kruga parametara X = 3, Y = 5, R = 7 je: 153.93804002589985

Krug.broj = 5;
a.broj = 5;

// OK: atribut je public


// OK: pristupa se preko instance klase

VEBA: promeniti da static atribut broj bude private


ZADATAK 2 :
Definisati klasu Proizvod da ima:
Private Polja: naziv : string
Private Polja: kolicina : int
Private Polja: cena : int
Public parametarizovani konstruktor (string, int, int)
Public int metodu ukupnaVrednost(): vraca proizvod cene i kolicine
Set i get metode po potrebi
U glavnom delu programa (main) :
Kreirati globalnu funkciju double ukupno(Proizvod[]): vraca ukupnu vrednost svih
proizvoda
Kreirati globalnu funkciju double srvr(Proizvod[]): vraca srednju vrednost svih proizvoda
Kreirati globalnu funkciju double brProizvoda(Proizvod[]): vraca broj proizvoda
Definisati nekoliko instanci klase proizvod preko parametarizovanog konstruktora
Kreirati niz Proizvoda od kreiranih instanci klase Proizvod
Istestirati pozive globalnih funkcija.
REENJE 1:

public class Proizvod {


private String naziv;
private int kolicina;
private int cena;
public Proizvod(){}
public Proizvod(String n, int k, int c){
naziv = n;
kolicina = k;
cena = c;
}
public int ukupnaVrednost(){
return cena*kolicina;
}
public int getKolicina() {
return kolicina;
}
}
public class Glavna {
public static double ukupno(Proizvod[] niz){
double s = 0;
for (Proizvod p : niz)
s += p.ukupnaVrednost();
return s;
}
public static double srvr(Proizvod[] niz){
double srvr = 0;
int br = 0;

for (Proizvod p : niz){


srvr += p.ukupnaVrednost();
br += p.getKolicina();
}
return srvr/br;

public static double brProizvoda(Proizvod[] niz){


int br = 0;
for (Proizvod p : niz){
br += p.getKolicina();
}
return br;
}

public static void main(String[] args) {


Proizvod
Proizvod
Proizvod
Proizvod
Proizvod

p
r
o
i
z

=
=
=
=
=

new
new
new
new
new

Proizvod
Proizvod
Proizvod
Proizvod
Proizvod

("Jafa", 50, 85);


("Plazma", 40, 80);
("Euro Krem", 10, 500);
("Negro", 20, 50);
("Smoki", 50, 25);

Proizvod[] niz = {p,r,o,i,z};

System.out.println("Ukupno : "+ ukupno(niz));


System.out.println("Srednja vrednost : "+ srvr(niz));
System.out.println("Broj proizvoda : "+ brProizvoda(niz));

REENJE 2:
package rs1;
public class Proizvod {
private String naziv;
private int kolicina, cena;
public Proizvod(String naziv, int kolicina, int cena) {
super();
this.naziv = naziv;
this.kolicina = kolicina;
this.cena = cena;
}
public Proizvod() {
super();
}
public int ukupnaVrednost(){
return cena*kolicina;
}
@Override
public String toString() {
return naziv+"\t"+kolicina+"\t"+cena+"\t="+ukupnaVrednost();
}

}
package rs1;
public class Glavna {
public static int ukupno(Proizvod[] a){
int s=0;
for (Proizvod proizvod : a) {
if(proizvod!=null)
// provera da li postoji proizvod
s+= proizvod.ukupnaVrednost();
}
return s;
}
public static double srvr(Proizvod[] a){
int s=0, br=0;

for (Proizvod proizvod : a) {


if(proizvod!=null){
// provera da li postoji proizvod
br++;
s+= proizvod.ukupnaVrednost();
}
}
return (double)s/br;
}
public static int broj(Proizvod[] a){
int br = 0;
for (Proizvod proizvod : a) { // provera da li postoji proizvod
if(proizvod!=null)
br++;
}
return br;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Proizvod [] a = new Proizvod[3];
Proizvod p1 = new Proizvod("plazma", 50, 80);
Proizvod p2 = new Proizvod("smoki", 100, 30);
Proizvod p3 = new Proizvod("krem", 25, 500);
a[0] = p1;
a[1] = p2;
//a[2] = p3;

// probati sa i bez a[2]

for (Proizvod proizvod : a) {


System.out.println(proizvod);
}
System.out.println("Ukupna vrednost:"+ukupno(a));
System.out.println("Srednja vrednost:"+srvr(a));
System.out.println("Broj :"+broj(a));

ZAKLJUAK:
Niz je kreiran u glavnom programu.
Globalne metode su kreirane u glavnoj klasi.
Globalne metode nisu vezane za instancu klase Proizvod, ali imaju niz proizvoda kao parametar
metode.
Ukoliko svi elementi niza nisu inicijalizovani onda je u metodama potrebno proveravati da li su
razliciti od null.

ZADATAK 3 : Modifikovati zadatak 2 da ima klasu Prodavnica sa nizom Proizvoda


Definisati klasu Proizvod da ima:
Private Polja: naziv : string
Private Polja: kolicina : int
Private Polja: cena : int
Public parametarizovani konstruktor (double, int, int)
Public int metodu ukupnaVrednost(): vraca proizvod cene i kolicine
Set i get metode po potrebi
Definisati klasu Prodavnica da ima:
Private polje: proizvodi: Proizvod[]
Public metodu double ukupno(): vraca ukupnu vrednost svih proizvoda
Public metodu double srvr(): vraca srednju vrednost svih proizvoda
Public metodu double brProizvoda(): vraca broj proizvoda
Public parametarizovani konstruktor (Proizvod[])
U glavnom delu programa (main) :
Definisati nekoliko instanci klase proizvod preko parametarizovanog konstruktora
Kreirati niz Proizvoda od kreiranih instanci klase Proizvod
Kreirati instancu klase Prodavnica preko niza proizvoda
Istestirati pozive metoda klase Prodavnica.
REENJE:
// klasa Proizvod je ista
public class Prodavnica {
private Proizvod[] proizvodi;
public Prodavnica(Proizvod[] niz){
proizvodi = new Proizvod[niz.length];
for (int i=0; i < niz.length; i++){
proizvodi[i] = niz[i];
}
}
public double ukupno(){
double s = 0;
for (Proizvod p : proizvodi)
s += p.ukupnaVrednost();
return s;
}
public double srvr(){
double srvr = 0;

int br = 0;

for (Proizvod p : proizvodi){


srvr += p.ukupnaVrednost();
br += p.getKolicina();
}
return srvr/br;

public double brProizvoda(){


int br = 0;
for (Proizvod p : proizvodi){
br += p.getKolicina();
}
return br;
}

public class Glavna {


public static void
Proizvod p =
Proizvod r =
Proizvod o =
Proizvod i =
Proizvod z =

main(String[] args) {
new Proizvod ("Jafa", 50, 85);
new Proizvod ("Plazma", 40, 80);
new Proizvod ("Euro Krem", 10, 500);
new Proizvod ("Negro", 20, 50);
new Proizvod ("Smoki", 50, 25);

Proizvod[] niz = {p,r,o,i,z};


Prodavnica pr = new Prodavnica(niz);
System.out.println("Ukupno : "+ pr.ukupno());
System.out.println("Srednja vrednost : "+ pr.srvr());
System.out.println("Broj proizvoda : "+ pr.brProizvoda());
}

ZAKLJUAK:
Klasa Prodavnica ima niz proizvoda kao parameter.
Metode su definisane unutar klase Prodavnica.
Poto se nalaze unutar iste klase metode nemaju niz proizvoda kao pamarametar funkcije, jer im
je niz dostupan za rad.

You might also like