méthodes statiques c#
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

méthodes statiques c#



  1. #1
    221

    méthodes statiques c#


    ------

    bonjour a tous,

    actuellement je suis sur les lignes de code suivantes qui représentent une classe gérant le comportement d un monstre .

    Code:
    public class MonstreFacile
    {
        private const int degats = 10;
        protected De de;
        public bool EstVivant { get; private set; }
     
        public MonstreFacile()
        {
            de = new De();
            EstVivant = true;
        }
     
        public virtual void Attaque(Joueur joueur)
        {
            int lanceMonstre = LanceLeDe();
            int lanceJoueur = joueur.LanceLeDe();
            if (lanceMonstre > lanceJoueur)
                joueur.SubitDegats(degats);
        }
     
        public void SubitDegats()
        {
            EstVivant = false;
        }
         
        public int LanceLeDe()
        {
            return de.LanceLeDe();
        }
    }
    il faut préciser que la méthode LanceLeDe de l objet dé a eté définie dans la classe "De" qu encapsule notre classe monstrefacile.

    ma question: dans la méthode attaque on peut constater dans la première ligne que la méthode LanceLeDe(de la classe monstrefacile ) a été affecté a la variable int lanceMonstre alors que cette méthode n est pas indiquée statique(même si elle a tout pour l être vu qu elle n utilise pas de variable de sa classe ni dans les params ni dans son corps dailleur),et que par définition il faut passe par un objet de sa classe pour l invoquer non?

    a moins qu il soit permis a l'intérieur de la classe d'invoquer une méthode de la classe même sans instanciation d objet ?



    en vous remerciant!

    pour de plus amples informations sur le code en globalité https://openclassrooms.com/courses/p...-oriente-objet

    -----

  2. #2
    Jack
    Modérateur

    Re : méthodes statiques c#

    a moins qu il soit permis a l'intérieur de la classe d'invoquer une méthode de la classe même sans instanciation d objet ?
    Je ne suis pas très compétent en C#, mais plutôt en C++. Cependant les mécanismes d'encapsulation de la programmation objet restent les mêmes je pense. Au même titre qu'une variable (attribut) déclarée dans la classe est accessible partout au sein de la classe, il en est de même pour les méthodes

    Une méthode de classe a besoin d'être déclarée statique pour pouvoir être utilisée sans instanciation en dehors de la classe

    A+

  3. #3
    221

    Re : méthodes statiques c#

    merci pour ta réponse jack c est beaucoup plus clair,

    une autre question ,la classe De a été encapsulé dans plusieurs autre classes , une classe peut être encapsulée dans plusieurs autre classe a la fois?

    la classe joueur et la classe monstre facile encapsulent toute les deux la classe De:

    Code:
    public class MonstreFacile
    {
        private const int degats = 10;
        protected De de;//encapsulation
        public bool EstVivant { get; private set; }
    ...............
    ..........
    }
    dans la classe joueur:

    Code:
    public class Joueur
    {
        private De de;//encapsulation
        public int PtsDeVies { get; private set; }
        public bool EstVivant
        {
            get { return PtsDeVies > 0; }
        }
    .............
    ......
    }
    merci.

  4. #4
    221

    Re : méthodes statiques c#

    merci pour ta réponse jack c est beaucoup plus clair,

    une autre question ,la classe De a été encapsulé dans plusieurs autre classes , une classe peut être encapsulée dans plusieurs autre classe a la fois?

    la classe joueur et la classe monstre facile encapsulent toute les deux la classe De:

    Code:
    public class MonstreFacile
    {
        private const int degats = 10;
        protected De de;//encapsulation
        public bool EstVivant { get; private set; }
    ...............
    ..........
    }
    dans la classe joueur:

    Code:
    public class Joueur
    {
        private De de;//encapsulation
        public int PtsDeVies { get; private set; }
        public bool EstVivant
        {
            get { return PtsDeVies > 0; }
        }
    .............
    ......
    }
    merci.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : méthodes statiques c#

    Il faudrait au préalable définir le terme encapsulation. Pour moi ce terme correspond à déclarer des membres comme privés dans une classe, afin de ne pas les rendre visibles de l'extérieur.

    Or tu parle d'encapsulation d'une classe dans une autre, ce qui n'est pas le cas ici: la classe De n'est pas encapsulée dans la classe Joueur par exemple. La classe joueur possède un membre privé qui est une instance de la classe De, ce qui n'est pas du tout la même chose.

    Il n'y a pas de problème à mettre des membre d'une autre classe dans une classe. La preuve, mettre des membres de type int ne te pose pas de problème. Et pourtant, si mes souvenirs sont bons, tout est objet en C#, donc un int aussi.

Discussions similaires

  1. contacteurs statiques
    Par inviteb5a95b47 dans le forum Électronique
    Réponses: 3
    Dernier message: 22/12/2014, 15h01
  2. relais statiques
    Par inviteb5a95b47 dans le forum Électronique
    Réponses: 27
    Dernier message: 18/12/2014, 15h07
  3. relais statiques
    Par invite01e66207 dans le forum Électronique
    Réponses: 18
    Dernier message: 06/06/2014, 14h04
  4. Torseurs statiques
    Par invite54ae9c79 dans le forum Physique
    Réponses: 1
    Dernier message: 01/05/2011, 16h57
  5. Torseurs statiques
    Par invite1558f76a dans le forum Physique
    Réponses: 6
    Dernier message: 06/09/2007, 09h07