Właściwości Cechy są jedynie zbiorem dodatkowego kodu (metody oraz atrybuty), który może zostać wstrzyknięty do wybranych klas na etapie kompilacji. W przeciwieństwie do domieszek, podczas wykonywania program nie ma pojęcia o istnieniu cech, dlatego nie można w locie sprawdzić czy obiekt przekazany do funkcji obsługuje określoną cechę. Nie można także tworzyć obiektów cech.
Klasy mogą importować dowolną liczbę cech, lecz nie istnieje żaden mechanizm rozwiązywania konfliktów, gdy dwie cechy próbują dodać identyczną metodę różniącą się implementacją. Rozwiązanie konfliktu pozostawione jest programiście, który może zrezygnować z dołączenia jednej z cech, wybrać jedną z implementacji lub zaimportować jedną ze spornych metod pod inną nazwą.
Implementacja Cechy występują w języku Scala, PHP (od wersji 5.4.0), implementacji Smalltalka o nazwie Squeak oraz w Perlu 6, gdzie noszą nazwę ról. Cechy są również istotnym elementem języka programowania Rust. Zaimplementowano je także w postaci dodatkowej biblioteki rozszerzającej oryginalny język w Perlu 5 (biblioteka Moose) oraz JavaScript (biblioteka Joose). W Pythonie można z nich korzystać używając pakietów Traitsref lub py3traits.
Przypisy
Kategoria:Programowanie obiektowe