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 :

assignation d'un objet à un objet hérité.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Isher
    Invité(e)
    Par défaut assignation d'un objet à un objet hérité.
    Bonjour,

    J'ai une classe Client héritée d'une classe Personne. J'instancie un objet Personne avec lequel je travaille. Ses propriétés sont ainsi mise à jour. Dans un second traitement, j'aimerais assigner cet objet Personne à un objet Client. En fait instancier un objet Client en récupérant toutes les propriétés de Personne.

    J'aimerais éviter d'ecrire un constructeur dédié ds lequel je recopie toutes les propriétés communes. Est-ce possible?

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    si client hérite de personne, pourquoi ne pas travailler directement avec une instanciation de client... Les fonctions qui travaillent sur une classe personne fonctionneront parfaitement bien puisque que Client est une personne

    Par contre, si tu veux créer un client récupérant les données d'une personne, tu ne peux que créer un constructeur de type

    public Client(Personne p)

    et ensuite, faire de la copie ou du memberwiseClone peut-etre

  3. #3
    Isher
    Invité(e)
    Par défaut
    Oui, j'ai bien pensé à utiliser la classe Client mais elle n'est pas visible par le pool de classes qui contient Personne et interagissent avec elle.

    je vais créer le constructeur adéquat, je pensais qu'il y avait plus simple puisqu'une classe hérite de l'autre.

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    ok

    cela dit, plutot que de passer par l'héritage, tu aurais pu passer par l'interface
    (genre, Personne implémente l'Interface IPersonne) et comme client dérive
    de Personne, tu aurais pu passer un IPersonne (et passer ton client) dans les classes ne voyant pas la classe client

    C'est un cas ou l'utilisation des interfaces est pratique dans le sens ou des classes extérieurs savent travailler sur des classes à partir du moment ou elles implémentent une certaines interface et donc pratique surtout quand les objets passés peuvent etre d'un type non connu des classes effectuant le traitement

  5. #5
    Isher
    Invité(e)
    Par défaut
    merci, je ne maitrise pas tres bien les interfaces exceptées celles déjà implémentées, mais je crois qu'elles méritent que je m'y intéresse de plus près.

    Je vais jeter un oeil.

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    ok

    pour les interfaces, pensent que ca peut etre "comparable" à des classes virtuelles pures...

    L'idée des interfaces est que une classe qui implémente une interface, te GARANTI que les méthodes de cette interface sont implémentées.

    Donc, l'usage des interfaces est super pratique pour la définition de plug-in par exemple.... l'idée étant de passer un contrat.. une classe accepte se contrat en héritant d'une interface

    C'est pour cela que je te conseille de regarder dans cette direction car par rapport à ton problème, l'utilisation d'interface me semble plus que conseillé et au final, très simple à mettre en oeuvre

    Pour info, il est possible d'extraire une interface depuis une classe (avec les outils fournis par Visual Studio..

    (avec Refactor, tu vas dans une classe dont tu veux extraire l'interface et tu selectionnes le bon item du menu contextuel refactor (extract Interface dans ma version anglais) et basta le tour est joué !!!

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

Discussions similaires

  1. Tableau mélangé entre objets et objets hérités
    Par Christophe Genolini dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/07/2013, 15h40
  2. Assigner une fonction a un objet creer dynamiquement?
    Par Draleg dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/08/2008, 10h48
  3. [POO] Ajouter des objets à un objet
    Par poussinphp dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2008, 21h41
  4. [POO] Accès objet depuis objet
    Par speedev dans le forum Langage
    Réponses: 2
    Dernier message: 19/06/2007, 17h28
  5. Partage d'objet entre objet
    Par oxor3 dans le forum CORBA
    Réponses: 1
    Dernier message: 08/09/2006, 22h00

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