[JAVA]strategy

strategy [JAVA] - Java - Programmation

Marsh Posté le 06-12-2001 à 16:28:09    

Salut,
 
voilà j'ai encore une question conne
 
Lorsque l'on demande d'implémenter une strategie en java, il y a t-il quelque chose de particulier à faire ?
 
Par exemple moi je dois créer une classe qui va contenir un vector que je dois remplir à partir d'une base de donner.
 
Ors la Bd n'est pas disponnible et j'ai besoin de cette classe pour faire mes testes.
 
on m'a donc demandé d'implémenter une stratégie qui permettrait de faire l'alimentation de mon vector soit parun fichier soit par la base.
 
Voilà
@+


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
Reply

Marsh Posté le 06-12-2001 à 16:28:09   

Reply

Marsh Posté le 06-12-2001 à 19:00:31    

mais c'est quoi ta question ?


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 06-12-2001 à 23:28:53    

Si j'ai bien compris, on t'a demandé de faire un programme assez générique pour être alimenté soit par un fichier, soit par une base de donnée.
 
si c'est ca c'est con, parce que ce qu'il y a d'intéressant et de plus compliqué la dedans c'est justement la récupération des données dans la base (JDBC).

Reply

Marsh Posté le 07-12-2001 à 11:08:04    

Bon la question c'était qu'est-ce qu'une stratégie en java ?  :??:  
 
Bon l'instant je me suis contenté de faire un if.


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
Reply

Marsh Posté le 07-12-2001 à 17:53:33    

Une stratégie, c'est le pattern Strategy de l'excellent bouquin Design Patterns de Erich Gamma.
 
Expliqué en quelques mots, c'est un pattern qui permet la gestion de différents algorithmes.
Ici, c'est donc une interface "A" qui permettra d'alimenter ton Vector au choix à partir d'une BDD (une première classe "B" qui implémente A) et d'un fichier (deuxième classe "C" qui implémente A)
 
En résumé, d'un côté tu as ta classe de travail qui contient le Vector que tu veux renseigner.
Tu fournis à cette classe une instance de l'interface "A" afin d'accéder à tes données.
Si tu accède à une BDD, l'instance que tu fournis à ta classe de travail est une instance de la classe "B" ; sinon, si tu travailles à partir d'un fichier, tu lui fournis une instance de la classe "C".
 
Bon, c'est peut être pas très clair sans faire de dessin, mais en gros c'est l'idée de la Stratégie.
 
A++

Reply

Marsh Posté le 07-12-2001 à 21:09:30    

donc je maitiens ce que je disais juste au dessus ...
si le but c'est de faire une classe capable de remplir un vecteur, l'interêt est très limité !

Reply

Marsh Posté le 10-12-2001 à 10:55:58    

Salut,
 
Merci pour vos réponses.
 
Mais quelqu'un aurait-il un petit tutorial sous la main pour voir comment tout ça s'implémente ??
 
sinon pour l'intérêt, c'est ce qu'on m'a demandé de faire donc je ne discute pas.  :o


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
Reply

Marsh Posté le 10-12-2001 à 11:46:00    

:bounce:


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
Reply

Marsh Posté le 10-12-2001 à 15:09:48    

:bounce:


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
Reply

Marsh Posté le 10-12-2001 à 15:28:22    

WiseTechi a écrit a écrit :

Une stratégie, c'est le pattern Strategy de l'excellent bouquin Design Patterns de Erich Gamma.
 
Expliqué en quelques mots, c'est un pattern qui permet la gestion de différents algorithmes.
Ici, c'est donc une interface "A" qui permettra d'alimenter ton Vector au choix à partir d'une BDD (une première classe "B" qui implémente A) et d'un fichier (deuxième classe "C" qui implémente A)
 
 
En résumé, d'un côté tu as ta classe de travail qui contient le Vector que tu veux renseigner.
Tu fournis à cette classe une instance de l'interface "A" afin d'accéder à tes données.
Si tu accède à une BDD, l'instance que tu fournis à ta classe de travail est une instance de la classe "B" ; sinon, si tu travailles à partir d'un fichier, tu lui fournis une instance de la classe "C".
 
