Witam forumowicze :)
Mam problem z napisaniem kompletnego kodu do pewnego zadania, poniżej treść:
Napisz program do realizacji zamówień. Program powinien składać się z dwóch klas:
Zamowienie oraz Pozycja, przy czym każde zamówienie może zawierać jedną lub
więcej pozycji.
Klasa Pozycja powinna zawierać następujące pola:
• nazwaTowaru (String),
• ileSztuk (int) - liczba zamówionych sztuk,
• cena (double) - cena pojedynczej sztuki,
oraz metody:
• konstruktor z parametrami umożliwiającymi ustalenie wartości pól klasy,
• metodę obliczWartosc(), zwracającą wartość pozycji zamówienia,
• metodę toString() zwracającą łańcuch w formacie: nazwa towaru, cena,
liczba sztuk, wartość zamówienia (oddzielone średnikami)
Klasa Zamowienie powinna zawierać następujące pola:
• pozycje (tablica obiektów klasy Pozycja) - pozycje składowe zamówienia,
• ileDanych (int) - liczba pozycji w zamówieniu,
• maksRozmiar (int) - maksymalna liczba pozycji w zamówieniu,
oraz metody:
• konstruktor bezparametrowy - maksRozmiar ustalany na wartość 10,
• konstruktor z parametrem określającym maksymalną liczbę pozycji w
zamówieniu,
• metodę void dodajPozycje(Pozycja p), która dodaje podaną pozycję do
zamówienia,
• metodę double obliczWartosc() zwracającą wartość zamówienia,
• metodę String toString(), która zwraca łańcuch zawierający spis pozycji
zamówienia oraz łączną wartość zamówienia
Zdefiniuj klasę Test, która przetestuje powyższe metody.
Wynik, wyświetlony na ekranie dla dwóch produktów, może wyglądać następująco:
Chleb; 3,50 zł; 1 szt; 3,50 zł
Cukier; 4,00 zł; 3 szt; 12,00 zł
Zamówienie:
Chleb; 3,50 zł; 1 szt; 3,50 zł
Cukier; 4,00 zł; 3 szt; 12,00 zł
Razem: 15,50 zł
Problem pojawia się przy metodzie dodawania pozycji do zamówienia, z klasą test sobie poradzę (raczej).
Tyle udało mi się samemu zrobić:
import java.io.*;
class Pozycja{
private String nazwaTowaru;
private int ileSztuk;
private double cena;
Pozycja(String nazwaTowaru, int ileSztuk, double cena){
this.nazwaTowaru = nazwaTowaru;
this.ileSztuk = ileSztuk;
this.cena = cena;
}
public double obliczWartosc(){
return this.ileSztuk*this.cena;
}
public String toString(){
return nazwaTowaru + "; " + String.format("%.2f",cena) + " zł; " + ileSztuk + " szt; " +
String.format("%.2f",obliczWartosc()) + " zł";
}
}
public class Zamowienie{
Pozycja[] pozycje;
private int ileDanych;
private int maksRozmiar;
Zamowienie(){
this.maksRozmiar = 10;
}
Zamowienie(int maksRozmiar){
this.maksRozmiar = maksRozmiar;
}
// Skorzystałem z rozwiązania w innym temacie (ale do C# i .NET), jednak dalej nie mogę sobie poradzić...
public void dodajPozycje(Pozycja[] p){
for(int i=0; i<pozycje.length; i++){
if(pozycje[i] ==null)
pozycje[i] = new Pozycja();
}
}
public double obliczWartosc(){
double lacznie = 0.0;
for(int i=0; i<pozycje.length; i++){
lacznie += pozycje[i].obliczWartosc();
}
return lacznie;
}
public String toString(){
for(int i=0; i<pozycje.length; i++){
pozycje[i].toString();
}
return "Razem: " + obliczWartosc();
}
}
Komunikat z konsoli:
Proszę o pomoc w rozwiązaniu, ewentualnie uwagi do reszty kodu mile widziane. :)