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

Langage C++ Discussion :

Aide pour liaison de class


Sujet :

Langage C++

  1. #21
    Membre habitué
    Homme Profil pro
    dépanneur grande cuisine frigoriste
    Inscrit en
    Juin 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : dépanneur grande cuisine frigoriste

    Informations forums :
    Inscription : Juin 2020
    Messages : 26
    Par défaut
    faut que je retourne un bool dans l'objet gainable , par exemple : bool froid pour pour lancer l'objet froid avec une boucle while dans main avec if (froid == true) {objet froid}

    mais ce que j'arrive pas trop a faire c'est les parametres de class et des fonctions .

  2. #22
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 478
    Par défaut
    Quand le code commence à être conséquent en taille, il vaudrait mieux utiliser des dépôts de code en ligne comme Github ou Gitlab.
    Comme vos questions sont plus de l'ordre de la conception, poster une version "réduite" du code n'est vraisemblablement pas encore très pertinent.

    pour pouvoir faire un heritage entre l'objet Gainable et l'objet Froid
    Attention avec l'héritage.
    C'est le lien le plus fort entre des classes en C++, rendant ces classes très interdépendantes.
    Généralement, on cherche à découpler le plus possible les classes.
    Généralement, on utilise l'héritage quand on veut profiter du LSP ( https://alfps.wordpress.com/2012/03/...rinciple-in-c/)
    Je ne crois pas que cela soit le cas entre un objet "Gainable" et un objet "Froid".
    A moins qu'un "Froid" soit un type particulier de "Gainable" ?

    La règle "est un" entre une classe mère et une classe fille (la classe fille "est une" spécialisation de la classe mère) n'est qu'une simplification d'une vraie règle plus complexe.
    Cette simplification peut être trompeuse : un carré est un rectangle en mathématique mais tu ne devrait pas faire hériter ta classe "carré" d'une classe "rectangle".
    Idem pour les classes "Point" et "PointColoré".
    Mais en première analyse, la règle "est un" peut convenir.

    Donc, faire hériter "Froid" de "Gainable", je suis très circonspect.

    pour integré les pins de la class gpiopin dans le gainable.h
    Pourquoi "intégrer" gpiopin dans la classe gainable ???

    Le code que vous avez posté le 03/04/2005 à 15h40 semble montrer un code proche d'une implémentation+utilisation d'un Design Pattern "Singleton".
    C'est une bonne idée de faire appel à ce type de Design Pattern, mais je vous conseille de regarder comment les implémenter de manière plus simple et plus fiable avec quelques recherches via Google (ou peut-être avec nos nouveaux amis IA).
    Avec le nom du Design Pattern, vous aurez des implémentations, mais aussi les limitations à leur usage, tout cela en interrogeant Google ou une IA.

    Moi, je vous conseille de circonscrire les fonctions liées au hardware dans un espace de noms dédié.
    Si vous changez de hardware, vous n'aurez qu'à changer le code dans cet espace de noms sans avoir à changer le reste de votre code.
    Mais pour cela, il faudrait que vos fonctions soit plus simple d'utilisation, sans avoir à connaitre comment le hardware fait ça tambouille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    namespace pins{
    void digitalWrite (int pin,int  output);
    int digitalRead (int pin);
    }
    (Il faudrait peut-être réflechir un peu plus à comment rendre l'interaction avec le hardware plus souple)
    Le reste devrait être "caché" dans un .cpp dédié.

    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
        void compteurFiltreFroid();
     
        void etatMarcheFroid();
        void tempoVolets();
        void etatVoletsFroid();
        void etatControleTemperatureFroid();
        void etatDepartCanicule();
        void etatDepartFroid();
        void etatVentilationsFroid();
        void etatVentilationsCanicule();
        void etatV4VFroid();
        void etatCompresseurFroid();
        void etatControleDegivrageFroid();
        void etatControleTemperatureDegivrageFroid();
        void etatFinDegivrageFroid();
        void etatEgouttageFroid();
        void etatFinEgouttageFroid();
        void etatArretFroid();
    Je ne trouve vraiment pas le nom de vos fonctions très explicite.

    Il est très rare qu'une fonction "void NomALaNoix()" est une signature très judicieuse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void Froid::modeFroid()
    {
        while (1) {
    Une attente active ?
    Je ne crois pas que votre code soit vraiment près pour ce genre d'acrobatie, ni pour du multithreading.
    Je pense que vous devriez prendre un peu plus de temps pour bien analyser et structurer votre projet.
    Vous devriez avoir en tête une architecture simple, au moins au démarrage.

    Je crois que vous devriez regarder du côté du Design Pattern "Stratégie".

    Essayez de "verbaliser" votre architecture, avec nous, par exemple. Pour voir où des Design Pattern sont nécessaire ou pratique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Gainable *mainGainable;
        mainGainable = new Gainable();
    Je ne sais pas où vous avez "appris" à coder comme cela, mais clairement pas ma bonne.
    J'avais déjà signalé que votre source/support d'apprentissage du C++ n'est vraiment pas bon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Gainable mainGainable{};

  3. #23
    Membre habitué
    Homme Profil pro
    dépanneur grande cuisine frigoriste
    Inscrit en
    Juin 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : dépanneur grande cuisine frigoriste

    Informations forums :
    Inscription : Juin 2020
    Messages : 26
    Par défaut
    ok merci, je vais essayer de verbaliser tous ca , et je le posterais merci

  4. #24
    Membre habitué
    Homme Profil pro
    dépanneur grande cuisine frigoriste
    Inscrit en
    Juin 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : dépanneur grande cuisine frigoriste

    Informations forums :
    Inscription : Juin 2020
    Messages : 26
    Par défaut
    j'ai fais ce diagramme , si il ya des choses a modifier je suis a l'ecoute merci

    2025-07-04 - ludo.pdf

  5. #25
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 478
    Par défaut
    Il n'y a pas "une" conception correcte pour une situation.
    La conception est très dépendante de l'objectif du projet.

    Donc, comme on n'a pas tous les tenants et aboutissants du projet, on ne peut pas dire si vous fait fausse route avec cette conception.

    Mais :
    Votre diagramme ne semble pas suivre à la lettre les recommandations UML.
    En UML, ce type de diagramme (objet ? classe ?) n'est pas forcement l'un des premiers à concevoir pour une analyse "sereine".
    Les types des attributs semble "complexes".
    Vous ne devriez pas avoir de détails d'implémentation visibles dans ce genre de diagramme.
    Donc, les attributs, ça devrait être "exceptionnels".
    Vous mélangez plusieurs couches/module : IHM ne devrait pas avec les classes/objets "métier".

    Votre code devrait fonctionner quelque soit le type d'IHM, console, Qt, GUI natif, etc...

    Essayez déjà de verbaliser avec des phrases.
    Des diagrammes de séquence ou des "use case diagramme" UML sont plus faciles à faire au début d'un projet.

    On commence :
    Gainable : ça représente quoi ?
    ça fournit quoi comme services (en se fout de comment il implémente ces services) ?

  6. #26
    Membre habitué
    Homme Profil pro
    dépanneur grande cuisine frigoriste
    Inscrit en
    Juin 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : dépanneur grande cuisine frigoriste

    Informations forums :
    Inscription : Juin 2020
    Messages : 26
    Par défaut
    un gainable est un systeme de chauffage et de refroidissement ; il se trouve dans deux endroits : un compresseur, une vanne 4Voies et un ventilateur a l'exetrieur et un ventilateur et un système de clapets (en fonctions des pieces as chauffer ou as refroidir) a l'interieur dans les combles au dessus du plafond .
    les deux parties (exterieur et interieur) sont relier par des tuyau en cuivre pour la circulation du gaz.

    le compresseur et les ventilateurs fonctionnent aussi bien en chauffage qu'en refroidissement .
    la vanne elle fonctionne qu'en froid.

    le tous est gerer via des temporisations et des sondes (ext(nord), unité exterieur , echangeur exterieur , unité interieur et echangeur interieur).

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