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 :

[POO] Forcer un objet a être une propriété d'un autre?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut [POO] Forcer un objet a être une propriété d'un autre?
    Hello!

    Donc voilà, j'ai un petit problème de disons... analyse, et je m'y butte depuis quelques instants sans trop savoir par où commencer mes recherches.

    Je vais y aller avec un exemple plus imagé que ce que j'ai a appliquer, c'est une histoire de logique et de principe donc je pense que l'essentiel devrait y être.

    J'ai disons une classe "Voiture"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class _Voiture 
    {
    int annee;
    string modele;
    List<_Pneu> pneus;
    ....
    }
    et la classe "Pneu"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class _Pneu
    {
    double diametre;
    double largeur;
    ...
    }
    Jusque là tout va bien, je peux ajouter un ou des pneus a ma voiture sans problème.

    Sauf que je voudrais forcé un pneu a appartenir a une voiture, un pneu seul ne voudrais rien dire dans le cadre du programme.

    Le tout dans l'optique d'arrivé a écrire une fonction dans ma classe pneu qui pourrait se servir d'une autre propriété de la voiture, disons un truc comme;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public double getUsure()
    {
    return (voitureparent.Kilometrage * this.UsureParKilo)
    }
    quelqu'un a une idée de quel côté ou quelques mots clés pour orienté mes recherches sur quelque chose du genre?


    Amuny,

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    L'idée de placer GetUsure dans la classe Pneu n'est peut-être pas une bonne idée, il suffirait de la placer dans la classe Voiture pour résoudre ton problème étant donné que voiture à déjà une propriété de pneus

    Si tu veux garder GetUsure dans la classe Pneu alors il faudrait passer au constructeur de ton Pneu la voiture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class Pneu
    {
       private Voiture voitureparent;
       public Pneu(Voiture voiture) { voitureparent = voiture ;}
     
       public double getUsure()
       {
          return (voitureparent.Kilometrage * this.UsureParKilo)
       }
    }

    Je me pose quand même la question (par rapport au grasp pattern Expert) où serait le bon endroit de placer cette méthode (pourquoi pas une classe OrdinateurDeBord ?)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    pour passé une voiture en propriété au pneu... oui mais non... ce serai beaucoup trop lourd

    mettre la fonction ailleurs, j'y ai pensé, mais je me retrouve avec le même problème; je dois toujours spécifié quel pneu de la voiture je veux, alors que c'est une fonction qui ne sera utilisé QUE sur un pneu.

    Dans le pire des cas c'est ce que je ferais (mettre la fonction dans voiture et passé en paramètre un pneu), mais ca me titille un peu et je me demande vraiment s'il y a pas une trace a quelque part qui dit dans le pneu "hop moi j'appartient a cette voiture" j'aimerais bien pouvoir faire pneu.getUsure

  4. #4
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par Amuny Voir le message
    pour passé une voiture en propriété au pneu... oui mais non... ce serai beaucoup trop lourd
    Euh et pourquoi ?

    Citation Envoyé par Amuny Voir le message
    mais ca me titille un peu et je me demande vraiment s'il y a pas une trace a quelque part qui dit dans le pneu "hop moi j'appartient a cette voiture" j'aimerais bien pouvoir faire pneu.getUsure
    Qui crée les objets pneus ? Qui crée les objets voiture ? Il n'y a pas de magie en POO. Les pneus qui appartiennent à la voiture c'est ta propriété List dans la classe voiture. Donc autant mettre la méthode dans voiture avec comme paramètre un pneu

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    Citation Envoyé par hegros Voir le message
    Euh et pourquoi ?
    car ca voudrais dire que pour un truc a 10 roues, j'aurai en mémoire dix fois toute les propriétés de la même voiture
    et comme le kilo change souvent, faudrais aller rechanger le kilo de la propriété voiture de tout les pneus a chaque fois...

    Citation Envoyé par hegros Voir le message
    Qui crée les objets pneus ? Qui crée les objets voiture ? Il n'y a pas de magie en POO. Les pneus qui appartiennent à la voiture c'est ta propriété List dans la classe voiture.
    Exact. Mon point, c'est de savoir comment récupéré son "créateur" et ses propriétés qui viennent avec. Ce sera toujours une voiture qui aura des pneus, et du coup je me demande si il y a moyen de faire référence a son "maître" et d'avoir accès a ses informations en partant a l'envers

  6. #6
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par Amuny Voir le message
    car ca voudrais dire que pour un truc a 10 roues, j'aurai en mémoire dix fois toute les propriétés de la même voiture
    Beh non c'est une référence ce n'est pas une copie d'objet champs à champs.

    Citation Envoyé par Amuny Voir le message
    et comme le kilo change souvent, faudrais aller rechanger le kilo de la propriété voiture de tout les pneus a chaque fois...
    Beh non c'est une référence vers une voiture ce n'est pas une simple copie.


    Citation Envoyé par Amuny Voir le message
    Exact. Mon point, c'est de savoir comment récupéré son "créateur" et ses propriétés qui viennent avec. Ce sera toujours une voiture qui aura des pneus, et du coup je me demande si il y a moyen de faire référence a son "maître" et d'avoir accès a ses informations en partant a l'envers
    Cela ne réponds pas à mes questions : qui crée les objets voitures et qui crée les objets pneus ? (réfléchissez y bien car c'est aussi un grasp pattern => créateur)

  7. #7
    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 : 47
    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
    Le kilométrage parcouru pour ton calcul d'usure ce n'est pas le kilométrage de la voiture mais celui du pneu qui devrait être utilisé, question de logique. Un pneu ça se change après tout, à moins que ce soit plus simpliste pour ce que tu fais.

    Auquel cas, le pneu a son kilométrage parcouru et résultat plus de souci pour le calcul puisque tout est sur le pneu. Pour moi ce serait ainsi qu'il faudrait procéder.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/04/2013, 21h20
  2. Réponses: 2
    Dernier message: 24/04/2009, 11h45
  3. [POO] parcourir un objet json avec une boucle for in
    Par bucheron007 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 19/01/2009, 12h55
  4. [POO] Sérialiser un objet PDO dans une classe
    Par __fabrice dans le forum Langage
    Réponses: 9
    Dernier message: 15/09/2008, 22h30
  5. [POO] Tableau d'objets B dans une instance de class A
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 24/05/2006, 09h52

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