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

avec Java Discussion :

Les classes! un casse tête


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut Les classes! un casse tête
    Bonjour, je débute sur Java et je souhaite vous poser une question :

    Je suppose que j'ai 3 classes hérités de ma classe mère (psf) de produits semi fini :

    psf1 est composé d'un métal et pétrole
    psf2 est compose de deux métaux
    psf3 est composé d'un métal et d'un liquide
    etc
    au total j'ai 8 classes de produits semi fini basé soit sur métal ou pétrole ou liquide ou ....

    jusqu'à là ca va!

    mais dans le cas où je veux déclarer des nouveaux produits semi fini (pssf) composés des produits semi fini(psf) que j'ai composé plus haut. comment faut il faire?
    au lieu de mettre toutes les combinaison possible, est ce qu'il est possible de dire à java que les classes psf1...psf8(avec chacune sa caractéristique) font partie d'une même classe.

    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    commencez par nous donnez votre code actuel, on y verra plus clair et on pourra vous dégager de là

    Dans l'absolu, je dirais que vous avez besoin de deux classes

    une classe Composant (on y trouve le liquide, le métal, etc)
    une classe ProduitSemiFini, qui hérite de Produit et est composé de plusieurs produits:


    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
    public class Composant {
       public Composant(String name){....}
       // méthodes de chaque produit
    }
     
    public class ProduitSemiFini extends Composant {
       private List<Composant> contenu = new ArrayList<Composant>();
     
       public ProduitSemiFini(String name, Composant... composants){
           super(name);
           for (Composant c : composants) contenu.add(c);
       }
    }
     
    Composant fer = new Composant("fer");
    Composant carbone = new Composant("Carbone");
    ProduitSemiFini acier = new ProduitSemiFini("acier",fer,carbone);
    ProduitSemiFini cable = new ProduitSemiFini("cable",acier,new Composant("plastique"));

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    commencez par nous donnez votre code actuel, on y verra plus clair et on pourra vous dégager de là

    Dans l'absolu, je dirais que vous avez besoin de deux classes

    une classe Composant (on y trouve le liquide, le métal, etc)
    une classe ProduitSemiFini, qui hérite de Produit et est composé de plusieurs produits:


    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
    public class Composant {
       public Composant(String name){....}
       // méthodes de chaque produit
    }
     
    public class ProduitSemiFini extends Composant {
       private List<Composant> contenu = new ArrayList<Composant>();
     
       public ProduitSemiFini(String name, Composant... composants){
           super(name);
           for (Composant c : composants) contenu.add(c);
       }
    }
     
    Composant fer = new Composant("fer");
    Composant carbone = new Composant("Carbone");
    ProduitSemiFini acier = new ProduitSemiFini("acier",fer,carbone);
    ProduitSemiFini cable = new ProduitSemiFini("cable",acier,new Composant("plastique"));
    Bonsoir et merci

    C'est exactement cela que je voulais avoir! et en si peu de temps!
    J'ai quand même pls question :
    Pourquoi List est décalrée en Private, nous pouvons la déclarer en protected, ca ne cause pas de problèmes!
    Dans votre exemple, les composantes sont en réalité au nombre de 3, mais est ce que je peux faire cela :
    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
    public class Composant {
       public Composant(String name){....}
       // méthodes de chaque produit
    }
    
    public class ProduitSemiFini extends Composant {
       private List<Composant> contenu = new ArrayList<Composant>();
    
       public ProduitSemiFini(String name, Composant... composants){
           super(name);
           for (Composant c : composants) contenu.add(c);
       }
    }
    
    Composant fer = new Composant("fer");
    Composant carbone = new Composant("Carbone");
    Composant essence= new Composant("essence");
    ProduitSemiFini acier = new ProduitSemiFini("acier",fer,carbone,essence);
    ProduitSemiFini cable = new ProduitSemiFini("cable",acier,new Composant("plastique"));
    [/QUOTE]

    Avoir donc une classe modifiable ou bien il faut créer une nouvelle classe.

    je vais essayer ce code et je vous remercie

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par georgeslb Voir le message
    Pourquoi List est décalrée en Private, nous pouvons la déclarer en protected, ca ne cause pas de problèmes!
    L'habitude. A moins d'avoir une bonne raison de faire autrement, je met toujours mes membres en private par défaut.

    Dans votre exemple, les composantes sont en réalité au nombre de 3
    Non, 2 plus le nom :p
    , mais est ce que je peux faire cela :
    Oui, c'est pour ca que le constructeur accepte un nombre variable de "Composant"

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    L'habitude. A moins d'avoir une bonne raison de faire autrement, je met toujours mes membres en private par défaut.


    Non, 2 plus le nom :p

    Oui, c'est pour ca que le constructeur accepte un nombre variable de "Composant"
    Merci tchize

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    L'habitude. A moins d'avoir une bonne raison de faire autrement, je met toujours mes membres en private par défaut.


    Non, 2 plus le nom :p

    Oui, c'est pour ca que le constructeur accepte un nombre variable de "Composant"
    Merci tchize

    J'ai une autre question :

    si maintenant je souhaite ajouter des ratios. par exemple :
    public class Composant {
    public Composant(String name){....}
    // méthodes de chaque produit
    }

    public class ProduitSemiFini extends Composant {
    private List<Composant> contenu = new ArrayList<Composant>();

    public ProduitSemiFini(String name, Composant... composants){
    super(name);
    for (Composant c : composants) contenu.add(c);
    }
    }

    Composant fer = new Composant("fer");
    Composant carbone = new Composant("Carbone");
    ProduitSemiFini acier = new ProduitSemiFini("acier",0.3,fer,0.4,carbone);
    Comment est ce que je pourrais faire

    Merci

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    dans ce cas tu évite de passer par le constructeur, ca va devenir le bordel. Tu crée ton produit "vide" et tu crée une méthode "addComposant" pour ajouter ton composant. Maintenant que t'as le principe, tu met ce que tu veux comme méthodes et contenu dans tes classes hein

Discussions similaires

  1. Conception d'une classe : casse-tête
    Par Tomaka17 dans le forum C++
    Réponses: 9
    Dernier message: 22/03/2009, 17h09
  2. Réponses: 1
    Dernier message: 10/03/2009, 17h05
  3. [XSL~FO] pour les amateurs de casse tête.
    Par lilian300703 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/12/2007, 12h10
  4. casse-tête sur les adresses (classe C et A)
    Par HuZimA dans le forum Protocoles
    Réponses: 7
    Dernier message: 27/07/2006, 13h05
  5. Classe, pile, pointeurs et casse-tête!
    Par zazaraignée dans le forum Langage
    Réponses: 6
    Dernier message: 26/09/2005, 16h57

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