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 :

Créer une classe pour gérer recette de cuisine


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Points : 15
    Points
    15
    Par défaut Créer une classe pour gérer recette de cuisine
    Bonjour,

    je suis à la recherche d'un tuto ou d'un exemple me permettant de créer une classe en C++
    qui gère des recettes de cuisine.

    Ex: Dans mon constructeur je mettrai le libelle de la recette et ensuite une fonction me permettrai d'ajouter des ingrédients avec leur quantité. (pas de limite en nombre)

    Est-ce que quelqu'un aurait un exemple à me passer histoire de me mettre le pied à l'étrier et partir sur une bonne base ?

    Je suis parti de cette manière, mais je ne sais pas si je suis bon ou non:

    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
    class Recette {
     
    public:
      char * libelle;
      char * ingredient[];
      int quantite[];
     
      Recette(const char* lib){
        this->libelle = lib;
        this->ingredient = NULL; 
        this->quantite = NULL;
      }
     
      int add(const char * ing,  const int quan){
     
      }
    }

    mais j'avoue avoir un doute sur comment gérer les ingrédients et leur quantité.

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    on est en C++ il me semble, donc laisse tomber le C.
    Les chaînes de caractères sont des std::string
    Les listes d'éléments sont des std::vector

    Ta classe n'est rien qu'un agrégat de données ? Alors agrège-les. Proprement. Il ne s'agit de rien d'autre que de déclarer des membres.
    Quant à la liste des membres, on ne pourra pas la décider pour toi... C'est avant tout du GBS (Gros Bon Sens) et de la logique.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Points : 15
    Points
    15
    Par défaut
    Alors en fait, je me suis carrément planté, c'est bien du C et non du C++ (désolé pour l'erreur)

    Est-ce que ça pourrait changer ta réponse ou non ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hello,

    Dans l'absolu la réponse reste la même.

    Mais en C les classes n’existent pas.

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    En fait, Boosk a été un peu vite en besogne, bien qu'il ait raison sur certains points :

    1- Le fait que tu utilises le mot clé class implique d'office que tu écrit du C++ et non du C, vu que le mot clé n'existe simplement pas ne C.

    2- Le fait que tu aies envisagé d'ajouter une fonction add qui est une fonction membre de ta classe Recette plaide également en faveur du fait que tu fasses du C++ car le paradigme orienté objet (et donc le fonctions membres) n'existent pas en C.

    3- Il a cependant tout à fait raison sur un point : L'utilisation de char * pour représenter les chaînes de caractères, est une pratique indispensable en C, mais c'est une pratique très largement déconseillée en C++.

    En C++, on dispose de la classe string, fournie par le standard, disponible dans l'espace de nom (namespace) std ( comme tout ce qui est fournit par le standard) par inclusion du fichier d'en-tête <string>.

    Une autre pratique régulière en C mais déconseillée en C++ est d'utiliser les pointeurs et le recours à malloc pour créer des tableaux (notes au passage que char * ingredient[]; et int quantite[]; sont deux déclarations invalides aussi bien en C qu'en C++, parce qu'elles déclarent des tableau de taille indéfinie).

    On préférera gérer nos tableau avec la classe vector, qui est également fournie par le standard, également dans l'espace de noms std, par inclusion du fichier d'en-tête <vector>.

    Ceci dit, tu as parfaitement identifié trois "concepts" indispensable à ta recette de cuisine:

    La recette elle-même, bien sur, l'ingrédient et la quantité.

    Mais tu t'es arrêté un tout petit peu trop tôt dans ta réflexion

    En effet, la notion de quantité et la notion d'ingrédient sont intimement liées dans une recette de cuisine : si tu confond la quantité d'un ingrédient (le sel, par exemple) avec la quantité de l'autre (se sucre, par exemple), tu vas très certainement obtenir un résultat pour le moins surprenant (une pâte à sel au lieu d'une pâte à crêpes ).

    Et puis, tu n'as pas pris en compte le fait que l'unité pour représenter la quantité pouvait varier :

    On parlera en kilo de farine, en pincée de sel, en gramme de sucre, en cuillère (à café, à soupe, à ...)d'huile etc.. Quand la quantité ne sera tout simplement pas les trois oeufs nécessaires ou un peu de poivre.

    Si tu veux pouvoir définir clairement une quantité pour un ingrédient, tu dois pouvoir fournir cette information "d'unité" en même temps que la désignation de l'ingrédient et de la quantité qui en est nécessaire.

    Finalement, ta notion d'ingrédient devrait consister en l'agrégation de ces trois informations que sont la désignation (le nom de l'ingrédient) la quantité et l'unité utilisée pour la quantité

    De même, tu t'es arrêté un peu trop tôt dans ta réflexion parce qu'une recette de cuisine est, d'abord et avant tout, une suite d'étapes qu'il faut exécuter -- dans un ordre particulier et rigoureux -- si tu veux obtenir le résultat escompté.

    Il faut donc que ta classe Recette soit en mesure de contenir une liste des étapes qui devront être respectées.

    Mais, là encore, il y a une astuce... Je ne vais pas te gâcher le plaisir en t'expliquant tout de suite de quoi je veux parler, mais la désignation (la phrase qui permet de représenter l'étape) ne représente qu'une partie des informations que tu voudras sans doute faire passer au lecteur.

    Selon toi, quelle serait l'autre (les autres) informations que tu voudrait pouvoir lui transmettre Quelle conséquence en tirer, quand on sait qu'il est généralement utile de créer un type qui permette de représenter un groupe d'informations qui "travaillent décidément bien ensemble"

    Pour conclure, je dirais que C++ n'est que la convention que tu vas utiliser pour faire comprendre à quelque chose "d'aussi bête qu'uni ordinateur" ce que tu veux de lui. C'est le rôle de n'importe quel langage .

    Comme tout langage, C++ suit certaines règles de grammaire et d'orthographes qui lui sont propres.

    Et comme pour toute convention qui se respecte, il y a des choses que l'on peut faire, des choses que l'on doit faire, des choses que l'on déconseille fortement de faire et des choses que l'on interdit de faire:

    Certaines cultures considèrent le fait de roter en fin d'un repas comme la preuve que le le repas t'a plu, alors que d'autres considère cela comme une insulte.

    Certaines seront ravies de retrouver ton assiette vide et nettoyée de la sauce (et outrées que ce ne soit pas le cas), alors que d'autres voudront te resservir dans les mêmes circonstances (et seront ravies s'il reste "un tout petit peu" dans l'assiette car cela prouve "que tu as eu assez").

    Ce sont aussi des conventions, et l'on voit bien qu'elles dépendent énormément de l'interlocuteur que l'on a en face de soi .

    L'amalgame est sans doute un raccourcis honteux pour ce qui est des différentes ethnies, mais, en ce qui concerne les langages dédiés à te faire comprendre par un ordinateur du moins, on peut clairement estimer que ces conventions "comportementales" qui te feront agir d'une manière donnée font partie de l'ensemble des conventions imposées par le langage.

    Le langage C est au C++ ce que le latin est au français : C++ "hérite" du C tout comme le français dérive fortement du latin.

    Mais la connaissance du C et la mise en oeuvre des "bonnes pratiques" du C n'a strictement rien à voir avec la connaissance du C++ et de ses propres "bonnes pratiques", tout comme tu ne peux pas estimer connaître le français ou les coutumes de Français lorsque tu connais le latin et les coutumes des Romains de jules césar.

    Une fois que tu as compris cela, la réponse à ta question
    Est-ce que ça pourrait changer ta réponse ou non ?
    est plus qu'évidente, non
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Créer une classe pour les sous titres d'un site
    Par Jean Sympa dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 19/11/2010, 16h26
  2. [AC-2007] Créer une BDD pour gérer des appareils
    Par ICETEA54 dans le forum Modélisation
    Réponses: 3
    Dernier message: 19/11/2009, 21h32
  3. Coder une classe pour gérer les matrices
    Par TrexXx dans le forum Débuter
    Réponses: 2
    Dernier message: 11/02/2009, 13h22
  4. Réponses: 2
    Dernier message: 04/05/2007, 14h10
  5. Réponses: 4
    Dernier message: 20/08/2006, 16h20

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