Java - Pomoć za rešavanje zadatka [HITNO]

NixAAAA

Početnik
Poruka
3
Molim vas moze li mi neko pomoci da uradim ovo, stvarno mi je hitno a bas sam zaglavio.

Assignment - Objektno orijentisano programiranje u Javi

Zamislite da je potrebno da modelujete informacioni sistem jedne trgovine. Potrebno je da napravite klasu Product koja će predstavljati osnovu za dalje nasleđivanje i neće se moći instancirati. Ovu klasu nasleđuju dve klase koje predstavljaju konkretne grupe proizvoda: Chocolate i Wine. Ova hijerarhija prikazana grafikom izgleda ovako:
JCPR_M_05_01.jpg


Svaki proizvod poseduje određene osobine:
  • naziv proizvoda,
  • bar-kod,
  • osnovnu cenu,
  • porez.

Takođe, svaki proizvod poseduje i metodu za računanje cene, koja se izračunava tako što se osnovna cena uveća za iznos poreza. Porez (PDV) za svaki proizvod je 20% i ovo je podatak koji je konstantan i neće se menjati.
Ipak, proizvodi iz grupe vina, imaju i dodatni porez, pošto spadaju u grupu alkoholnih pića i on iznosi 10% od cene već uvećane za iznos PDV-a. I ovo je podatak koji je konstantan i neće se menjati.
Zbog ovoga je potrebno redefinisati metodu za računanje cene samo u okviru klase Wine.
Pored ovoga, klasa Wine treba da poseduje atribut koji definiše zapreminu boce, a klasa Chocolate atribut koji definiše težinu.
U klasama Chocolate i Wine, potrebno je napraviti parametrizovane konstruktore za kreiranje objekata.
Potrebno je, takođe, u svim klasama redefinisati metodu toString za prikaz informacija o objektu.
Na kraju je potrebno u test klasi kreirati po jedan objekat ovih klasa i na izlazu prikazati informacije o proizvodima, kao i iznos finalne cene definisane kroz metodu za izračunavanje cene. Za osnovnu cenu uzeti proizvoljan iznos.
Visina ocene zavisiće od primene objektno orijentisanih principa za modelovanje ovih klasa.
 
Pozdrav!

Smatram sebe Java pocetnikom, pa sam probao da uradim ovaj zadatak na svoju ruku.
Relativno brzo sam uradio, sto moze da znaci dve stvari:
-Otprilike da sam savladao i razumeo to sto se trazi, ili:
-Nesto sam lose uradio

I verujem da je to drugo slucaj.
Posto je ova tema bila"hitna", cenim da je nebitno ako postavim kod.
Ipak, znacilo bi meni ako bi mogao dobiti neki savet. :)

Da postavim kod?
Hvala unapred!
 
Pozdrav!

Smatram sebe Java pocetnikom, pa sam probao da uradim ovaj zadatak na svoju ruku.
Relativno brzo sam uradio, sto moze da znaci dve stvari:
-Otprilike da sam savladao i razumeo to sto se trazi, ili:
-Nesto sam lose uradio

I verujem da je to drugo slucaj.
Posto je ova tema bila"hitna", cenim da je nebitno ako postavim kod.
Ipak, znacilo bi meni ako bi mogao dobiti neki savet. :)

Da postavim kod?
Hvala unapred!
Bilo bih super kada bih postavio :D
 
Bilo bih super kada bih postavio :D
Evo kod, ali ne ocekuj da je to bas najbolje resenje. Ne ocekuj ni da je ispravno resenje. :D

Java:
public class Product
{
    String nazivProizvoda;
    int barKod;
    double osnovnaCena;
    int porez = 20;
}

public class Wine extends Product
{
    double zapreminaBoce;
    double konacnaCena;

    public Wine(String nazivProizvoda, int barKod, double osnovnaCena, double zapreminaBoce)
    {
        super();
        this.nazivProizvoda = nazivProizvoda;
        this.barKod = barKod;
        this.osnovnaCena = osnovnaCena;
        this.zapreminaBoce = zapreminaBoce;
    }
    
    public void izracunajCenu(Wine newWine)
    {
        konacnaCena = newWine.osnovnaCena + ((newWine.porez * newWine.osnovnaCena ) / 100);
    }

    @Override
    public String toString()
    {
        return "Vino " + nazivProizvoda + " Zapremina Boce: " + zapreminaBoce + " l, " + "Bar Kod: " + barKod
                + ", Cena: " + osnovnaCena + " dinara, PDV: " + porez + "%";
    }
    
}

public class Chocolate extends Product
{
    double tezina;
    double konacnaCena;

