-
Znaczenie pojęcia:
unia
Pozostałe definicje na literę U.
ang. union
Typ struktury, rekordu lub obiektu, który może mieć alternatywnie dwa lub więcej zestawów atrybutów. Przykładowo, jeżeli właścicielem samochodu może być osoba lub firma, to obiekt Samochód może posiadać alternatywnie albo atrybut NazwiskoWłaściciela, albo atrybut WłasnośćFirmy. Unie są również zwane wariantami. Z unią może być związany dyskryminator (discriminator), tj. atrybut, którego wartość określa, z którym wariantem mamy do czynienia. Może też nie mieć dyskryminatora; wówczas odpowiedzialność za rozróżnianie wariantów spada na programistę (tak jest np. w C i C++). Brak dyskryminatora w unii podkopuje koncepcję mocnej kontroli typów i stwarza okazję do bardzo trudnych błędów (np. jeżeli programista zastosuje selektor atrybutu do niewłaściwego wariantu, wówczas wynik jest nieprzewidywalny i zależy od reprezentacji obiektu). Z kolei unie z dyskryminatorem zmuszają do oddelegowania sprawdzania poprawności typologicznej do czasu wykonania, co ma konsekwencje dla wydajności. Unie stwarzają poważny problem dla języków zapytań; jak dotąd nie istnieje prawdopodobnie koncepcja języka zapytań uwzględniającego unie. (Uwzględnienie tej własności wymagałoby przeniesienia części informacji zawartej w typie (np. nazw atrybutów) do wnętrza reprezentacji obiektów, co miałoby konsekwencje zarówno dla objętości tej reprezentacji, jak i mechanizmów wiązania/dostępu. Unie z dyskryminatorem są własnością IDL wg standardu CORBA i są własnością ODL wg standardu ODMG, ale nie są traktowane w pozostałych częściach tego standardu, prawdopodobnie wskutek trudności ze spójnym opanowaniem tej własności we wszystkich konstrukcjach. Unie mają ostatnio złą prasę w obiektowej literaturze. Zostały one pominięte w językach Eiffel, Java i Modula3. Twierdzi się, że są one potrzebne wyłącznie z powodu oszczędności pamięci (nisko kwalifikowany motyw), prowadzą do trudności z kontrolą typów i mogą być zastąpione poprzez specjalizacje klas i obiektów. Jest to jednak rozwiązanie pozorne, ponieważ prowadzi do niepotrzebnej eksplozji ilości klas, zmusza do migracji obiektów z klasy do klasy (przy zmianie zestawu jego atrybutów), oraz utrudnia przetwarzanie kolekcji zawierających obiekty o różnym zestawie atrybutów. Mimo ostatnich tendencji należy oczekiwać, że unie jeszcze wrócą do łask wśród projektantów języków i systemów. Synonim: zapis z wariantami
unia,
union
