MAS: Referat 2
Implementacja ekstensji klasy
Autorzy:
Michał Małecki
Michał Walkowski
Klasa
UML: Klasa jest nazwanym opisem
grupy obiektów, które współdzielą
ten sam zbiór własności (inwariantów).
Klasa nie jest zbiorem obiektów, lecz
jest używana do deklarowania
obiektów. Stosunek klasa/podklasa
oznacza, że obiekty podklasy
posiadają wszystkie inwarianty
nadklasy, plus ewentualnie swoje
inwarianty.
Ekstencja klasy
Zestaw aktualnie istniejących wystąpień
(obiektów) danej klasy.
Uniezależnienia deklaracji typów/klas i
odpowiadających im obiektów staje się
aktualny w przypadku obiektowości, której
filozofią jest dekompozycja pojeć oraz
ortogonalna ich kombinacja. Pojecie
ekstensji staje sie semantycznie mało
spójne w przypadku klas abstrakcyjnych.
Ekstencja klasy
realizowana za pomocą
tablicy statycznej
Pierwszą możliwością implementacji
ekstencji klasy w Javie jest tablica
statyczna, w której będą
przechowywane wszystkie
wystąpienia danej klasy.
Szczególną uwage należy zwrócić na
poprawność i aktualność informcji
przechowywanych w tablicy.
Ekstencja klasy
realizowana za pomocą
tablicy statycznej
Przykład kodu:
EkstensjaTablicaStatyczna.java
Działanie:
Ekstensja klasy jako tablica obiektow.
(!) Przepelnienie tablicy dla NaszaKlasa@11a698a
---
Pierwszy
PierwszyKolejnyPiekniejszyNajmadrzejszyZnudzony
Press any key to continue...
Ekstencja klasy
realizowana za pomocą
tablicy statycznej
Podsumowanie.
Zalety:
●
Prostota implementacji
●
Szybkość
Wady:
●
Należy w kodzie podać dokładną
wielkość tablicy co powoduje ograniczą
ilość wystąpień danej klasy
Ekstencja klasy
realizowana za pomocą
tablicy dynamicznej
Następną możliwością jest zastosowanie
tablicy dynamicznej. Wielkość tablicy jest
alokowana dynamicznię więc nie
potrzebne jest podawanie jej wielkości w
kodzie.
Ekstencja klasy
realizowana za pomocą
tablicy dynamicznej
Przykład kodu.
EkstensjaTablicaDynamiczna.java
Działanie:
Ekstensja klasy jako tablica obiektow alokowana
dynamicznie.
(!) Powiekszenie tablicy.
---
Pierwszy
PierwszyKolejnyPiekniejszyNajmadrzejszyZnudzonyTen ktory
mial sie nie zmiescic w
ekstensji
Press any key to continue...
Ekstencja klasy
realizowana za pomocą
tablicy dynamicznej
Podsumowanie.
Zalety:
●
Możliwość nieograniczonej przez
programiste ilości wystąpień klasy
●
Prosta idea i implementacja
Wady:
●
Powolność działania wynikająca z
potrzeby przepisywania elementów
tablicy przy operacjach wykonywanych
na tej tablicy
Ekstencja klasy
realizowana za pomocą
kolekcji
Kolekcje służą do przechowywania
danych w sposób sformalizowany.
Najpopularniejsze przykłady to listy,
drzewa, stosy.
Klasy obsługujące kolekcje posiadają
metody wygodnej modyfikacji ich
zawartości.
Ekstencja klasy
realizowana za pomocą
kolekcji
Klasy realizujacych funkcje kolekcji w Javie:
●
HashSet
●
TreeSet
●
ArrayList
●
LinkedList
●
HashMap
●
TreeMap
●
WeakHashMap
●
HashTable
●
Vector
●
Stack
Ekstencja klasy
realizowana za pomocą
kolekcji
Przykładowe operacje na kolekcjach:
●
Dodawanie
●
Usuwanie
●
Przeglądanie
Ekstencja klasy
realizowana za pomocą
kolekcji
Przykład kodu:
Działanie:
Ekstensja klasy jako kolekcja.
---
Pierwszy
PierwszyKolejnyPiekniejszyNajmadrzejszyZnudzonyTen
ktory kiedys sie nie miescil
Press any key to continue...
Ekstencja klasy
realizowana za pomocą
kolekcji
Podsumowanie.
Zalety:
●
Szybkie działanie
●
Wykorzystanie już napisanego kodu
obsługującego kolekcje
Wady:
●
Bardziej skomplikowana implementacja
(jeżeli nie korzystamy z gotowych
komponentów)
Ekstensja klasy
realizowana za pomocą
klasy pomocniczej.
●
Ekstensja jest realizowana za pomocą
dodatkowej klasy, pełniącej role
kontenera. Dla której dodatkowo
zaimplementowane zostały wszystkie
operacje potrzebne do zarządzania
przetrzymywanymi w niej obiektami.
Ekstensja klasy
realizowana za pomocą
klasy pomocniczej.
●
Przykład kodu:
●
Działanie
Ekstensja z klasa pomocnicza.
Zarzadca gotowy.
---
Pierwszy
PierwszyKolejnyPiekniejszyNajmadrzejszyZnudzonyDodawany
nietypowo
Press any key to continue...
Ekstensja klasy
realizowana za pomocą
klasy pomocniczej.
Podsumowanie
Wady
●
Najwięcej do implementacji
Zalety
●
Najbardziej elastyczne w wykorzystaniu