    public Chocolate(String nazivProizvoda, int barKod, double osnovnaCena, double tezina)
    {
        super();
        this.nazivProizvoda = nazivProizvoda;
        this.barKod = barKod;
        this.osnovnaCena = osnovnaCena;
        this.tezina = tezina;
    }
    
    public void izracunajCenu(Chocolate newChocolate)
    {
        konacnaCena = newChocolate.osnovnaCena + ((newChocolate.porez * newChocolate.osnovnaCena ) / 100);
    }

    @Override
    public String toString()
    {
        return "Cokolada " + nazivProizvoda + " Tezina: " + tezina + " grama, " + "Bar Kod: " + barKod
                + ", Cena: " + osnovnaCena + " dinara, PDV: " + porez + "%";
    }
    
}


public class Main {

    public static void main(String[] args)
    {
        Wine wine1 = new Wine("Vranac", 101010, 550, 2);
        wine1.izracunajCenu(wine1);
        
        Chocolate choco1 = new Chocolate("Najlepse Zelje", 100001, 100, 100);
        choco1.izracunajCenu(choco1);
        
        System.out.println(wine1.toString());
        System.out.println("Konacna cena vina " + wine1.nazivProizvoda +
                " je: " +  wine1.konacnaCena + " dinara");
        
        System.out.println("");
        
        System.out.println(choco1.toString());
        System.out.println("Konacna cena cokolade " + choco1.nazivProizvoda +
                " je: " +  choco1.konacnaCena + " dinara");

    }

}

Mozda ce ti pomoci da shvatis kako bi (mozda) trebalo da izgleda. Ali ne oslanjaj se bas 100%.
 
Хм, имам овај нови Edge, мада га скоро никад нисам пробао. На нету има доста аплета из света физике и разних других симулација, које су рађене у Java, а више не раде. Остале су ове у Flash-u, колико видим. Хоће ли бар то опстати?

Него, за шта се онда Java данас претежно користи?
 
Можда дигресија, али да ли је Јава пукла или пред издисајем?
Мени ни један аплет не ради више ни на једном претраживачу.
Apleti se smatraju bezbednosnim rizikom. U proslosti mal mal pa neki exploit izadje. U svakom slucaju Applet ili jos gore ActiveX je stvar proslosti.
 
Mesate babe i zabe.Covek je pitao u vezi java programiranja.
Java je programski jezik,jako popularan danas i godinama unazad,trenutno je na drugom mestu na GitHubu i na trecem mestu na StackOverflowu.

Java se koristi za programiranje android aplikacija najvise a potom za sve ostalo.Za sada Java ne ide nigde.

Inace,covek je dobio odgovor,pa moze da prodje ispit na tudji rad,te sutra radi u McDonald-u jer Javu nije naucio vec su mu drugi radili zadatke.
 
procenat ti je ostatak deljenja. tj primera radi 59 %30 je 29 ali isto to vazi i za 89 i 119. za 7%3=1. srednji znak ti je ili
to je mateaticka logika. a ili b je tacno kada je bar jedno od ta dva tvrdjenja istinito. Postoji i &&, to znaci a i b. I samo ukoliko su oba tvrdjenja istinita vraca 1. postoji i ^ xor operator. vraca 1 ukoliko su a i b razliciti. i==n-1 znaci da li je to jednako. Operator = je druga vrsta operatora. time se daje vrednost. I prakticno taj tvoj izraz ce biti tacan u slucaju da je ostatak deljenja 29 ili je i=n-1
 
openjdk mislim da vise ne prave security patcheve, to je problem. openjdk je takodje oracletovo cedo. ima par njih
koji se odrzavaju mislim da je jedan red hatov ne znam koji je drugi. Red Hat kao garantuje to sto rade da nece da
napuste.

Ok, ali svakako ako naučiš bilo koji objektno orijentisani programski jezik možeš lako da pređeš na drugi OOP jezik.
 
Pozdrav, da li neko moze da mi objasni ove linije koda, cemu sluze?
Evo kod, ali ne ocekuj da je to bas najbolje resenje. Ne ocekuj ni da je ispravno resenje. :D

Java:
public class Product
{
    String nazivProizvoda;
    int barKod;
    double osnovnaCena;
    int porez = 20;
}

public class Wine extends Product
{
    double zapreminaBoce;
    double konacnaCena;

    public Wine(String nazivProizvoda, int barKod, double osnovnaCena, double zapreminaBoce)
    {
        super();
        this.nazivProizvoda = nazivProizvoda;
        this.barKod = barKod;
        this.osnovnaCena = osnovnaCena;
        this.zapreminaBoce = zapreminaBoce;
    }
   
