Domieszka (programowanie obiektowe)

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania

Domieszka (ang. mixin) – rodzaj 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.

W językach obiektowych cecha (ang. trait) jest mechanizmem współdzielenia zachowania klas podobnym do domieszek, który pozwala ominąć część ograniczeń pojedynczego dziedziczenia. Cechy zostały opracowane w Software Composition Group na Uniwersytecie w Bernie.Atrybut – element składni języka programowania, który określa konkretną właściwość (znaczenie), nadaną wybranemu elementowi (obiektowi).

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

W programowaniu obiektowym interfejs jest definicją abstrakcyjnego typu posiadającego jedynie operacje, a nie dane. Kiedy w konkretnej klasie zdefiniowane są wszystkie metody interfejsu mówimy, że klasa implementuje dany interfejs. W programie mogą być tworzone zmienne typu referencja do interfejsu, nie można natomiast tworzyć obiektów tego typu. Referencja może wskazywać na obiekt dowolnej klasy implementującej dany interfejs. Interfejs określa udostępniane operacje, nie zawiera natomiast ich implementacji i danych. Z tego powodu klasy mogą implementować wiele interfejsów, bez problemów wynikających z wielokrotnego dziedziczenia. Wszystkie metody w interfejsie z reguły muszą być publiczne.W programowaniu obiektowym klasa jest częściową lub całkowitą definicją dla obiektów. Definicja obejmuje dopuszczalny stan obiektów oraz ich zachowania. Obiekt, który został stworzony na podstawie danej klasy nazywany jest jej instancją. Klasy mogą być typami języka programowania - przykładowo, instancja klasy Owoc będzie mieć typ Owoc. Klasy posiadają zarówno interfejs, jak i strukturę. Interfejs opisuje, jak komunikować się z jej instancjami za pośrednictwem metod, zaś struktura definiuje sposób mapowania stanu obiektu na elementarne atrybuty.

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 atrybutów. 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.

Dziedziczeniem (ang. inheritance) w programowaniu obiektowym nazywamy mechanizm współdzielenia funkcjonalności między klasami. Klasa może dziedziczyć po innej klasie, co oznacza, że oprócz swoich własnych atrybutów oraz zachowań, uzyskuje także te pochodzące z klasy, z której dziedziczy. Klasa dziedzicząca jest nazywana klasą pochodną lub potomną (w j. angielskim: subclass lub derived class), zaś klasa, z której następuje dziedziczenie — klasą bazową (w ang. superclass). Z jednej klasy bazowej można uzyskać dowolną liczbę klas pochodnych. Klasy pochodne posiadają obok swoich własnych metod i pól, również kompletny interfejs klasy bazowej.Symbolics - firma, która przejęła aktywa nieistniejącego już producenta komputerów Symbolics, Inc.. Prowadzi sprzedaż i konserwację systemów Open Genera Lisp oraz Macsyma.

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

Przypisy[ | edytuj kod]

  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]. [zarchiwizowane z tego adresu (26 października 2007)].
Język programowania – zbiór zasad określających, kiedy ciąg symboli tworzy program komputerowy oraz jakie obliczenia opisuje.Kompilator – program służący do automatycznego tłumaczenia kodu napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (języku wynikowym) . Proces ten nazywany jest kompilacją. W informatyce kompilatorem nazywa się najczęściej program do tłumaczenia kodu źródłowego w języku programowania na język maszynowy. Niektóre z nich tłumaczą najpierw do języka asemblera, a ten na język maszynowy jest tłumaczony przez asembler.




Warto wiedzieć że... beta

Funkcjonalność – w technice zbiór atrybutów urządzenia, oprogramowania lub systemu, określających zdolność do dostarczenia funkcji zaspokajających wyznaczone i zakładane potrzeby, podczas używania w określonych warunkach.
Metoda – w programowaniu obiektowym podprogram składowy klasy, którego zadaniem jest działanie na rzecz określonych elementów danej klasy lub klas z nią spokrewnionych (zob. też dziedziczenie).
Obiekt to podstawowe pojęcie wchodzące w skład paradygmatu programowania obiektowego w analizie i projektowaniu oprogramowania oraz w programowaniu.
Lisp – rodzina języków programowania z długą historią i charakterystyczną składnią. Zaprojektowany przez Johna McCarthy’ego na MIT w 1958 roku. Pierwszym interpreterem języka Lisp była implementacja funkcji eval wykonana przez studenta McCarthy’ego – Steve’a Russella. Lisp jest drugim z kolei pod względem wieku językiem programowania wysokiego poziomu pozostającym w użyciu (starszy jest tylko Fortran). Podobnie jak Fortran, Lisp ulegał na przestrzeni czasu licznym zmianom. Powstało również wiele jego dialektów. Dziś do najpopularniejszych należą trzy: Common Lisp, Scheme i Clojure.
Implementacja (wdrożenie, przystosowanie, realizacja, łac.ang. implementation) – w informatyce – proces przekształcania abstrakcyjnego opisu systemu lub programu na obiekt fizyczny: komputer lub działający program zapisany w konkretnym języku programowania; także obiekt fizyczny będący efektem takiego przekształcenia, np. implementacja systemu operacyjnego (wdrożenie systemu) lub kompilatora dla konkretnego typu komputera.

Reklama