symetrii), - wskazuje czynności charakterystyczne dla obiektu (ale ich nie implementuje) • interfejs - abstrakcyjny typ danych, poziom abstrakcji wyższy niż w przypadku klasy. INTERFEJSY zbiór nagłówków metod i definicji stałych: - nagłówki metod - określają sposob ich wywoływania, nie określają sposobu ich implementacji (określamy co moina zrobić, ale nie mówimy jak to zrobić), - stałe - określają wartości cech, które nie ulegają zmianie (stałe są definiowane jako pola publiczne, statyczne i finalne).
• Definicja interfejsu: interface Nazwałnterfejsu [extends
nazwylnterfejsów] { / nagłówki metod / } • Przykład interfejsu: interface OperacjeGraficzne { / void rysowanie(); / void usuwanie(); / }. Implementacja interfejsu * Definicja metod umieszczonych w interfejsach umieszczana jest w klasach implementujących dany interfejs.* ... class nazwaKlasy extends ... implements Listalnterfejsów • klasa implementująca interfejs musi zawierać definicje wszystkich metod zadeklarowanych w interfejsie (w przeciwnym przypadku staje się klasą abstrakcyjną) • klasa może implementować wiele interfejsów. Zastosowanie interfej sówwskazuje na właściwości pewnego abstrakcyjnego pojęcia •definiowanie związków pomiędzy klasami - wszystkie klasy implementujące interfejs posiadają wspólne właściwości (mogą realizować operacje określone w interfejsie) *nazwa interfejsu może funkcjonować jako nazwa typu. INTERFEJS ITERATOR public interface Iterator { / boolean hasNext(); / Object next(); / void remove(); / }
Wykorzystanie itęratora do usuwania elementów.Collection collection = ...; / Iterator iterator = collection.iterator(); / wliile (iterator.hasNext()) { / Object element = iterator.next(); / if (removalCheck(element)) { / iterator.remove(); / } / }
WYMAGANIA WOBEC ALGORYTMÓW* poprawność - algorytm generuje prawidłowe rezultaty (nie zawiera błędów),* wydajność - realizacja algorytmu wymaga użycia akceptowalnej ilości zasobow:- czasu, - pamięci.
Pojęcie błędu* niezgodność z obowiązującymi regułami pisania, liczenia, wymowy itp.; odstępstwo od normy; pomyłka* postępek, działanie, które przynosi komuś złe skutki; niewłaściwe posunięcie, przedsięwzięcie* mylne, fałszywe mniemanie o czymś (przestarz.) Błędy w programowaniu* błędy logiczne - na etapie projektowania algorytmu (środki zaradcze: stosowanie sprawdzonych algorytmów, formalne dowodzenie poprawności algorytmu, testowanie programu)* błędy wykonania programu ujawniające się w trakcie realizacji algorytmu zapisanego w postaci programu (ujawniające się w postaci wyjątków)* błędy svntaktvczne - polegające na niezgodności tekstu programu z gramatyką języka programowania (wykrywane przez kompilator)
ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMU ilość zasobow systemu komputerowego niezbędnych do jego realizacji. • Zasoby systemu komputerowego niezbędne do realizacji algorytmu: - czas pracy procesora (złożoność czasowa algorytmu), - pamięć operacyjna (złożoność pamięciowa algorytmu). • Złożoność obliczeniowa jest uzależniona od wielkości zadania. Oszacowanie czasu realizacji algorytmu * Analiza powyższych danych pozwala stwierdzić, że czas obliczeń uzależniony jest przede wszystkim od składnika: 0,000002 n2 Składnik ten nazywany jest składnikiem dominującym.* Po pominięciu stałych współczynników można stwierdzić, że zależność pomiędzy czasem wykonania a wielkością zadania ma charakter funkcji kwadratowej. Kwadratowy charakter zależności uwidacznia się w coraz większym stopniu wraz ze wzrostem wielkości zadania. CECHY F.MPIRYCZNLGO OKRF.ŚI.ANIA ZŁOŻONOŚCI '/alety - otrzymane czasy obliczeń są proste w interpretacji • Wady: - konieczność wielokrotnego uruchamiania programu (dla złożonych algorytmów może to być bardzo czasochłonne), - uzyskane wyniki dotyczą zastosowanego w obliczeniach zestawu danych (trudno jest określić czas realizacji dla przypadku „najlepszego”, najgorszego” oraz „przeciętnego”), - wyniki dotyczą zwykle stosunkowo niewielkich zbiorow danych - nie wiadomo, czy dla zbiorow o większym