Problem z zdefiniowaniem metody .

0

Witam,
Mam problem z zdefiniowaniem metody getCennik() w klasie Cennik ktora stworzylem. Kod klasy wyglada nastepujaco:

class Cennik{
Hashtable ceny;
public Cennik(){
ceny=new Hashtable();
}
public void getCennik(){
}
public void set(String s,double d){
ceny.put(s, new Double(d));
}
} 

Metoda ta musi byc zdefiniowana w ten sposob aby mogła być wykorzystana w klasie sklep :

 
class Sklep  {

  private Kasa kasa;
Sklep() {
    // Na poczatku dnia ustalany jest cennik
    // i otwierana jest kasa
    Cennik cennik = Cennik.getCennik();
    cennik.set("Truskawki", 5);
    cennik.set("Banany", 6);
    cennik.set("Agrest", 7);
    kasa = new Kasa();
  }
 
 public void zakupyDemo(String osoba) {

    // Podana osoba wchodzi do sklepu i bierze koszyk
    // Każdy koszyk ma swój numer
    // Liczba koszyków jest nieograniczona

    Koszyk koszyk = new Koszyk();
    System.out.println(osoba + " bierze " + koszyk);
 
 
    // Dodaje do koszyka kilo truskawek
    // pol kilo bananow, cwierc kilo agrestu
    // i 2 kilo mandarynek
    koszyk.add(new Truskawki(1));
    koszyk.add(new Banany(0.5));
    koszyk.add(new Agrest(0.25));
    koszyk.add(new Mandarynki(2));  // dziwnym trafem sprzedawca zapomnial
                                                         // ustalic ich ceny, ale kupujacy o tym nie wie
 
    // podchodzi do kasy
    // pokazuje zawartość koszyka
    // a kasa go rozlicza wg ustalonego cennika

    koszyk.showContent();
    kasa.printBill(koszyk);  // wydruk rachunku
 
    // placi i ...
    // przeklada zawartosc koszyka do torby
    Torba torba = new Torba(osoba);
    torba.loadFrom(koszyk);
 
    // Przychodzi do domu i pokazuje co kupil(a)
    torba.showContent();

  }
}

Problem mam dokladnie w tym miejscu:

    Cennik cennik = Cennik.getCennik(); 

Probowalem cos wymyslec ale ciagle dostaje jakies bledy. Czy moglby ktos wytlumaczyc mi jak powinna byc zdefiniowana ta metoda getCennik() lub naprowadzic na rozwiazanie problemu ?
Na koniec podam klase testujaca:

// Klasa testująca klasę Sklep
class Test {
  public static void main(String[] args)  {
    Sklep s = new Sklep();
    s.zakupyDemo("Janek");}} 

Pozdrawiam

0

WTF? Co to w ogóle jest?

  1. Czemu piszesz w javie 1.4? (hashtable? seriously?)
  2. Czemu nie stworzysz tego cennika poprzez new Cennink? Jeśli musi być wspólny wszędzie to lekcja na dziś: Singleton
  3. Metoda dodająca w cenniku powinna nazywać sie add a nie set.
0

Klasa sklep i test jest narzucona w tresci zadania rowniez korzystanie z Hashtable ja musze dopisac reszte klas i dlatego tak to wyglada :). Masz racje Singelton rozwiaze moj problem . Dzieki za pomoc

0

Przy ustalaniu cen skorzystać z klasy Hashtable, która umożliwia łatwe odnajdywanie informacji wg kluczy. Tak mam napisane w poleceniu.

0

Ja bym zrobił tak (może jest głupio, bo pierwszy raz użyłem wzorca Singleton ;)):

import java.util.*;
public class Cennik
{
    private Hashtable<String,Double> ceny;
    private static Cennik instance = null;
    
    public static Cennik getCennik()
    {
        if(instance == null)
        {
            instance = new Cennik();
        }
        return instance;
    }
    public void set(String produkt, double cena)
    {
        ceny.put(produkt,cena);
    }
    public double get(String produkt)
    {
        return ceny.get(produkt);
    }
    private Cennik()
    {
        ceny=new Hashtable<String,Double>();
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1