6
votes

Oop - message passant en c #

Quel est l'exemple du concept de OOP 'Message passant' en C # (méthodes d'appel / paramètres de passage / événements de tirage / événements de manutention / ???) et pourquoi est-ce appelé message qui passe?


2 commentaires

Hein? Est-ce une vraie question? Parce que vous avez répondu vous-même. Fondamentalement parce que c'est la façon dont les objets communiquent; C'est donc appelé "message de message".


Oui c'est le cas. J'ai découvert le concept. Et je suis ici pour le vérifier.


3 Réponses :


8
votes

Appels de méthode.

C'est ce qu'on appelle le message qui passe pour le distinguer de la notion impérative de "appeler une fonction" et de renforcer l'idée que l'objet de réception décide de quoi faire. Sur le site d'appel, vous disez simplement au récepteur le "message".

Un exemple serait des méthodes abstraites dans une classe et implémentées dans des sous-classes; ou des implémentations d'une méthode d'interface. Quand vous appelez par ex. getenumerator () via une variable de type iEnumerable , vous ne connaissez pas sur le site d'appel Quel code devrait réellement être exécuté.


0 commentaires

2
votes

On appelle le message qui passe pour le distinguer des paramètres de passage.

Un avantage majeur du passage d'un message est que vous pouvez modifier le contenu du message sans modifier la signature de la méthode qui réattache le message.

Un autre est que plusieurs méthodes peuvent avoir besoin des mêmes informations, il peut donc être défini et modifié au même endroit.


0 commentaires

2
votes

Il y en a des personnes qui sentent que les appels de passes et de méthodes sont différents. Nous utilisons le terme interchangeable, mais le sens est subtil.

En SmallTalk, le passage du message a été lancé dans le temps, et l'objet avait un moyen de déterminer s'il pouvait gérer un message qui n'était pas explicitement défini comme une méthode. Ruby appelle cette méthode_missing. Les méthodes en C ++ en particulier sont liées au moment de la compilation, sans aucun moyen d'ajouter de manière dynamique des moyens de gérer plus de messages. C # 4.0 a un mélange, une fois que vous commencez à lancer une dynamique autour.

Il y a une autre école de passage de message, Erlang pense que tous les arguments de message doivent être découplés dans l'état. C'est-à-dire qu'ils sont immuables ou des copies.


1 commentaires

J'ai entendu la définition de cette dernière définition - que les messages sont des appels de méthode découplés pouvant être multi-threads ou traité de la machine. Dans des langues telles que C ++ et Java, cette fonctionnalité n'existe pas, les termes ont tendance à être synonymes.