[Java] delegation pattern

delegation pattern [Java] - Java - Programmation

Marsh Posté le 19-09-2003 à 16:26:41    

bon delegation ca consiste a etendre une classe en reportertant les nouvelles fonctions dans une autre classe. Au lieu d'utiliser l'heritage qui est bcp plus lourd et lent.
 
et les pattern c des  classes toute faites mises a la disponisition des utilisateurs
 

Code :
  1. //ClassA  
  2. public class ClassA{
  3.     //data  
  4.     private ClassB classB;
  5.     //methods  
  6.     public classeA(){ classeB = new ClasseB(); }
  7.     public void m1(){classB.m1();} //delegation
  8.     public void m2(){...}
  9. }
  10.   //ClassB  
  11. public class ClassB{
  12.     public void m1(){...}
  13. }


 
c bon tout ca ??
 delegation pattern c simplement les 2 ensemble ????
qqn saurait me donner un exemple ????


Message édité par red faction le 19-09-2003 à 17:29:01
Reply

Marsh Posté le 19-09-2003 à 16:26:41   

Reply

Marsh Posté le 19-09-2003 à 18:00:29    

c'est la rentrée  :sleep:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 19-09-2003 à 18:09:40    

Citation :

Au lieu d'utiliser l'heritage qui est bcp plus lourd et lent.

ce qu'il faut pas entendre

Reply

Marsh Posté le 19-09-2003 à 18:33:16    

Taz a écrit :

Citation :

Au lieu d'utiliser l'heritage qui est bcp plus lourd et lent.

ce qu'il faut pas entendre


 
ben c ce que jai lu sur une page web ca avait l'air serieux

Reply

Marsh Posté le 19-09-2003 à 18:33:54    

je demande pas de faire une analyse complete de la delegation juste me dire si c bon ou pas et me donner qq pistes


Message édité par red faction le 19-09-2003 à 18:34:09
Reply

Marsh Posté le 19-09-2003 à 18:35:56    

red faction a écrit :

je demande pas de faire une analyse complete de la delegation juste me dire si c bon ou pas et me donner qq pistes


 
d'après ce que tu as écrit, je dirais que tu n'as rien compris.
Mon conseil: dort bien, vide toi la tête et relit ton cours en repartant du début.


Message édité par schnapsmann le 19-09-2003 à 18:36:44

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 19-09-2003 à 18:37:26    

SchnapsMann a écrit :


 
d'après ce que tu as écrit, je dirais que tu n'as rien compris.
Mon conseil: dort bien, vide toi la tête et relit ton cours en repartant du début.


 
ya pas de cours justement c debrouille totale

Reply

Marsh Posté le 19-09-2003 à 18:38:15    

red faction a écrit :


 
ya pas de cours justement c debrouille totale


 
dans ce cas va t'acheter un bouquin sur les designs patterns, si c'est ça dont il s'agit.


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 19-09-2003 à 18:44:47    

tiens, on a aucun sujet à propos de DP  :heink:

Reply

Marsh Posté le 19-09-2003 à 18:57:01    

J'ai ce qui faut si il faut ...

Reply

Marsh Posté le 19-09-2003 à 18:57:01   

Reply

Marsh Posté le 19-09-2003 à 19:01:17    

Reply

Marsh Posté le 19-09-2003 à 19:11:46    

Joel F a écrit :

J'ai ce qui faut si il faut ...

i faut pas  :non: les bouquins pirates c mal :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 19-09-2003 à 19:18:03    

:fou: hmmm je pensais a un cours made from scratch by myself :o

Reply

Marsh Posté le 19-09-2003 à 19:53:17    

red faction a écrit :

je demande pas de faire une analyse complete de la delegation juste me dire si c bon ou pas et me donner qq pistes


oui, ce que tu fais c'est de la délégation ... mais vraiment, ca doit pas être plus rapide que l'héritage qui n'est ni lourd ni lent. Au contraire.
 
remarque : quand on fait de la délégation, c'est souvent pratique de passer par des interface et de permettre de modifier l'objet qui fait réellement le boulot. Dans ton exemple, il faudrait que B soit une interface et que tu permette dans la classe A de modifier l'attribut B. ex :  
 

