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 :

Un objet dans un objet


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Par défaut Un objet dans un objet
    Bonjour à tous,

    Je vous préviens tout de suite, je commence tout juste le C# et venant de php, j'ai de très grosse difficulté. :/

    J'essaye d'obtenir quelque chose d'assez simple en php, mais que je n'arrive tout simplement pas ici...

    En gros, j'isntancie un objet que l'on nommera Objet1 et j'aimerais lier un deuxième objet à ce premier de telle sorte que je puisse interagir à partir du premier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Objet1.Objet2.Rename = "xxx";
    (par exemple)

    J'ai tenté d'instancier l'Objet2 dans le constructeur du premier, mais sans résultat.

    Pourriez vous m'aider?

    cdlt,

    Sulfa

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je pense que que t'as de sérieux problèmes de POO, normal vu que tu viens de PHP.

    Bon un bon cours de POO ici.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Par défaut
    Bah disons, que je connais les bases, j'ai pas vraiment de soucis en php parce que c'est très permissif.

    Mais si je m'attaque au sharp, c'est suite à un cours de POO sur sharp, donc il est certain que je vais me taper de la doc, mais j'aurai juste aimé avancer sur ce point précis.

    Est-ce que tu sous entendrais qu'il n'est pas possible de faire ce que je voudrais?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SulfaTueuR Voir le message
    Bah disons, que je connais les bases, j'ai pas vraiment de soucis en php parce que c'est très permissif.

    Mais si je m'attaque au sharp, c'est suite à un cours de POO sur sharp, donc il est certain que je vais me taper de la doc, mais j'aurai juste aimé avancer sur ce point précis.

    Est-ce que tu sous entendrais qu'il n'est pas possible de faire ce que je voudrais?
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class TypeObjetUn
        {
            public TypeObjetDeux monObjetDeux { get; set; }
        }
     
        public class TypeObjetDeux
        {
            public string RenameTo { get; set; }
        }
    Utilisation :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    TypeObjetUn objet1 = new TypeObjetUn();
    objet1.monObjetDeux = new TypeObjetDeux();
     
    objet1.monObjetDeux.RenameTo = "xxx";

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Par défaut
    Perfect! C'est exactement ce que je cherchais!

    Merci docteur pour le cours et la réponse!

    Edit : est-ce que cette technique porte un nom?

  6. #6
    Invité
    Invité(e)
    Par défaut
    ça s'appelle Injection de dépendance.

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Je m'excuse, mais je ne suis pas du tout sûr que c'est de l'injection de dépendance ici. L'injection de dépendance permet (pour faire simple) de supprimer la dépendance entre deux objets en passant par exemple par une interface.

    Exemple d'injection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    public class A {
       public I ObjetB { get; set; }
    }
     
    public interface I {
       string Name { get; }
       void Rename(string t);
    }
     
    public class B : I {
       private string name;
       public string Name { get { return name; } }
       public void Rename(string t) { name = t; } }
    }
     
    public class Program {
     
       public static void Main() {
           A = new A();
           A.ObjectB = new B();
           A.ObjectB.Rename("nouveau nom");
       }
     
    }
    Ici on n'a aucune dépendance entre A et B et pourtant ObjectB retourne bien un objet de type B via l'interface I, d'où l'injection de dépendance.

    Il n'y a pas de nom spécifique à la méthode citée en fait puisque c'est le principe fondamental de la POO...

  8. #8
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Pas d'injection de dépendance effectivement, juste de la composition d'objets

  9. #9
    Invité
    Invité(e)
    Par défaut
    d'abords pour vos réactions. mais Wikipedia, je cite :

    En programmation objet, les objets de type A dépendent d'un objet de type B si au moins une des conditions suivantes est vérifiée :
    • A possède un attribut de type B (dépendance par composition) ;
    • A est de type B (dépendance par héritage) ;
    • A dépend d'un autre objet de type C qui dépend d'un objet de type B (dépendance par transitivité) ;
    • une méthode de A appelle une méthode de B.
    Si vous lisez bien le deuxième point vous verrez que mon exemple vérifie bien le premier point à savoir : A possède un attribut de type B (dépendance par composition).

    D'après StormimOn :
    Pas d'injection de dépendance effectivement, juste de la composition d'objets
    Tu te contredis là. S'il y a composition alors y a dépendance.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Pour répondre à kaidan. L'exemple de code que t'as fournit n'est pas de l'injection de dépendances mais il permet juste de supprimer la dépendance entre deux objet donc à éviter l'injection de dépendances.
    Toujours extrait à partir du lien wikipedia que j'ai fourni :
    Pour supprimer la dépendance, un moyen possible consiste à
    • créer une interface I qui contiendra toutes les méthodes que A peut appeler sur B,
    • indiquer que B implémente l'interface I,
    • remplacer toutes les références au type B par des références à l'interface I dans A.

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Pour répondre à kaidan. L'exemple de code que t'as fournit n'est pas de l'injection de dépendances mais il permet juste de supprimer la dépendance entre deux objet donc à éviter l'injection de dépendances.
    Toujours extrait à partir du lien wikipedia que j'ai fourni :
    Pour citer une nouvelle fois Wikipédia :

    par modificateur : on passe l'objet b à une méthode de A qui va par exemple modifier un attribut (setter)
    Mon exemple est simple parce que j'ai mis l'instanciation de l'objet de type B : I et son affectation sur la même ligne. On remarque pourtant que l'objet de type A ne sait pas comment est instancié l'objet de type B et qu'une fois cet objet instancié, il est bien injecté dans l'objet de type A via un setter.Pour moi il y a bien injection de dépendance.

    Dans ton exemple, on connaît à l'avance la dépendance entre A et B.

  12. #12
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Tu te contredis là. S'il y a composition alors y a dépendance.
    Je ne vois pas en quoi je me contredis, j'ai juste dit que ce n'était pas de l'injection de dépendance mais de la composition d'objets. Je n'ai jamais dit qu'il n'y avait pas de dépendance.

    L'exemple de Kaidan montre l'injection de dépendance via une propriété (on peut le faire sur le contructeur aussi). Après on peut utiliser un framework, comme Spring .Net, afin de configurer l'injection via des fichiers XML. L'instanciation des objets sera réalisée par Spring et non plus par le développeur.

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

Discussions similaires

  1. [XML] Lire un OBJET dans un OBJET dans un ARRAY
    Par Irokoi dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 24/05/2013, 14h53
  2. [POO] Réassigner objet, dans l'objet
    Par Evocatii dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2008, 19h35
  3. Réponses: 2
    Dernier message: 20/06/2007, 12h12
  4. Créer un objet dans un objet
    Par poussinphp dans le forum C++
    Réponses: 6
    Dernier message: 10/07/2006, 15h18
  5. objet dans un objet
    Par adri_thi dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2006, 17h52

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