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

Collection et Stream Java Discussion :

Parcours d'un tableau avec plusieurs objets


Sujet :

Collection et Stream Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Parcours d'un tableau avec plusieurs objets
    Bonjour à tous !

    Je rencontre actuellement un léger soucis, sûrement tout bête.
    Je suis en train de créer un programme où j'ai une table d'Articles.

    J'ai une classe Article, ainsi qu'une classe ArticlePromo qui hérite de article pour les articles qui sont proposées en promotion.

    La table d'articles est dans une hashtable.

    Dans la table d'articles je veux créer une fonction qui parcourt la hashtable et qui n'affiche que les articles en promotion.

    Ca donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public String articlesPromo(){
    		Enumeration<Article> em = tabArt.elements();
    		String st = "LISTE DES ARTICLES en PROMO\n\n";
    		while(em.hasMoreElements()){
    			Article a = em.nextElement();
    			if(a.enPromo()){
    				st = st + a.toString() + "\n";
    			}
    		}
    		return st;
    	}
    En fait pour le moment j'ai créé une fonction dans les 2 classes (enPromo()) qui m'indique si je traite un Article ou un ArticlePromo (la fonction toString est présente dans les 2 classes et légèrement différente).
    Mais le but de l'héritage c'est de ne pas avoir à rajouter de méthode dans la classe mère.

    Il y a plus simple ?

    Merci pour votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Avec instanceof.

    Mais d'un point de vue conception, qu'est-ce que tu as de plus dans ton ArticleEnPromo ?

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Exactement. A priori il vaudrait mieux n'avoir qu'une seule classe, Article, avec sa méthode isEnPromo().

    Si un article en promo doit faire des choses très différentes d'un article normal (ça m'étonnerait, il me semble qu'il devrait juste dire qu'il est en promo, et que ce sont d'autres choses qui le traitent différemment,) ... S'il doit faire des choses différentes, donc, là une sous-classe ArticleEnPromo devient utile (et du coup ça a du sens d'utiliser instanceof au lieu d'une méthode isEnPromo().)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses.

    Alors en fait il s'agit d'un projet à rendre et ce sont les consignes, mais effectivement je trouve que c'est pas pertinent ici d'introduire une classe fille.

    En fait l'article promo a pas le même toString (il y a un rajout), a 2 variables en plus, quantite minimum et montant de la promo.

    Il faut en acheter une certaine quantité pour que la promo s'applique.

    Il y a donc une fonction prixFacture(int i) en fonction de la quantité commandée i, comme la classe mère, mais différente puisqu'elle prend en compte les nouveaux paramètres.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Oui, bon, si c'est un exercice on y peut pas grand-chose.

    Ça arrive souvent, avec les exercices sur l'héritage, qu'ils illustrent les règles. Mais qu'ils ne montrent aucun intérêt à s'en servir.

    Je verrais mieux une seule classe Article, une classe Promotion, et la méthode Article.getPromotion() qui renvoie null s'il n'y a pas de promotion, et un objet indiqué la quantité et le montant s'il y en a une.

    La classe Article ne devrait pas se charger elle-même des calculs de facture.

    (Autre possibilité : mapping 1-1 entre la classe Article, qui deviendra donc ce qu'on appelle un "entity bean" et la table SQL qui permet de stocker un article. Donc un booléen isEnPromo(), et des méthodes getQuantiteMin() et getMontant() à appeler si la précédente renvoie true. Moins élégant mais plus vite fait.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Merci pour la réponse j'avais donc pas trop le choix.

    J'ai créé une méthode dans les 2 classes du coup, getQtitemin(), qui retourne 0 dans la classe mère et la variable quantitemin dans la classe fille, qui doit être au moins égalé à 1.

Discussions similaires

  1. Un tableau avec plusieurs clef de même valeurs
    Par singleProject dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 15/10/2008, 11h54
  2. [Tableaux] Filtrer le parcours d'un tableau avec foreach
    Par Hotfirenet dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2008, 12h34
  3. Tableau avec plusieurs champs
    Par lido dans le forum Forms
    Réponses: 9
    Dernier message: 04/02/2008, 13h10
  4. "Tableau" avec plusieurs types de variables
    Par izguit dans le forum C++
    Réponses: 4
    Dernier message: 19/07/2007, 12h24
  5. Réponses: 3
    Dernier message: 29/03/2007, 13h39

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