2009-07-27 17 views
5

Jaki jest przykład koncepcji OOP "Message Passing" w języku C# (metody wywoływania/Parametry przekazywania/Akcje wypalania/Obsługa zdarzeń/???) i dlaczego jest nazywany przekazywaniem wiadomości?OOP - Wiadomość przekazywana w języku C#

+0

Huh? Czy to jest prawdziwe pytanie? bo sam odpowiedziałeś. Zasadniczo dlatego, że jest to sposób komunikowania się obiektów; więc nazywa się "przekazywanie wiadomości". –

+0

Tak, jest. Odkryłem tę koncepcję. I jestem tutaj, aby to zweryfikować. –

Odpowiedz

5

Wywołania metod.

Nazywa się to przekazywaniem wiadomości w celu odróżnienia go od imperatywnego pojęcia "wywoływania funkcji" i wzmocnienia idei, że obiekt odbierający decyduje o tym, co należy zrobić. Na stronie połączenia, po prostu powiedz odbiorcy "wiadomość".

2

Nazywa się to przekazywaniem komunikatu w celu odróżnienia go od parametrów przekazujących.

Główną zaletą przekazywania wiadomości jest możliwość zmiany zawartości wiadomości bez zmiany sygnatury metody otrzymywania wiadomości.

Innym jest, że kilka metod może potrzebować tych samych informacji, dlatego można je zdefiniować i zmienić w tym samym miejscu.

+0

Doceniam twoją odpowiedź. Ale odpowiedź Sii jest jaśniejsza. –

2

Niektórzy uważają, że przekazywanie wiadomości i wywołania metod są inne. Używamy terminu zamiennie, ale znaczenie jest subtelne.

W smalltalk przekazywanie komunikatów było powiązane z czasem uruchomienia, a obiekt mógł określić, czy może obsłużyć komunikat, który nie został jawnie zdefiniowany jako metoda. Ruby nazywa tę metodę_missing. Metody w C++ są w szczególności powiązane podczas kompilacji, bez możliwości dynamicznego dodawania sposobów obsługi większej liczby wiadomości. C# 4.0 ma mieszankę, gdy zaczniesz rzucać dynamikę.

Po szkole przechodzi kolejna wiadomość, Erlang uważa, że ​​wszystkie komunikaty muszą zostać odłączone od stanu. Oznacza to, że są albo niezmienne albo kopie.

+0

Słyszałem już tę ostatnią definicję - wiadomości są odsprzęganymi wywołaniami metod, które mogą być wielowątkowe lub przetwarzane poza maszyną. W językach takich jak C++ i Java ta funkcja nie istnieje, więc terminy są synonimami. –