Realizacja ekstensji klasy w oparciu o tablicę statyczną oraz w oparciu o kolekcje. Realizacja metod obiektu, metod klasowych i polimorfizmu metod. Marcin Kujawa Michał Łobarzewski Plan prezentacji: Metody obiektowe Metody klasowe Polimorfizm metod Ekstensja na tablicy dedykowanej Ekstensja na tablicy ogólnej Ekstensja na tablicy ogólnej z dziedziczeniem Ekstensja na wektorze dedykowanym Ekstensja na wektorze ogólnym Ekstensja na wektorze ogólnym z dziedziczeniem Metody Obiektowe Metoda obiektowa jest to metoda, która ma dostęp i zmienia atrybuty konkretnego obiektu. Przykład: \Funkcje statyczne i obiektu\Funkcje.Java Metody Klasowe (statyczne) Metoda klasowa jest to metoda, która ma dostęp do całej ekstensji klasy, do każdego obiektu. Przykład: \Funkcje statyczne i obiektu\Funkcje.Java Polimorfizm metod Operacja wywołana za pośrednictwem komunikatu może być różnie wykonana, w zależności od rodzaju obiektu, do którego ten komunikat został wysłany. Wywołujemy przeciążoną metodę na rzecz obiektów klas które dziedziczą po sobie W zależności od tego na rzecz jakiego obiektu ją wywołamy, da ona różny efekt Przykład: \Polimorfizm metod\PolimorfizmMetod.Java Realizacja ekstensji klasy oparta na tablicach Tablica musi mieć określony rozmiar podczas kompilacji, sami musimy napisać obsługę dodawania, pobierania, kasowania obiektow. Klasa reprezentująca tablice stworzoną do przechowywania wszystkich rodzajów obiektow jest dobrym rozwiązaniem z tego względu, że możemy jej użyc wielokrotnie - jako obiektu reprezentującego ekstensje wielu klas. Musimy jedynie pamietac o rzutowaniu przy pobieraniu obiektów. Realizacja ekstensji klasy oparta na tablicach c.d Obiekt reprezentujący tablice stworzoną do przechowywania obiektów danego typu nie może być wielokrotnie wykorzystany ale za to nie musimy pamiętać o rzutowaniu - wystarczy, że raz zakodujemy rzutowanie i więcej się nie musimy o to martwić. Pewnym kompromisem wydaje się być możliwość odziedziczenia po klasie reprezentującej tablice stworzoną do przechowywania wszystkich rodzajów obiektów i zakodowanie w tej klasie jedynie funkcji realizujacej rzutowanie. Przykłady: Ekstensja\Ekstensja na tablicy dedykowanej\... Ekstensja\Ekstensja na tablicy ogólnej\... Ekstensja\Ekstensjna tablicy ogólnej z dziedziczeniem\... Realizacja ekstensji klasy oparta na vektorach Wydaje się to być rozwiązaniem wolniejszym ale ma również swoje zalety - nieograniczony rozmiar, nie musimy pisać obslugi dodawania, pobierania i kasowania obiektów Klasa reprezentujaca vektor stworzony do przechowywania wszystkich rodzajów obiektów jest lepszym rozwiązaniem z tego wzgledu, że podobnie jak w przypadku tablicy, możemy go użyć wielokrotnie - jako obiektu reprezentującego ekstensje wielu klas. Także musimy pamiętać o rzutowaniu przy pobieraniu obiektów. Realizacja ekstensji klasy oparta na vektorach c.d Obiekt reprezentujacy vektor stworzony do przechowywania obiektów danego typu nie może być wielokrotnie wykorzystany ale za to nie musimy pamiętać o rzutowaniu - wystarczy, że raz zakodujemy rzutowanie. Pewnym kompromisem wydaje sie byc możliwosc odziedziczenia po klasie reprezentujacej vektor stworzony do przechowywania wszystkich rodzajów obiektów i zakodowanie w tej klasie jedynie funkcji realizującej rzutowanie Przykłady: Ekstensja\Ekstensja na wektorze dedykowanym\... Ekstensja\Ekstensja na wektorze ogólnym\... Ekstensja\Ekstensjna na wektorze ogólnym i dziedziczenie\...