This is the translation. The original web-page (oryginalna strona): http://onestepback.org/articles/poly/
Ustawić…
Konwersja e-mail na CLUG listy dostaje temacie robi obiektowego programu (z polimorfizmem wykonawczego) w non-obiekt zorientowany język jak C Co trzeba zrobić, co wygląd jak i kod będzie czy warto?
Problem…
Oto mały przykład programu obiekt zorientowany, który używa następujących klas:
|<<berło>>| | Kształt | A | +---------+-------+ | | |Prostokąt| |Okrąg|
Kształt zapewnia abstrakcyjny interfejs, który obsługuje Draw(), MoveTo(x,y), i RMoveTo(dx,dy) metody. Prostokąt i okrąg obsługują ten interfejs, a także definiują własne metody (np. SetRadius(newRadius) dla Koła).
Uwaga: Moim zamiarem było mieć klasę Shape być czysty interfejs, z całą realizacji w klasach pochodnych. Kilka przykładów przesuwać implementacje MoveTo i metody RMoveTo do klasy kształt. To z pewnością zmniejsza redundency i optymalizacja jest dopuszczalne dla tego przykładu.
Wyzwanie…
Początkowo stworzyłem wersje programu C i C++. Ktoś na liście CLUG zaoferował wersję Perla. Pomyślałem więc, że byłoby interesujące zobaczyć ten mały problem napisany w kilku różnych językach obiekt zorientowany (lub innych niż obiekt zorientowany z ręcznym polimorfizmem).
Wyniki…
obiekt zorientowany Języki
Języki w tej tabeli dostarczyć trochę rodzaju wsparcie dla programowania obiektowego.
Języki ogólnego przeznaczenia inne niż obiekt zorientowany
Języki w tej kategorii są językami ogólnego przeznaczenia, które nie zapewniają żadnych funkcji programowania obiektowego.
Język | Wniesiony przez |
---|---|
ANSI C | Jim Weirich |
Erlang | Chris Rathman |
Forth | Jim Weirich |
Haskell | Chris Rathman |
Icon | Chris Rathman |
Lua | Marcelo da Silva Gomes |
Modula2 | Chris Rathman |
Scheme | Jim Weirich |
Języki specjalnego przeznaczenia
Języki w tej kategorii są językami celowych. Obejmuje to takie rzeczy jak i języków skryptowych języków baz danych. Wpisy w tej kategorii naprawdę rozciągnąć kopertę, aby móc zrobić polimorfizm.
Prawie, ale nie całkiem…
Bryce Jacobs oferuje wersję xbase. Niestety, wersja Bryce oferuje tylko ograniczoną formę polimorfizmu (gdzie klasa bazowa musi wyliczyć wszystkie podklasy). Bryce oferuje również pewną ogólną krytykę paradygmatu obiekt zorientowany których można korzystać.
Przesyłanie nowego języka
Każdy może przesłać wersję, po prostu wyślij ją do mnie, Jim Weirich, pod adresem [email protected].
Jeśli wyślesz przykład, poniższe wskazówki ułatwią mi to:
- Jeśli zamierzasz przesłać język, który jest już na liście, upewnij się, że nowa wersja jest interesująca w inny sposób. (Innymi słowy, niewielkie różnice formatowania lub zmiany nazw zmiennych nie są interesujące)
- Kod może być przedstawiony w tylu plikach, ile potrzeba dla twojego języka. Jeśli chcesz, aby pliki były posortowane w określonej kolejności, poprzedź nazwę pliku numerem i podkreśleniem. (na przykład 01_shape.c, 02_rect.c).
- Dołącz dane wyjściowe programu do pliku o nazwie ‘/articles/poly/output.txt’.
- Spakuj całość do e-maila w pliku tar lub zip.
- Jeśli wolisz, aby blog lub adres URL witryny był powiązany z Twoim nazwiskiem w tabeli współpracowników, powiedz słowo. W przeciwnym razie będę linkować z twoim adresem e-mail. Jeśli wolisz nie mieć linku, to też jest w porządku.
[Polyglot Polymorphism Indeks]
Jim Weirich/[email protected]