background image

MAS: Referat 2

Implementacja ekstensji klasy

Autorzy:

Michał Małecki

Michał Walkowski

background image

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.

background image

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.

background image

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.

background image

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...

background image

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

background image

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.

background image

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...

background image

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

background image

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.

background image

Ekstencja klasy 

realizowana za pomocą 

kolekcji

Klasy realizujacych funkcje kolekcji w Javie: 

HashSet

TreeSet

ArrayList

LinkedList

HashMap

TreeMap

WeakHashMap

HashTable

Vector

Stack

background image

Ekstencja klasy 

realizowana za pomocą 

kolekcji

Przykładowe operacje na kolekcjach:

Dodawanie

Usuwanie

Przeglądanie

background image

Ekstencja klasy 

realizowana za pomocą 

kolekcji

Przykład kodu:

EkstensjaKolekcje.java

Działanie:

Ekstensja klasy jako kolekcja.

 ---

Pierwszy
PierwszyKolejnyPiekniejszyNajmadrzejszyZnudzonyTen 

ktory kiedys sie nie miescil

Press any key to continue...

background image

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)

background image

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.

background image

Ekstensja klasy 

realizowana za pomocą 

klasy pomocniczej.

Przykład kodu: 

EkstensjaKlasaPomocnicza.java

Działanie

Ekstensja z klasa pomocnicza.

Zarzadca gotowy.

 ---

Pierwszy
PierwszyKolejnyPiekniejszyNajmadrzejszyZnudzonyDodawany 

nietypowo

Press any key to continue...

background image

Ekstensja klasy 

realizowana za pomocą 

klasy pomocniczej.

Podsumowanie

Wady

Najwięcej do implementacji 

Zalety

Najbardziej elastyczne w wykorzystaniu


Document Outline