Wykorzystanie napisanej klasy

0

Dana jest klasa Kalkulator o poniższym interfejsie i działaniu. Wykorzystując tę klasę i mechanizm dziedziczenia napisz klasę KalkulatorZPamięcią, posiadającą te same składowe co Kalkulator, ale dodatkowo zapamiętującą 10 ostatnich wyników działań każdego rodzaju. Przy wywołaniu działania, zanim wywoła metodę klasy bazowej sprawdza, czy wynik żądanego działania (te same argumenty) jest zapamiętany w pamięci podręcznej cache(lista/kolejka/tablica) i jeśli jest, zwraca wynik bez wywolywania czasochłonnej operacji z klasy bazowej. Dla ułatwienia, można użyć listy o dowolnym interfejsie, zakładając że takowa już istnieje.

Czyli ogólnie mam za zadanie napisać nową klasę na podstawie istniejącej. Nie mogę modyfikować ani ingerować w klasę Kalkulator, tylko wykorzystywać poniższe metody i konstruktor.

Klasa kalkulator:

public class Kalkulator
    {
        public Kalkulator(Date init); //inicjalizuje kalkulator
        public double log10(double arg); //zwraca wynik logarytmu dziesiętnego
        public double potega(double x, double y); //zwraca wynik potęgowania
        public void posprzataj();//zwalnia zasoby
    }

Moja klasa KalkulatorZPamięcią:

public class KalkulatorZPamiecia : Kalkulator
    {
        private operacje[] ostatnie;
        int k;
        public KalkulatorZPamiecia(Date init)
        {
            base(init);
            ostatnie = new operacje(10);
            k = 0;
        }
        public double log10(double arg)
        {
            for(int i = 0; i < k; i++)
            {
                if (ostatnie[i].GetArgLog() == arg)
                {
                    return ostatnie[i].GetWynikLog();
                }
            }
            ostatnie[k % 10].SetwynikLog(base.log10(arg));
            k++;
            return base.log10(arg);
        }
        public double potega(double x, double y)
        {
            for (int i = 0; i < k; i++)
            {
                if (ostatnie[i].GetPotegaX() == x && ostatnie[i].GetPotegaY()==y)
                {
                    return ostatnie[i].GetWynikPotega();
                }
            }
            ostatnie[k % 10].SetWynikPotega(base.potega(x, y));
            k++;
            return base.potega(x, y);
        }
    }
}

Założyłem że istnieje klasa "operacje",(w zadaniu jest że można tak założyć) z odpowiednimi metodami.
Pole int k ma wskazywać ile już operacji jest w tablicy. W odwoływaniach do komórek tablicy użyłem modulo 10, k nie wyszło z zakresu.
Czy ogólnie to co napisałem ma ręce i nogi?

0

Tak mega banalną rzecz skomplikowałeś bezsensu. Po co pętle? No i kalkulator to powinien być interfejs.
No i lista tablicowa będzie sensowniejsza niż zwykła tablica.

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