zadania, wydrukowac
[ Pobierz całość w formacie PDF ]
//-->Zadanie 1. Klasa abstrakcyjna, polimorfizm.Do szybkiego obliczenia wartości wyrażenia matematycznego (nawet bardzo złożonego) możnazastosować strukturę drzewiastą, w której reprezentuje się poszczególne elementy tego wyrażeniatakie, jak: stałe, zmienne, operatory oraz funkcje. Jest to szczególnie przydatne, gdy chcemy liczyćwartość danego wyrażenia wiele razy dla różnych wartości zmiennych.Np. wyrażenie:25a+bsin(c)można przedstawić jako drzewo:/+*5a2/bsincUwaga: nie jest to oczywiście najszybszy sposób obliczania wartości takich wyrażeń.Stworzyć klasy służące do reprezentacji i obliczania wyrażeń matematycznych w sposób omówionypowyżej. Dodatkowo klasy te powinny dawać możliwość tekstowego przedstawienia wyrażenia,czyli np. dla powyższego wyrażenia taka tekstowa reprezentacja mogłaby wyglądać następująco:(((a*5)+(2/b))/sin(c))Klasy odpowiedzialne za reprezentację sumy oraz iloczynu powinny dawać możliwość operacji(sumowania i mnożenia) na dokładnie 2 wartościach/parametrach. Inne operatory i funkcje równieżpowinny mieć odpowiednie ograniczenia co do liczby parametrów.Zaimplementować tylko klasy odpowiedzialne za reprezentację sumy, iloczynu, ilorazu, stałej,zmiennej oraz funkcji sinus. W pozostałych przypadkach implementacja nie jest wymagana.Wszystkie obliczenia proszę robić na typiedouble.Zadanie 2. Interfejsy.Korzystając z przedstawionych na wykładzie definicji:1. InterfejsuMoveable,2. KlasZwierziPies, a takżePojazdiAuto(te dwie wymagają dodania implementacjiinterfejsuMoveable),napisz metodęwyscig(...), która jako parametry ma dostać dowolną liczbę obiektówMoveable(skorzystać z "varargs"), na których powinna uruchomić metodęstart().
[ Pobierz całość w formacie PDF ]