IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Réutilisation de méthode ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Par défaut Réutilisation de méthode ?
    Salut,

    Alors voilà le truc. La dernière fois, j'ai fait une classe avec une méthode main et plein d'autres méthodes super pratique pour le calcul matriciel et vectoriel. Des simples boucles sur des tableaux, mais pratiques. Bref, là je vais faire un autre programme qui va aussi manipuler des matrices et j'aurai voulu réutiliser toutes ces méthodes sans faire un copier coller. Comment-puis je faire ? Ya t il possibilité de faire un genre de package assez simplement ?

    Merci et bonne journée.

  2. #2
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Tu as 2 possibilités...
    Soit tu ajoutes ta classe "Utile" a ton projet et tu crées un objet "Utile". Tu pourras ainsi appeler les méthodes publiques de cet objet sans avoir à faire de copier/coller.
    Soit tu crées un jar contenant ta classe "Utile" que tu importeras dans le classpath de ton projet. Tu pourras alors, comme précédement, créer un objet "Utile" grâce auquel tu appeleras les méthodes publiques de la classe "Utile"

  3. #3
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 878
    Par défaut
    Salut,

    Il va falloir modifier ta Classe existante, pour la transformer en une sorte de librairie de fonctions.

    Pour ça, par exemple, tu la nommeras "MatriceUtilities.java", et elle contiendra des méthodes "static" qui seront donc accessibles directement, sans instancier d'objet. De toutes façons je pense qu'elles sont déjà en static, si tu les utilisais directement dans le main. Tu appelleras les méthodes par : MatriceUtilities.calculMatrice(); par exemple.

    Ensuite, pour l'inclure dans un nouveau projet, tout dépend de l'outil que tu utilises pour coder. Sous Eclipse par exemple, tu pourras faire de la dépendance de projet, en créeant un projet qui serait ta librairie ( contenant donc ta classe de Matrices ).

    Une façon plus propre de faire cela ( je la signale quand même ) serait de faire de ta classe un singleton (cf le net pour savoir ce que c'est).

    Ensuite, tu appellerais ta méthode avec MatriceUtilities.getInstance().calculMatrice();

    A+

  4. #4
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Par défaut
    Ok, merci beaucoup.

    Mais juste pour chipoter, il n'y a pas moyen d'éviter d'écrire à chaque fois "MatriceUtilities.", on peut pas mettre juste le nom de la méthode ?

  5. #5
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 878
    Par défaut
    Le fait est que Java est un langage par objets.

    Donc quand tu fais appel à une méthode, il est courant et normal ( même obligatoire dans la plupart des cas ) de nommer l'objet qui contient la méthode, ou dans le cas de méthode statiques, de la classe.

    Donc dans ton cas, oui il faudra toujours préciser MatriceUtilities.

    Par contre, dans le cas que j'ai donné de l'utilisation d'un singleton, tu peux avoir quelque chose de plus compacte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MatriceUtilities mu = MatriceUtilities.getInstance(); // Récupération de l'instance
    mu.calculerMatrice();
    Tu es toujours obligé d'utiliser le nom de l'objet ici, mais il est plus court, tu pourrais le nommer comme tu veux.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Par défaut
    ok et merci

    Au vu de l'utilisation que je vais en faire, je pense que je vais juste utiliser la première solution : un fichier regroupant toutes les méthodes appelée à chaque fois par MatriceUtilities.SommeMatrice par exemple.

    Merci

  7. #7
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par Magicien d'Oz
    Ok, merci beaucoup.

    Mais juste pour chipoter, il n'y a pas moyen d'éviter d'écrire à chaque fois "MatriceUtilities.", on peut pas mettre juste le nom de la méthode ?
    C'est possible depuis Java 5 avec l'import static
    cf FAQ : [Java 5.0] Qu'est-ce que l'import static ?
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  8. #8
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 878
    Par défaut
    Bien vu, le y@m's

    Mais l'utilisation d'un singleton est bien plus puissante de toutes façons que celle d'une classe statique : en effet, on peut alors avoir un vrai objet en mémoire, qui aura ses attributs et ses propres liens, vers d'autres objets, je pense par exemple aux systèmes de Logs, aux liens vers d'autres objets métiers, etc..

    Dans le cas d'une classe statique, ces liens seraient à refaire à chaque appel de la méthode.

  9. #9
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par KiLVaiDeN
    Bien vu, le y@m's

    Mais l'utilisation d'un singleton est bien plus puissante de toutes façons que celle d'une classe statique : en effet, on peut alors avoir un vrai objet en mémoire, qui aura ses attributs et ses propres liens, vers d'autres objets, je pense par exemple aux systèmes de Logs, aux liens vers d'autres objets métiers, etc..

    Dans le cas d'une classe statique, ces liens seraient à refaire à chaque appel de la méthode.
    Ce que tu dit est vrai mais je ne pense pas que dans ce cas un singleton sois utile. En effet, les méthodes n'ont, a priori, aucun lien entre elles et sont toutes static. De ce fait il me parait inutile de vouloir construire une architecture ayant un semblant d'objet alors que l'on est dans une logique toute procedurale.
    Le singleton trouve toute sont utilité dans le cadre d'une classe de type factory mais n'apporte, ici, rien du tout (aucun lien entre les differentes méthodes, aucun attribut n'est rattaché à une instance (que du static)).

    Personnellement j'ai plusieurs classes de ce genre (avec uniquement des méthodes static) et je me contente de déclarer le constructeur par défaut private afin d'empécher l'instanciation de la-dite classe, ensuite un simple import static et le tour est joué .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. réutilisation méthode Java dans une JSP
    Par dtwelve dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 03/09/2009, 14h23
  2. Gros Problème avec DirectShow et la méthode RELEASE
    Par Olivier Delmotte dans le forum DirectX
    Réponses: 3
    Dernier message: 10/03/2003, 18h10
  3. [Singleton] Différences avec méthodes statiques
    Par Franche dans le forum Design Patterns
    Réponses: 1
    Dernier message: 26/02/2003, 17h10
  4. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo