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

C# Discussion :

Methode static et constructeur


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Par défaut Methode static et constructeur
    Bonjour,

    Je veux savoir la différence entre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class c = new Class(parametre);
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class c = Class.Charger(parametre);
    un constructeur et methode static qui me renvoi un instance.
    personellement je ne voix pas aucun différence entre ces deux instruction (sauf le syntaxe), mais je veux savoir au moin qu'elle est la meilleur pratique et le context d'utilisation de la methode static pour renvoyer une instance.

    Merci,

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    en passant par une fonction statique plutot qu'un constructeur ca permet de faire un singleton (instance unique d'une classe)
    ca permet aussi de retourner un objet typé Object ou sur une interface (ou autre) et donc de faire évoluer la valeur de retour selon le paramètre

    si tu n'as pas de besoins dans ce genre, le constructeur paramétré suffit
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Les deux font plus ou moins la même chose. Par contre, le constructeur est une méthode spéciale dont c'est le rôle et il faut bien évidemment passer par lui.

    Il y a de très rare cas dans le framework où des méthodes statiques renvoient des objets mais à chaque fois, elles ne prennent pas de paramètres. (Je pense aux méthodes de l'espace de crypto qui fournissent des providers par défaut, etc ...)

    Un autre cas où tu peux utiliser les méthodes statiques (et encore, perso je préfère quand ce sont des méthodes d'instances) qui prennent des paramètres sont les Factory. Mais dans ce cas, la Factory renvoie un objet qui n'est pas de son type.
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par MaximePalmisano Voir le message
    Il y a de très rare cas dans le framework où des méthodes statiques renvoient des objets
    il y en a plein
    Citation Envoyé par MaximePalmisano Voir le message
    mais à chaque fois, elles ne prennent pas de paramètres
    si si, ca arrive assez souvent aussi
    un exemple parmi d'autres : system.drawing.color.fromargb(int32) (bon c'est une structure, mais il y a des classes aussi qui fonctionnent comme ca un peu partout)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par AJemni Voir le message
    Bonjour,

    Je veux savoir la différence entre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class c = new Class(parametre);
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class c = Class.Charger(parametre);
    un constructeur et methode static qui me renvoi un instance.
    personellement je ne voix pas aucun différence entre ces deux instruction (sauf le syntaxe), mais je veux savoir au moin qu'elle est la meilleur pratique et le context d'utilisation de la methode static pour renvoyer une instance.

    Merci,
    Dans le premier cas, tu es sur qu'une nouvelle instance est crée.
    Dans le deuxieme cas, c'est peut être une instance déjà existance qui est réutilisée. En fait, le deuxième ressemble à un pattern Factory.

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Il y a de très rare cas dans le framework où des méthodes statiques renvoient des objets mais à chaque fois, elles ne prennent pas de paramètres.
    J'ai mal tourné ma phrase, je voulais dire que les cas où des méthodes statiques prenaient des paramètres étaient rares.
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par MaximePalmisano Voir le message
    J'ai mal tourné ma phrase, je voulais dire que les cas où des méthodes statiques prenaient des paramètres étaient rares.
    c'est bien ce que j'avais compris, et pour moi les cas où dans le framework [une méthode statique demande un paramètre] ne sont pas rares
    autre exemple System.IO.File.Create(string path) qui retourne un FileStream
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Oui mais dans ce cas, tu parles de File.Create qui retourne un objet FileStream et non File.

    Je régissais par rapport à un objet Class qui retournait un objet Class.

    Dans le cas du File.Create, on est plus dans une optique de Factory (Rien que le nom de la méthode l'indique :p)
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  9. #9
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par AJemni Voir le message
    methode static qui me renvoi un instance.
    Et tu la crées comment ton instance ? A moins de faie joujou avec la réflexion, il te faudra bien un constructeur !

    Le constructeur:
    - ne renvoie jamais null
    - est le seul à pouvoir initialiser des valeurs readonly
    - se comporte comme une méthode virtuelle, puisque tout constructeur appelle un constructeur parent

    La factory : (que ce soit une méthode statique ou non) :
    - peut renvoyer null si besoin
    - peut renvoyer un objet préexistant si besoin (exemple : pool d'objets)
    - peut renvoyer une instance fille, par exemple en fonction des paramètres, ou de ses membres

    L'intérêt principal de la factory étant de centraliser la construction effective d'objets, pour découpler les composants.

  10. #10
    Membre expérimenté Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Par défaut
    Merci les gars pour toutes vos réponses, j'ai bien saisie la différence maintenant.

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

Discussions similaires

  1. probleme avec une methode static dans le body d'une jsp
    Par amadou.deme dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 19/02/2007, 08h47
  2. methode static interface
    Par samtheh dans le forum Langage
    Réponses: 3
    Dernier message: 15/10/2006, 19h25
  3. Classe interne, methode static et ajout de boutons
    Par comme de bien entendu dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 09/03/2006, 14h13
  4. Réponses: 13
    Dernier message: 15/11/2005, 15h47
  5. [Concept]Methode "static"
    Par Regis.C dans le forum Général Java
    Réponses: 5
    Dernier message: 04/01/2005, 10h10

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