Bon, c'est peut être pas très clair sans faire de dessin, mais en gros c'est l'idée de la Stratégie.
 
A++  




 
C'est pas clair pour toi ca ?


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 10-12-2001 à 15:28:22   

Reply

Marsh Posté le 10-12-2001 à 15:44:02    

presque il manque juste le nom de l'interface A (Strategy ???) le nom du package (Pas dans java.util ou java.lang m'étonnerais qu'il soit dans les autres) et si possible les méthodes à implémenter (quoique je peux p-ê me débrouiller avec les erreurs de compilation  ;) ).
 
voilà c tout.


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
Reply

Marsh Posté le 10-12-2001 à 16:02:33    

mais enfin :D
 
Elle n'existe pas ta stratégie, c'est un pattern, tu dois la créer.
 
Bon ok :D
 
public interface MyStrategy
{
   public Vector getContent();
}
 
public class MyStrategyBDD implements MyStrategy
{
   public Vector getContent()
   {
     // Connect to DB and retrieve information as res
     return res;
   }
}
 
public class MyStrategyFile implements MyStrategy
{
   public Vector getContent()
   {
     // Open file and retrieve information as res
     return res;
   }
}
 
---------------
 
Client
 
public class Test {
 
    /////
 
    MyStrategy st = null;
    Vector v = null;
    public Test(MyStrategy mySt)
    {
          st = mySt;
    }
 
    public retrieveInfo()
    {
           v = st.getContent();
    }
 
}
--------
 
Voila lorsque tu instancies ton test, tu passes une instance de B ou de C (MyStrategyBDD ou MyStrategyFile). Donc lorsque tu fais getContent (qui est une classe de l'interface et donc commune aux 2) c soit la bd, soit le fichier qui est utilisé.
 
Plus clair que ca tu meurs :D


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 10-12-2001 à 16:08:29    

Ah effectivement je crois j'étais complétement dans l'erreur.
 
En fait j'aurais mieux  de demander ce qu'est un pattern  :D .
 
En tout cas je te remercie de ta patience et Dieu sait qu'avec moi il en faut.


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
Reply

Marsh Posté le 10-12-2001 à 16:11:34    

archangel a écrit a écrit :

Ah effectivement je crois j'étais complétement dans l'erreur.
 
En fait j'aurais mieux  de demander ce qu'est un pattern  :D .
 
En tout cas je te remercie de ta patience et Dieu sait qu'avec moi il en faut.  




 
Bin un pattern c'est une pratique de programmation en fait. Une espece de méthodo sur un point bien précis. Qui a des points forts pour certains problemes et des points faibles pour d'autre. Ici l'avantage est que avec le meme client tu as un comportement différent selon que tu passes une class B ou C. Le client ne doit pas etre changé et ne sais meme pas ce qu'il se passe puisqu'il utilise une méthode standard (getContent()). Tu peux tt changer, nom de classe, de méthode. MAis garde bien le nom de l'interface en param et une interface puis deux classes qui hérietent l'interface.
 
Si tu as un probleme, post ta question here ! :D
 
A+  :hello:


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 10-12-2001 à 16:16:48    

Oui là c'est plus clair me reste plus qu'à me lancer dans la prog.
 
Et t'inquiètes pas le coup problème = question sur le forum je crois que j'ai bien assimilé  :D .
 
encore merci à tous.


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
Reply

Marsh Posté le 10-12-2001 à 16:17:02    

par exemple si tu dois récupérer ton info depuis XML par exemple tu crées un truc du genre
 
public class  MyStrategyXML implements MyStrategy {
 
  public Vector getContent()
  {  
     // parse XML, etc
   }
 
Tu n'as plus qu'a relancer Test en lui passant une instance de cette classe et le tour est joué. Tu n'as rien du recompiler ou changer ...


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Sujets relatifs:

Leave a Replay

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