Code :
  1. public class ClassA{ 
  2.    // objjet qui fait le boulot  
  3.    private InterfB bosseur; 
  4.    public classeA(InterfB bosseur){ this.bosseur = bosseur; }
  5.    public classeA(){
  6.       // comportement par défaut : on utilise un object ClassB  
  7.       this(new ClassB());
  8.    }
  9.    // permet de modifier dynamiquement l'objet de délégation
  10.    public void setBosseur(InterfB bosseur) {
  11.       this.bosseur = bosseur;
  12.    }
  13.    public void m1(){this.bosseur.m1();} //delegation  
  14.    public void m2(){...} 
  15. }
  16. public interface InterfB {
  17.    public void m1();
  18. }
  19. public class ClassB implements InterfB { 
  20.    public void m1(){...} 
  21. }


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 19-09-2003 à 21:09:28    

benou a écrit :


oui, ce que tu fais c'est de la délégation ... mais vraiment, ca doit pas être plus rapide que l'héritage qui n'est ni lourd ni lent. Au contraire.
 
remarque : quand on fait de la délégation, c'est souvent pratique de passer par des interface et de permettre de modifier l'objet qui fait réellement le boulot. Dans ton exemple, il faudrait que B soit une interface et que tu permette dans la classe A de modifier l'attribut B. ex :  
 

Code :
  1. public class ClassA{ 
  2.    // objjet qui fait le boulot  
  3.    private InterfB bosseur; 
  4.    public classeA(InterfB bosseur){ this.bosseur = bosseur; }
  5.    public classeA(){
  6.       // comportement par défaut : on utilise un object ClassB  
  7.       this(new ClassB());
  8.    }
  9.    // permet de modifier dynamiquement l'objet de délégation
  10.    public void setBosseur(InterfB bosseur) {
  11.       this.bosseur = bosseur;
  12.    }
  13.    public void m1(){this.bosseur.m1();} //delegation  
  14.    public void m2(){...} 
  15. }
  16. public interface InterfB {
  17.    public void m1();
  18. }
  19. public class ClassB implements InterfB { 
  20.    public void m1(){...} 
  21. }

 


 
 
ok sinon deux petites questions :  
(newbie en java, notions pas encore vues)
 
implements c uniquement avec les interfaces ??? c un peu comme le extend mais au lieu detre une classe  c une interface???
 
 
jai pas bien capté la nuance entre interface et abstract

Reply

Marsh Posté le 19-09-2003 à 21:29:05    

mouais ... à ce niveau tu devrais lire un bouquin plutot que de poser la question ..
 

Citation :

implements c uniquement avec les interfaces ???


oui
 

Citation :

jai pas bien capté la nuance entre interface et abstract


la notion est la même ...
tu peux voir une classe abstraite comme une interface à moitiée implémetée ou (à l'inverse) comme une classe qui n'implémenterait qu'à moitiée une interface.
 
C'est souvent utilisé pour factoriser du code genre tu dois faire 3 classes qui remplissent le même rôle et qui ont un comportement presque identique à quelques exception prêt, tu fais une classe abstraite en mettant les comportement différent abstrait. Ensuite tu fais 3 classes qui hérite de la classe abstraire et elle n'ont plus qu'à implémenter leur comportement spécifique : le comportement commun est hérité de la classe abstraite.
C'est une vision sipplifiée des choses mais pour débuter tu peux voir les choses comme ca.
 
Va faire un tour sur la java faq pour trouver un bon bouquin. Je te conseille Thinking in java


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 19-09-2003 à 21:34:12    

benou a écrit :

mouais ... à ce niveau tu devrais lire un bouquin plutot que de poser la question ..
 

Citation :

implements c uniquement avec les interfaces ???


oui
 

Citation :

jai pas bien capté la nuance entre interface et abstract


la notion est la même ...
tu peux voir une classe abstraite comme une interface à moitiée implémetée ou (à l'inverse) comme une classe qui n'implémenterait qu'à moitiée une interface.
 
C'est souvent utilisé pour factoriser du code genre tu dois faire 3 classes qui remplissent le même rôle et qui ont un comportement presque identique à quelques exception prêt, tu fais une classe abstraite en mettant les comportement différent abstrait. Ensuite tu fais 3 classes qui hérite de la classe abstraire et elle n'ont plus qu'à implémenter leur comportement spécifique : le comportement commun est hérité de la classe abstraite.
C'est une vision sipplifiée des choses mais pour débuter tu peux voir les choses comme ca.
 
Va faire un tour sur la java faq pour trouver un bon bouquin. Je te conseille Thinking in java


 
merci pour toutes ces reponses...
 
bah en tout cas jai deja une grande avance vu que jai 1an et demi de c++ (noitions objet,heritage, classes virtuelles, ...)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed