[Squeak-fr] Equivalent des interfaces callback du C++

Noury Bouraqadi bouraqadi at ensm-douai.fr
Mar 9 Sep 09:24:21 UTC 2008


Bonjour,

Il y a une manière d'expliciter les contrats. Il s'agit de recourir au  
tests SUnit.

Noury
On 24 août 08, at 12:24, Jean-François LEFEVRE wrote:

> Bonjour,
>
> Comme tu le dis si bien, la notion d'interface est implicite et le  
> contrat doit au mieux être exprimé dans les commentaires de méthode  
> ou de classe.
> Souvent le contrat est exprimé à l'aide d'une classe abstraite et  
> les méthodes obligatoires sont définies de manière abstraite (self  
> subclassResponsibility).
> Ce n'est pas toujours possible (quand tu as besoin d'hériter d'autre  
> chose) et dans ce cas on peut effectivement avoir des  
> messageNotUnderstand si
> on n'a pas respecté le contrat.
>
> Cordialement,
> Jean-François
>
> Damien Cassou a écrit :
>> 2008/8/24 Vicnet <oselev at yahoo.fr>:
>>
>>> Bonjour,
>>>
>>> Damien Cassou a écrit :
>>>
>>>> j'aimerai bien t'aider, mais je n'ai absolument rien compris :-).
>>>> Pourrais-tu donner un exemple ?
>>>>
>>> Oui voila en C++:
>>>
>>> class I {
>>>       virtual void callback() = 0;
>>> };
>>>
>>> class A : public virtual I
>>> {
>>>       virtual void callback() {
>>>               std::cout << "Je suis prévenu maintenant !";
>>>       }
>>> };
>>>
>>> class B
>>> {
>>>       Enfant(I* i) : _i(i) { }
>>>       void evennement() {
>>>               _i->callback();
>>>       }
>>>       I* _i;
>>> };
>>>
>>> A a;
>>> B b(a);
>>> b.evennement();
>>>
>>> a est prévenu d'un évennement par un b sans que b ne connaisse  
>>> tout de a. A
>>> et B sont découplés.
>>>
>>> Zn java, il y a directement le mot clef interface.
>>>
>>> Il y a un 'contrat' I entre les deux que chacun doit respecter/ 
>>> utiliser.
>>>
>>> En smalltalk, le 'contrat' semble implicite. Voici ce que je fais  
>>> en squeak
>>> (peut etre faudrait-il mettre les methode sous la forme  
>>> Object>>methode mais
>>> je ne suis pas sur de la syntaxe):
>>>
>>> Object subclass: #A
>>>       ...
>>> callback
>>>       Transcript print: "Je suis prévenu maintenant !"; cr.
>>>
>>> Object subclass: #B
>>>       instanceVariableNames: 'i'
>>>       ...
>>> evennement
>>>       i callback.
>>>
>>> |a b|
>>> a := A new.
>>> b := B new.
>>> b evennement. "a est prévenu !"
>>>
>>> a est prévenu mais le contrat n'est pas matérialisé par un objet.
>>> Quand on implémente A, on peut oublier de déclarer callback si  
>>> personne ne
>>> nous le dit !
>>>
>>> Est-ce la bonne façon de faire ?
>>>
>>
>> Oui, c'est la bonne façon de faire en général je pense.
>>
>>   
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Squeak-fr mailing list
>> Squeak-fr at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
>>
>
>
> -- 
> *Jean-François LEFEVRE*
> Architecte Senior
> +33 (0)6 80 38 01 29
> jflefevre at sqli.com <mailto:jflefevre at sqli.com> 	
> 268, avenue du Président Wilson 93210 LA PLAINE-SAINT-DENIS
> Std : +33 1 55 93 26 00 - Fax : +33 1 55 93 26 01
> *"SQLI Consulting, l'expert du conseil IT"*
> www.sqli.com <http://www.sqli.com>
>
> /----------------------------------------------------------------------------------
> Ce message et toutes les pièces jointes (ci-après le "message") sont  
> confidentiels et établis à l'intention exclusive de ses destinataires.
> Toute utilisation ou diffusion non autorisée est interdite. Tout  
> message électronique est susceptible d'altération.
> ----------------------------------------------------------------------------------
> /
>
>
> _______________________________________________
> Squeak-fr mailing list
> Squeak-fr at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
>

Noury Bouraqadi
------------------------------------------------------------------
Dr. Noury Bouraqadi - Enseignant/Chercheur
Responsable de l'enseignement de l'informatique
ARMINES - Ecole des Mines de Douai - Dept. I.A.
http://vst.ensm-douai.fr/noury

European Smalltalk Users Group Board
http://www.esug.org
------------------------------------------------------------------





Plus d'informations sur la liste de diffusion Squeak-fr