    public void izracunajCenu(Wine newWine)
    {
        konacnaCena = newWine.osnovnaCena + ((newWine.porez * newWine.osnovnaCena ) / 100);
    }

    @Override
    public String toString()
    {
        return "Vino " + nazivProizvoda + " Zapremina Boce: " + zapreminaBoce + " l, " + "Bar Kod: " + barKod
                + ", Cena: " + osnovnaCena + " dinara, PDV: " + porez + "%";
    }
   
}

public class Chocolate extends Product
{
    double tezina;
    double konacnaCena;

    public Chocolate(String nazivProizvoda, int barKod, double osnovnaCena, double tezina)
    {
        super();
        this.nazivProizvoda = nazivProizvoda;
        this.barKod = barKod;
        this.osnovnaCena = osnovnaCena;
        this.tezina = tezina;
    }
   
    public void izracunajCenu(Chocolate newChocolate)
    {
        konacnaCena = newChocolate.osnovnaCena + ((newChocolate.porez * newChocolate.osnovnaCena ) / 100);
    }

    @Override
    public String toString()
    {
        return "Cokolada " + nazivProizvoda + " Tezina: " + tezina + " grama, " + "Bar Kod: " + barKod
                + ", Cena: " + osnovnaCena + " dinara, PDV: " + porez + "%";
    }
   
}


public class Main {

    public static void main(String[] args)
    {
        Wine wine1 = new Wine("Vranac", 101010, 550, 2);
        wine1.izracunajCenu(wine1);
       
        Chocolate choco1 = new Chocolate("Najlepse Zelje", 100001, 100, 100);
        choco1.izracunajCenu(choco1);
       
        System.out.println(wine1.toString());
        System.out.println("Konacna cena vina " + wine1.nazivProizvoda +
                " je: " +  wine1.konacnaCena + " dinara");
       
        System.out.println("");
       
        System.out.println(choco1.toString());
        System.out.println("Konacna cena cokolade " + choco1.nazivProizvoda +
                " je: " +  choco1.konacnaCena + " dinara");

    }

}

Mozda ce ti pomoci da shvatis kako bi (mozda) trebalo da izgleda. Ali ne oslanjaj se bas 100%.

Bolje bi bilo da klasa `Product` bude apstraktna i da ima svoj konstruktor za setovanje svojih polja koja tako]e treba da imaju eksplicitno definisan doseg (private, protected, public). I polja treba da imaju getter-e i setter-e, jer se vidi da će to biti potrebno u programu koji koristi ovakve klase.

Java:
public abstract class Product
{
    private String nazivProizvoda;
    private int barKod;
    private double osnovnaCena;
    private int POREZ = 20; // konstante se pišu velikim slovima
    
    public Product(String nazivProizvoda, int barKod, double osnovnaCena)
    {
        this.nazivProizvoda = nazivProizvoda;
        this.barKod = barKod;
        this.osnovnaCena = osnovnaCena;
    }
    
    public String getNazivProizvoda()
    {
        return nazivProizvoda;
    }
    
    public void setNazivProizvoda(String nazivProizvoda)
    {
        this.nazivProizvoda = nazivProizvoda;
    }
    
    public int getBarKod()
    {
        return barKod;
    }
    
    public void setBarKod(int barKod)
    {
        this.barKod = barKod;
    }
    
    public double getOsnovnaCena()
    {
        return osnovnaCena;
    }
    
    public void setOsnovnaCena(double osnovnaCena)
    {
        this.osnovnaCena = osnovnaCena;
    }
    
    public int getPorez()
    {
        return POREZ;
    }
    
    public void setPorez(int pOREZ)
    {
        POREZ = pOREZ;
    }
}
/[CODE]

I onda u klasi `Wine` konstruktor treba da izgleda ovako:

[CODE=java]
public class Wine extends Product
{
    private double zapreminaBoce;
    private double konacnaCena;

    public Wine(String nazivProizvoda, int barKod, double osnovnaCena, double zapreminaBoce)
    {
        super(nazivProizvoda, barKod, osnovnaCena);
        this.zapreminaBoce = zapreminaBoce;
    }
}

/[CODE]

A u klasi `Chocolate` konstruktor bi bio:
[CODE=java]
public class Chocolate extends Product
{
    private double tezina;
    private double konacnaCena;

    public Chocolate(String nazivProizvoda, int barKod, double osnovnaCena, double tezina)
    {
        super(nazivProizvoda, barKod, osnovnaCena);
        this.tezina = tezina;
    }

/[CODE]

Mada bi i konačna cena trebala biti u apstraktnoj klasi, jer je svaki proizvod ima.
 

Back
Top