Zpo-1-wyk-Slajd38

From Studia Informatyczne

Obiekty-wartości

Obiekty-wartości


Przeciwieństwem obiektów-referencji są obiekty-wartości. Reprezentują one niewielkie jednostki o małym zakresie odpowiedzialności, zwykle ograniczonym do zapamiętania chwilowego stanu innego obiektu lub określonej wartości. Ich koszt utworzenia i przechowywania jest niewielki, dlatego ten sam obiekt istniejący w rzeczywistości może posiadać dowolną liczbę odpowiedników w systemie obiektowym. Ceną za możliwość istnienia wielu kopii tego samego obiektów jest ich niezmienność (ang. immutability ) – ich stan jest określany w momencie ich utworzenia i nie ulega zmianie aż do ich usunięcia. Można sobie wyobrazić, jakie konsekwencje miałoby dopuszczenie modyfikacji obiektów przechowujących wartości pieniężne: bez zmiany referencji obiekt zmieniłby swoją wartość z np. 100 PLN do 1000 PLN.

Ponieważ referencja nie jest wystarczającym wyznacznikiem tożsamości obiektu, dlatego porównywanie odbywa się przez porównanie odpowiadających sobie pól obiektu. W języku Java rolę tę pełni metoda equals (), która we wszystkich klasach potomnych klasy java . lang . Object powinna być implementowana właśnie w oparciu o porównanie wartości poszczególnych pól.

Przykładem obiektu-wartości może być obiekt reprezentujący fakt wypożyczenia pewnej Książki w określonym dniu. Obiekt ten jest tworzony poprzez bezpośrednie wywołanie konstruktora i przekazania wszystkich danych jako argumentów. Metody klasy służą jedynie do odczytu wartości poszczególnych pól. Fakt wypożyczenia może być reprezentowany przez dowolną liczbę obiektów o tych samych wartościach, ponieważ nie mogą one ulec zmianie.


<< Poprzedni slajd | Spis treści | Następny slajd >>