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] appeler une méthode depuis une méthode statique


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut [POO] appeler une méthode depuis une méthode statique
    Bonjour,

    Voici la définition de ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    classdef first < handle
        methods (Static)
            function hello
                obj_first.bye
            end
        end
        methods
            function bye(obj)
                disp('that works')
            end
        end
    end
    Voici mes commandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >> obj_first=first;
    >> obj_first.bye
    that works
    >> obj_first.hello
    Undefined variable "obj_first" or class "obj_first.bye".
    Error in first.hello (line 4)
                  obj_first.bye
    >>
    Pourriez-vous m'aider ?

    Merci beaucoup

  2. #2
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    salut,

    j'ai l'impression que tu cherches à implémenter le motif de conception qui s'appelle singleton, tu auras peut-être des infos en cherchant de ce côté.

    Pour répondre plus précisément au problème, il faut que dans le corps de la méthode static, la variable "obj_first" soit visible. Ce qui n'est pas le cas avec le code actuel. Une solution serait de passer par une variable de classe static, mais cela n'est pas possible sous Matlab
    Par contre, il est possible de passer par des variables persistantes. Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    methods (Static)
        function hello
            persistent obj_first;
            % initialise l'objet si il n'existe pas
            if isempty(localObj) || ~isvalid(localObj)
                % creation de l'objet (on passe parfois par un constructeur prive)
                obj_first = first(); 
            end
            % maintenant on peut appeler la methode
            obj_first.bye
        end
    end
    Plus d'infos sur cette page.

    A+

Discussions similaires

  1. Appeler une méthode d'une appli depuis une autre sans toucher à son code
    Par Omegnight dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 10/03/2016, 18h58
  2. Réponses: 3
    Dernier message: 11/06/2008, 21h09
  3. Réponses: 6
    Dernier message: 29/04/2008, 09h34
  4. Réponses: 5
    Dernier message: 23/04/2007, 16h31

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