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

MATLAB Discussion :

POO sous MATLAB 7


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut POO sous MATLAB 7
    Bonjour,

    Suite à cette discussion, j'ai tenté de faire un exemple d'implémentation du "pseudo POO". Une calculatrice qui doit pouvoir faire la somme de deux nombres, afficher le résultat en cours, donner le résultat en paramètre de sortie, et enregistrer ce même résultat dans une variable interne à ma "pseudo-classe". Implémentation :

    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
     
    function [this] = calculatrice
      % Propriétés internes
      r = 0;
     
      % Méthodes (définition)
      this = struct(...
        'somme'   , @additionner, ...
        'resultat', r);
     
      % Méthodes (implémentation)
      function [sortie] = additionner(a, b)
        r = a + b;
        sortie = r
      end
    end
    Tests :

    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
     
    >> ma_calculette = calculatrice
     
    ma_calculette = 
     
          somme: @calculatrice/additionner
       resultat: 0
     
    >> ma_variable = ma_calculette.somme(1,2)
     
    sortie =
     
       3
     
    ma_variable = 
     
       3
     
    >> ma_calculette
     
          somme: @calculatrice/additionner
       resultat: 0
    Ah ben non ! Moi, je veux que "resultat" vaille 3 et non 0 là... pas bon !

    Je ne maîtrise pas la programmation matlab à fond... pouvez-vous me dire où est mon erreur svp ?

    Cordialement,
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Pour que resultat vaille la valeur de r "en temps réel", il ne faut pas que la structure contienne la variable r mais une fonction qui renvoie sa valeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    this = struct(...
        'somme'   , @additionner, ...
        'resultat', @getR);
    
    ...
    function [val] = getR
    val = r;
    end
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Excellent ! Merci beaucoup !

    Code final :

    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
     
    function [this] = calculatrice
      % Propriétés internes
      r = 0;
     
      % Méthodes (définition)
      this = struct(...
        'somme'   , @additionner, ...
        'resultat', @getR);
     
      % Méthodes (implémentation)
      function [sortie] = additionner(a, b)
        r = a + b;
        sortie = r;
      end
      function [val] = getR
        val = r;
      end
    end
    Tests :

    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
     
    >> ma_calculette = calculatrice
     
    ma_calculette = 
     
          somme: @calculatrice/additionner
       resultat: 0
     
    >> ma_variable = ma_calculette.somme(1,2)
     
    ma_variable = 
     
       3
     
    >> ma_calculette.resultat()
     
       3
    Problème résolu. Merci encore,

    Cordialement,
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  4. #4
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Bonjour,

    Après implémentation pour analyser des résultats (concerne directement ma thèse : donc cas d'application concret), je dirais que cet "outil" (la pseudo-POO décrite ci-dessus) présente des avantages et des inconvénients...

    Inconvénients :
    - un poil plus complexe à mettre en place que si on utilise des fonctions basiques... et encore, ceci n'est valable que si on fait des programmes basiques
    - ennuyeux à écrire car assez répétitif par moments

    Avantages :
    - très simple à l'utilisation tout en restant puissant et efficace
    - code clair et facile à maintenir et à améliorer pour celui qui s'occupe de développer telle ou telle "classe"
    - une nouvelle personne qui arrive dans le projet, selon son niveau d'implication, n'a besoin de savoir que ce dont il a besoin, à savoir : "help nom_de_la_classe" s'il est "utilisateur" (ce qui renvoie les commentaires du début du fichier) ; les commentaires dans le fichier lui-même s'il est "programmeur" de la classe
    - permet de développer des "grosses" applications (chose difficilement imaginable en n'utilisant que de simples fonctions) - rapidement en plus puisque de nombreux outils existent déjà sur matlab.

    Après l'avoir montré à mes collègues, la plupart ont l'air "pour".

    Conclusion : j'utiliserai cette méthode pour programmer dorénavant.

    Cordialement,

    ps: désolé pour le "up", mais j'estimai intéressant de conclure pour les futurs lecteurs du post.
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 160
    Points
    53 160
    Par défaut
    Citation Envoyé par tachmou Voir le message
    - permet de développer des "grosses" applications (chose difficilement imaginable en n'utilisant que de simples fonctions)
    Mouais... l'informatique n'a pas attendu le paradigme de la POO pour faire de "grosses" applications (et continue d'en produire aujourd'hui encore).

    Chaque méthode a ses qualité et ses défauts...

    Le principal est que ton choix corresponde aux attentes de ton équipe et puisse vous faire développer vos applications en toute sérénité.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Bonjour,

    Cette méthode est cruellement efficace... Je pense qu'il serait intéressant pour tout le monde de proposer cette méthode dans "Sources MATLAB".

    La paternité de cette méthode appartenant à Duf42, je lui laisse bien évidemment l'honneur de le faire. Je suis tout de même prêt à entièrement rédiger un programme simple et rapidement compréhensible par tout le monde. Je voudrais juste dans ce cas qu'on me donne les directives principales.

    Cordialement,
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Animation sous MATLAB
    Par Bluntz dans le forum MATLAB
    Réponses: 2
    Dernier message: 10/10/2006, 19h36
  2. Lire un programme écrit sous MATLAB
    Par tipi09 dans le forum Octave
    Réponses: 2
    Dernier message: 06/10/2006, 11h43
  3. Pointeur sous MATLAB
    Par corentin59 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/10/2006, 11h06
  4. Curseur sous MATLAB
    Par philatex dans le forum MATLAB
    Réponses: 2
    Dernier message: 23/08/2006, 10h02
  5. Exécutable sous MATLAB
    Par julien_arche dans le forum MATLAB
    Réponses: 6
    Dernier message: 01/08/2006, 10h54

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