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

Diagrammes de Classes Discussion :

[DC] [débutante] Validité de mon diagramme de classe


Sujet :

Diagrammes de Classes

  1. #21
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    classe abstraite IRepas
    {
    	publique CalculerApport()
    		{
    			???
    			//comment peut-elle accéder aux propriétés de ces filles? u_u
    			//je pense donc à une simple déclaration puis une redéfinition dans les
    			//classes filles
    		}
    }
    oui, cette classe est abstraite et n'a donc pas de corps (cela aurait finalement été plus pratique si tu avais mis le code en Java )
    l'opération est définie dans les classes filles, ce qui n'est pas le cas actuellement

    Seulement, je ne vois plus où renseigner les quantités de l'aliments... Quantités ingérées par la personne.
    souviens toi, dans ton premier schéma il y avait la class association Constituer, il faut que tu l'implémentes

  2. #22
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Oui mais cette classe association est désormais reliée à IRepas ou à Plat?

    Pour le code Java...
    Je m'y met de suite mais ce n'est pas beaucoup différent
    Et puis je ne pensais pas pouvoir en mettre puisque nous sommes dans un forum pour les diagramme de classe

  3. #23
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Oui mais cette classe association est désormais reliée à IRepas ou à Plat?
    à IRepas, sinon tu ne pourras pas calculer le nombre de calories, sauf si tu supposes par exemple que tu manges le plat en entier ... ce qui est peu probable

    Et puis je ne pensais pas pouvoir en mettre puisque nous sommes dans un forum pour les diagramme de classe
    oui et non
    diagramme de classe == définition de classe, ce qui a priori comprend les opérations
    par contre il est inutile de donner les getters, leur définition de pose par de problème, pas plus que les constructeurs sauf si tu as de vrais questions à leur sujet. Tout cela pour dire qu'il te suffit de donner la liste des opérations importantes par exemple via un diagramme, et de ne donner le corps que des parties 'intéressantes'

  4. #24
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Voilà j'ai finit l'implementation Java... Avec le niveau de nouvelle en ce langage...
    Ne vous arrachez pas les cheveux devant mon incompétence, j'apprends vite

    Voici mes classes java, archive zip et code détaillé (netbeans me sort des erreurs... donc tout le code est présent, désolée -erreurs non présentes avant avoir mit "l'interface"-)
    Pièce jointe 30296

    classe Famille
    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
    27
    28
    29
    30
    31
    32
    33
    package nutrical;
    
    //Appel de la classe ArrayList
    import java.util.ArrayList;
    
    public class Famille{
    //Proprietes
        
    	private String nomFamille;
    	private ArrayList<Aliment> sesAliments;
    //Constructeur
            
    	public Famille(String unNomFamille){
    		this.nomFamille = unNomFamille;
    	}
    //Accesseur
            
    	public String getNomFamille(){
    		return this.nomFamille;
    	}
    	public ArrayList<Aliment> getCesAliments(){
    		return this.sesAliments;
    	}
    	public void addUnAliment(Aliment unAliment){
    		this.sesAliments.add(unAliment);
    	}
    }
    
    //Poisson
    //Viande Rouge
    //Vin
    //Produit laitier
    classe Aliment
    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
    27
    28
    29
    30
    31
    package nutrical;
    
    public class Aliment extends IRepas{
    //Proprietes
    
    	private String nomAliment;
    	private int nombreCaloriesPour100g;
    	private Famille saFamille;
    //Constructeur
    
    	public Aliment(String unNomAliment, int unNombreCaloriesPour100g, Famille uneFamille){
    		this.nomAliment = unNomAliment;
    		this.nombreCaloriesPour100g = unNombreCaloriesPour100g;
    		this.saFamille = uneFamille;
    	}
    //Accesseur
    
    	public String getNomAliment(){
    		return this.nomAliment;
    	}
    	public int getNombreCaloriesPour100g(){
    		return this.nombreCaloriesPour100g;
    	}
    	public Famille getSaFamille(){
    		return this.saFamille;
    	}
    }
    
    // tomate 20 Fruit
    // pomme de terre 90 Legume
    classe Constituer
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package nutrical;
    
    public class Constituer{
    //Proprietes
    
        private IRepas sonIRepas;
        private Aliment sonAliment;
        private int quantiteAliment;
    //Constructeur
        
        public Constituer(IRepas unIRepas, Aliment unAliment, int quantiteAliment){
            this.sonIRepas = unIRepas;
            this.sonAliment = unAliment;
            this.quantiteAliment = quantiteAliment;
        }
    //Accesseur
        
        public IRepas getUnIRepas(){
            return this.sonIRepas;
        }
        public Aliment getUnAliment(){
            return this.sonAliment;
        }
        public int getQuantiteAliment(){
            return this.quantiteAliment;
        }
        public int calculerCalories(){
            return (this.quantiteAliment * sonAliment.getNombreCaloriesPour100g());
        }
    }
    
    // unPlat tomate 300
    //unPlat pomme de terre 200
    //unAutrePlat tomate 50
    classe Plat
    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
    27
    package nutrical;
    
    //Appel de la classe ArrayList
    import java.util.ArrayList;
    
    public class Plat extends IRepas{
    //Proprietes
    
    	private Type sonType;
        private ArrayList<Constituer> sesConstitutions = new ArrayList<Constituer>();
    //Constructeur	
    
    	public Plat(Type unType){
    		this.sonType = unType;
    	}
    //Accesseur
        
        public void addUneConstitution(Constituer uneConstitution){
            this.sesConstitutions.add(uneConstitution);
        }
    	public ArrayList<Constituer> getSesConstitutions(){
            return this.sesConstitutions;
        }
    }
    
    //Plat de résistance desConstitutions
    Classe Type
    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
    27
    28
    29
    30
    package nutrical;
    
    //Appel de la classe ArrayList
    import java.util.ArrayList;
    
    public class Type{
    //Proprietes
    
        private String nom;
        private ArrayList<Plat> sesPlats;
    //Constructeur	
        
        public Type(String unType){
            this.nom = unType;
        }
    //Accesseur
    
        public String getType(){
            return this.nom;
        }
        public ArrayList<Plat> getSesPlats(){
            return this.sesPlats;
        }
    }
    
    //Entr�e unPlat
    //Plat de resistance
    //Fromage unAutrePlat
    //Dessert
    Classe Repas
    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
    package nutrical;
    
    //Appel de la classe ArrayList
    import java.util.ArrayList;
    import java.util.Date; 
    
    public class Repas {
        
        private Date saDate;
        private ArrayList<IRepas> sesIRepas = new ArrayList<IRepas>();
        
        public Date getDate(){
            return this.saDate;
        }
        public ArrayList<IRepas> getSesIRepas(){
            return this.sesIRepas;
        }
        public void addUnIRepas(IRepas unIRepas){
            this.sesIRepas.add(unIRepas);
        }
    
    }
    Classe IRepas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    package nutrical;
    
    public interface IRepas{
    //Proprietes
    
    
    //Constructeur
    
    
    //Accesseur
        
        public int calculerCalories(){}
    }
    Classe Personne
    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
    27
    28
    package nutrical;
    
    //Appel de la classe ArrayList
    import java.util.ArrayList;
    
    public class Personne{
    //Proprietes
        
    	private String nom;
    	private ArrayList<IRepas> sesIRepas;
    //Constructeur
            
    	public Personne(String unNom){
    		this.nom = unNom;
    	}
    //Accesseur
            
    	public String getNom(){
    		return this.nom;
    	}
    	public ArrayList<IRepas> getCesIRepas(){
    		return this.sesIRepas;
    	}
    	public void addUnIRepas(IRepas unIRepas){
    		this.sesIRepas.add(unIRepas);
    	}
    }

    Merci encor de prendre sur votre temps de repos pour m'aider

  5. #25
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    une interface s'implémente, donc pas exemple Aliment extends IRepas doit être remplacé par Aliment implements IRepas

    lorsque tu l'auras fait tu verras qu'il te manque des définitions de calculerCalories au niveau des classes filles

    penses-tu vraiment que faire de Famille une 'vraie' classe apporte quelque chose ? je pencherai plutôt pour une énumération, permettant par exemple de trier les aliments en catégories. Idem pour Type

    peut être serait-il utile de savoir combien une Personne à pris de calories dans un laps de temps donné ?
    getCesIRepas -> getSesIRepas, mais en fait prefixer les getters/setterspar get/set fait un peu lourd, par exemple repas serait plus sexy non ? de même un n'ajoute pas un repas, on le prend etc ...

    le constructeur de Constituer ne devrait prendre qu'un IRepas + quantité, c.a.d. pas un IRepas et un Aliment. D'ailleurs dans calculerCalories l'aliment est oublié ce qui est le signe que quelque chose ne va pas

    il va falloir revoir Main

    Bruno

  6. #26
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Waaaa j'ai commencé a lire et je me suis dit qu'il fallait tiliser la quote sinon je louperais des choses...

    Citation Envoyé par bruno_pages Voir le message
    une interface s'implémente, donc pas exemple Aliment extends IRepas doit être remplacé par Aliment implements IRepas
    Hum... Ok... wakarimasen. Je corrige

    lorsque tu l'auras fait tu verras qu'il te manque des définitions de calculerCalories au niveau des classes filles
    Je dois donc retrouver cette fonction au niveau des plats et repas cependant, ma quantité est au niveau de Aliment-Composer-IRepas

    penses-tu vraiment que faire de Famille une 'vraie' classe apporte quelque chose ? je pencherai plutôt pour une énumération, permettant par exemple de trier les aliments en catégories. Idem pour Type
    Là je suis d'accord... Mais je ne vois pas comment implémenter une liste O.O
    Effectivement, ca sert pour un tri et ce n'est rien de plus qu'un simple libelle...

    peut être serait-il utile de savoir combien une Personne à pris de calories dans un laps de temps donné ?
    getCesIRepas -> getSesIRepas, mais en fait prefixer les getters/setterspar get/set fait un peu lourd, par exemple repas serait plus sexy non ? de même un n'ajoute pas un repas, on le prend etc ...
    hum. je l'ajoute à la collection. Maintenant, c'est un point de vue de développeur. Au niveau de l'IHM, ce ne sera pas : Ajouter un repas

    le constructeur de Constituer ne devrait prendre qu'un IRepas + quantité, c.a.d. pas un IRepas et un Aliment.
    ??? Mais comment renseigner la quantité si je n'ai pas d'aliment associé???


    D'ailleurs dans calculerCalories l'aliment est oublié ce qui est le signe que quelque chose ne va pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public int calculerCalories(){
            return (this.quantiteAliment * sonAliment.getNombreCaloriesPour100g());
        }
    il va falloir revoir Main
    Entièrement d'accord

  7. #27
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    NetBeans souhaiterait que ma classe aliment soit abstract...
    de même pour Plat...
    et je ne devrais pas avoir de corps à CalculerCalories... ca veut dire juste la signature?
    juste nomMéthode+paramètres?

  8. #28
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Je dois donc retrouver cette fonction au niveau des plats et repas cependant, ma quantité est au niveau de Aliment-Composer-IRepas
    Il y a deux solutions :
    • soit Constituer se charge de la multiplication en demandant au IRepas combien il fait de calories pour 100gr
    • soit calculerCalories() prend une quantitée en argument, et un Repas n'hérite donc plus d'un IRepas (ce qui était bizarre => blague sur Hed62). Sinon si tu dois considérer qu'un repas concerne tout le monde et ensuite quand tu passes à une personne en particulier tu donnes qu'elle quantité du repas elle prend, mais cela supposerai que tout le monde prend exactement les même proportions des plats ce qui n'est jamais le cas


    tu devrais trouvé un autre nom pour IRepas

    Là je suis d'accord... Mais je ne vois pas comment implémenter une liste O.O
    wakarimasen, tu peux expliquer ton problème ?

    c'est un point de vue de développeur. Au niveau de l'IHM, ce ne sera pas : Ajouter un repas
    il n'y a pas de lien entre les messages affichés au niveau de l'IGHM et le choix du nom des classes/attribut/opérations. Rendre clair le nom des classes/etc est important, mais une fois ce but atteint c'est du domaine du gout et des couleurs

    Citation Envoyé par bruno_pages
    le constructeur de Constituer ne devrait prendre qu'un IRepas + quantité, c.a.d. pas un IRepas et un Aliment.
    ??? Mais comment renseigner la quantité si je n'ai pas d'aliment associé???
    seule la quantité de IRepas compte, il y a une instance de Constitué par instance de IRepas associée au Repas (Constitué associe des IRepas à un Repas). Tu prenais un IRepas et un aliment, ce qui ne constitue pas un Repas

    Citation Envoyé par Deallyra Voir le message
    NetBeans souhaiterait que ma classe aliment soit abstract...
    de même pour Plat...
    c'est parce que tu n'as pas défini calculerCalories() à leur niveau (cf tu verras qu'il te manque des définitions de calculerCalories au niveau des classes filles)

    Comme il n'est pas question de définir la liste des plats et aliments à chaque fois, il faut que tu les lises dans un fichier. Ce fichier peut être fabriqué via ton programme si tu mets une IHM de définition de plats, soit c'est un fichier texte fait via un éditeur texte externe.

    Il te manque aussi la persistance des repas pris avec leur constituants par une personne ... tout cela fera que ton programme ne sera pas simple et court comme tu le craignais ... et il va falloir que tu t'y mettes si tu veux finir à temps

  9. #29
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    soit Constituer se charge de la multiplication en demandant au IRepas combien il fait de calories pour 100gr
    IRepas est une classe non instanciable, enfin une interface... Ce sont les classes plat, repas et aliment qui héritent de IRepas...
    Ce n'est pas IRepas qui peut avoir à disposition leurs propriétés... donc leurs quantitéCalories


    Là je suis d'accord... Mais je ne vois pas comment implémenter une liste O.O
    wakarimasen, tu peux expliquer ton problème ?
    Et bien... Il a été question d'une liste pour les familles et type...
    Comment je dois faire si ce ne sont pas des classes? X_x

    seule la quantité de IRepas compte, il y a une instance de Constitué par instance de IRepas associée au Repas (Constitué associe des IRepas à un Repas). Tu prenais un IRepas et un aliment, ce qui ne constitue pas un Repas
    わかります (tant qu'on y est - wakarimasu-)
    Là ca me va ^^

    Par contre.... Je ne vois pas l'interêt de la méthode calculerCalorie() dans les classes filles... Si je ne peux réellement l'appeler que pour les Repas.

    Persistance = sérialisation?
    Si je fais de la persistance exclusivement sur constituer repas et personne, j'aurais des pointeurs vides dans les repas qui ne porteront sur aucun aliment sauvegardé...
    Enfin je pense

    ce que je veux dire c'est que... bien que ca ne me plaise pas du tout... Je vais me retrouver à devoir sérialiser toutes les classes...
    Très certainement un fichier par ArrayList de classe

  10. #30
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    IRepas est une classe non instanciable, enfin une interface... Ce sont les classes plat, repas et aliment qui héritent de IRepas...
    Ce n'est pas IRepas qui peut avoir à disposition leurs propriétés... donc leurs quantitéCalories
    • soit calculerCalories() prend la quantité en argument. L'appel du calcul de calculerCalories() sur Repas itère sur les Constituer et ce dernier appelle calculerCalories() sur son IRepas associé en lui donnant la quantité en arg
    • soit calculerCalories() doit être remplacé au niveau IRepas et classes filles par nbreCaloriesPar100(). L'appel du calcul de calculerCalories() sur Repas itère sur les Constituer, et Constituer fait quantité* sonIRepas.nbreCaloriesPar100()


    Et bien... Il a été question d'une liste pour les familles et type...
    Comment je dois faire si ce ne sont pas des classes? X_x
    je ne suis pas sure de bien comprendre

    ce qu'il te faut c'est une IHM pour choisir les plats et aliments constituant un repas, en indiquant la quantité associée

    • tu peux par exemple avoir un menu a deux onglets, un pour les repas et un autre pour les aiments, ou tout mettre ensemble
    • tu peux d'abord demander de choisir famille / type et ensuite montrer la liste des possibilités
    • tu peux aussi tout montrer avec plusieurs colonnes donnant nom, type/famille et en offrant la possibilité de trier à l'affichage sur nom ou type/famille

    etc ...

    tu dois d'abord décider ce que tu veux monter, ensuite il te faudra voir comment l'implémenter

    persistance = sérialisation?
    Si je fais de la persistance exclusivement sur constituer repas et personne, j'aurais des pointeurs vides dans les repas qui ne porteront sur aucun aliment sauvegardé...
    Enfin je pense

    ce que je veux dire c'est que... bien que ca ne me plaise pas du tout... Je vais me retrouver à devoir sérialiser toutes les classes...
    Très certainement un fichier par ArrayList de classe
    non, tout n'est pas sérialisé, par exemple type/famille est non sérialisé, de même pour ce qui est lié à l'IHM

    la liste des aliments/plats n'est pas forcément sérialisé, elle peut etre définie via un fichier texte externe, c'est à toi de décidé si ton IHM permet de tout définir

    par contre la liste des personnes et ce qu'elle ont mangé et dans qu'elle quantité est sérialisé, mais pas le nombre de calorie absorbé qui est calculé à la demande

  11. #31
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Merci de votre grande patience...

    Citation Envoyé par bruno_pages Voir le message
    • soit calculerCalories() prend la quantité en argument. L'appel du calcul de calculerCalories() sur Repas itère sur les Constituer et ce dernier appelle calculerCalories() sur son IRepas associé en lui donnant la quantité en arg
    • soit calculerCalories() doit être remplacé au niveau IRepas et classes filles par nbreCaloriesPar100(). L'appel du calcul de calculerCalories() sur Repas itère sur les Constituer, et Constituer fait quantité* sonIRepas.nbreCaloriesPar100()
    itérer?


    je ne suis pas sure de bien comprendre

    ce qu'il te faut c'est une IHM pour choisir les plats et aliments constituant un repas, en indiquant la quantité associée
    je suis complètement d'accord.

    • tu peux par exemple avoir un menu a deux onglets, un pour les repas et un autre pour les aiments, ou tout mettre ensemble
    • tu peux d'abord demander de choisir famille / type et ensuite montrer la liste des possibilités
    • tu peux aussi tout montrer avec plusieurs colonnes donnant nom, type/famille et en offrant la possibilité de trier à l'affichage sur nom ou type/famille

    etc ...

    tu dois d'abord décider ce que tu veux monter, ensuite il te faudra voir comment l'implémenter
    Une liste de famille d'aliment, une liste d'aliment qui est générée dynamiquement selon la famille (si possible sinon refresh -je connais pas encor les possibilités des applets-), une input pour la quantite de l'aliment, une validation et mon aliment se place dans une liste type textarea ou je ne sais trop quoi avec sa quantite et l'apport calorique calculé, ceci sera le repas.

    Un dernier bouton de soumission pour enregistrer...

  12. #32
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    itérer?
    parcourir une séquence

    ton repas est constitué d'une liste de Constituer, tu parcours cette liste (qui peut être représentée par un vecteur ou autre, à toi de voir) et pour chaque élément tu fait une action. Mais qu'est-ce que l'on t'apprend à l'école ?

    je connais pas encor les possibilités des applets-)
    je ne connais pas le graphisme en Java (pour Bouml j'utilise Qt), si tu as des questions de ce coté il faut les poser sans les forums Java

    si tu ne peux pas faire de graphisme par manque de temps il faut que tu écrives la liste des plat et aliments (System.out.printf(...)) puis saisir le nom de la chose choisie, mais c'est évidemment moins top

  13. #33
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    ... >.>
    on apprends rien en cour...

    Je sais que je peux utiliser l'interface de l'invite de commande mais

    merci pour tout... je continue ^^

  14. #34
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    foreach IRepas i_repas in mesComposants
    somme += i_repas.calculerApport()
    Ceci est une itération. (d'ailleurs, plusieurs de tes questions trouvent réponse dans le post d'où est tirée cette citation.)

    Le fait d'implementer une interface revient à signer un contrat.

    Dans ton cas, Repas signe le contrat de IRepas, et s'engage à donner un corps aux méthodes de IRepas, s'il ne le fait pas il est condamné à être abstract. Idem pour Plat et Aliment.

    Maintenant, chacune de ces trois classes donnera un corps différent.
    Repas : iteration sur les plats
    Plat : itération sur les Aliment
    Aliment : tel que tu l'as implémenté.


    ce qu'il te faut c'est une IHM ...Une liste de famille d'aliment, une liste d'aliment qui est générée dynamiquement selon la famille (si possible sinon refresh -je connais pas encor les possibilités des applets-), une input pour la quantite de l'aliment, une validation et mon aliment se place dans une liste type textarea ou je ne sais trop quoi avec sa quantite et l'apport calorique calculé, ceci sera le repas.
    attention, vous partez dans l'implémentation des ihm ce n'est pas bien D'accord, moi aussi je suis parti dans l'implémentation, mais en restant en pseudo code et pour expliciter Composite

    Comment je dois faire si ce ne sont pas des classes? X_x
    Ces "choses" seront des types énumérés, des enums, donc ce ne seront pas des classes, mais des listes de labels (avec gestion interne d'un numéro.

    Avant de continuer, je te conseille grandement de peaufiner tes connaissances sur :
    - l'héritage
    - les interfaces (pas graphiques, interfaces-contrats)
    - le polymorphislme (indispensable à la compréhension de Composite)
    - les collections (d'ailleurs l' Iterateur est un design pattern également)

    Bon courage
    N'hésite pas à poser d'autres questions.

  15. #35
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par hed62 Voir le message
    attention, vous partez dans l'implémentation des ihm ce n'est pas bien
    comprends pas, son but est quand même de faire un prog qui tourne, pas de rester au niveau modèle ... il doit y avoir un quiproquo

  16. #36
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Toutes mes excuses, je ne voulais pas vraiment ce smiley "méchant" qui fronce les sourcils, ce n'était qu'une boutade (d'où le clin d'oeil), en rapport avec les remarques habituelles (pas penser implémentation, respecter la division des forums, etc...).

    N'en tenez pas compte, c'esdt lundi matin

  17. #37
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Ouiii je suis à suivre un tutoriel d'apprentissage de java sur le site ...
    Et franchement... je me demande bien ce qu'on a fait en cour u____u

    J'ai vu qu'il y avait un chapitre complet sur les Interfaces *o*

    J'y retourne

  18. #38
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Je crois que je vais allègrement remercier mon professeur d'informatique et ses 2*4pages pour son cour de java........

    J'ai lu un tutoriel sur java d'une vingtaine de chapîtres et je commence à y voir plus clair. Enfin ca m'aura prit 3 jours >.<
    L'interface est une classe entièrement abstraite.

    Je vois mieux comment le paterne fonctionne...
    et je me dis que j'ai du faire de grosses boulettes dans mon architecture de classes...
    Par exemple, je ne pense pas que je devrais avoir de collection de IRepas dans Repas... Puisque IRepas n'est pas instanciable.
    J'ai juste son implémentation dans Repas....
    Vous confirmez?
    Si oui, j'ai bien un lien de Aliment à Plat, de Aliment et Plat à IRepas, de Repas à IRepas, d'un IRepas constitué d'Aliment... Là ca me parait louche.
    Comment l'objet d'une classe non instanciable (enfin le non objet) pourrait être "constitué"...

    De plus, en dehors du fait que mes classes correspondent entre elles via l'interface, elles n'ont pas de lien entre elles (je pense a Aliment/Plat vers Repas).
    Pièce jointe 30461

    Désolé de vous embêter encor avec ca

  19. #39
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    je ne pense pas que je devrais avoir de collection de IRepas dans Repas... Puisque IRepas n'est pas instanciable.
    et non

    oui IRepas n'est pas instanciable, mais ta collection contiendra en fait des instances de classes implémentant IRepas

    hed62 t'a proposer l'interface IRepas principalement parce que tu avais besoins d'une classe mère pour plat et aliment, cette classe mère représentant les constituants d'un repas. Bien évidemment cette classe mère aurait pu aussi etre une 'vraie' classe instanciable, mais cela n'a pas été le cas pour trois raisons
    • parce qu'une telle classe ne saute pas au yeux, ainsi t il ne semble pas judicieu que plat hérite d'aliment ou l'inverse
    • parce que l'utilisation d'une interface est 'propre' : cela permet à la classe utilisatrice de l'interface de n'avoir à connaitre que le minimum, c'est à dire ce qui l'intéresse dans IRepas, et non les détails des sous classes dont elle se moque totalement. De plus en faisant ainsi tu sais ce que tu peux changer des choses au niveau aliment ou repas sans que cela puisse poser un problème au niveau des classes utilisant IRepas : tant que les sous classes implémente les opération d'IRepas il ne peut y avoir de problème et tout le reste peut etre changer sans prendre de risque.
    • parce que si d'aventure du devais ajouter ensuite une troisième sous classe à IRepas cela sera facile et ne posera pas de problème, ce qui n'aurait pas été forcément le cas avec une 'vraie' classe qui serait peut être devenu une mauvaise classe mère pour la nouvelle 3ième classe


    les interface en minimisant les interactions possibles entre les classes/composants rendent le code plus facilement compréhensible en créant des séparations bien définies, et donc plus facilement maintenable.

    maintenant il y a évidemment une limite à tout, chaque classe ne doit pas être systématiquement doublée par une interface

  20. #40
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    je ne pense pas que je devrais avoir de collection de IRepas dans Repas... Puisque IRepas n'est pas instanciable.
    Non ce n'est pas vraiment une collection de iRepas. Mais de Plats/Aliments (et de Repas )
    D'ailleurs il y a une question que je me pose depuis le début. C'est ambigu. Repas est composé de collection de Aliment/Plat qui implémentent l'<<interface>> iRepas. Mais Repas aussi implémente <<iRepas>> (pour calculerApport () ) ... rien n'empêche Repas d'être composé d'une collection de repas

    [edit]
    je suis à suivre un tutoriel d'apprentissage de java
    tu as 1 ''collection'' de cours Java sur DVP, écrits par des certifiés et autres Java Champions.
    [/edit]

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Réponses: 17
    Dernier message: 03/05/2011, 11h35
  2. Validation de mon diagramme de classe
    Par ne2sbeal dans le forum Diagrammes de Classes
    Réponses: 4
    Dernier message: 22/02/2010, 23h28
  3. probleme pour créer mon diagramme de classe
    Par karamokooo dans le forum Diagrammes de Classes
    Réponses: 0
    Dernier message: 22/02/2010, 11h34
  4. Validité de mon Diagramme de Classe
    Par Deallyra dans le forum Diagrammes de Classes
    Réponses: 3
    Dernier message: 14/01/2009, 13h03
  5. aide sur mon diagramme de Class
    Par Maria1505 dans le forum Diagrammes de Classes
    Réponses: 9
    Dernier message: 30/07/2007, 11h00

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