Domieszka (programowanie obiektowe)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

W językach obiektowych domieszka (ang. mixin) jest rodzajem klasy, która dostarcza określoną funkcjonalność innym klasom bez możliwości tworzenia jej obiektów. W przeciwieństwie do zwykłego dziedziczenia, domieszkowanie klasy nie jest formą specjalizacji, lecz zwykłym dostarczeniem odpowiedniej funkcjonalności. Klasa może pozyskać część lub całość funkcjonalności z jednej lub większej liczby domieszek.

Domieszki po raz pierwszy pojawiły się w języku programowania Flavors, wczesnym obiektowym rozwinięciu Lispu opracowanym przez Symbolics. Angielska nazwa mixin została zainspirowana przez lodziarnię Steve's Ice Cream Parlor działającą w Somerville w Massachusetts[1]. Oferowała ona klientom jeden z podstawowych smaków lodów (np. czekolada, wanilia), do których mogli oni dobrać dowolną liczbę dodatkowych składników takich, jak orzechy. Produkt nosił nazwę Mix-in i był w swoim czasie zastrzeżonym znakiem towarowym[2].

Domieszki pozwalają na ponowne wykorzystanie kodu, unikając przy tym błędu związanego z wielokrotnym dziedziczeniem, jednak wprowadzając własne ograniczenia.

Domieszka może być traktowana także jako interfejs z zaimplementowanymi metodami. Kiedy klasa dołącza domieszkę, implementuje jednocześnie jej interfejs oraz przejmuje gotowe implementacje metod i atrybuty. Stają się one częścią klasy w trakcie kompilacji. Zaletą takiego podejścia jest możliwość przekazywania klas z określoną domieszką do metod jej wymagających, identycznie jak w przypadku interfejsów.

Podobną do domieszek funkcjonalność udostępniają cechy.

Przypisy

  1. Chuck Esterbrook: Using Mix-ins with Python (ang.). linuxjournal.com, 1 kwietnia 2001. [dostęp 3 stycznia 2010].
  2. Mix-Ins (Steve's ice cream, Boston, 1975) (ang.). [dostęp 3 stycznia 2010].