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 :

properties dans classdef non modifiables avec setAccess=private


Sujet :

MATLAB

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 94
    Points : 85
    Points
    85
    Par défaut properties dans classdef non modifiables avec setAccess=private
    Bonjour,
    J'ai une classe comme:
    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
     classdef process
     
     
        properties (Access=protected)
            outputs
            inputs 
     
    end
    methods
     
           function [varargout]=setOutputs(obj,varargin)
     
               obj.outputs=varargin{1}; 
            end
     
     
            function [varargout]=getOutputs(obj,varargin)
                varargout{1}=obj.outputs;
            end
       end
     end
    Hors, en exécutant dans le terminal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    monobjet=process;
    monobjet.setOutputs(234);
    mon.getOutputs
    la réponse est: 0 (i.e: propriété a valeur "isempty==true". Par contre, en enlevant l'attribut "SetAccess=protected", le changement de valeur peut être enregistré. Comment permettre le changement de valeur sans perdre l'attribut "protected"?

    Merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 94
    Points : 85
    Points
    85
    Par défaut
    Bon, j'ai résolu de la manière suivante:
    1) mettre en commentaires le code suivant qui se trouve dans la subclass que je testais (!!!!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     function [varargout]= getOutputs
    varargout{1}=false;
    2) cmopléter le code de setOutputs avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function [obj]=setOutputs(obj,varargin)
    obj.outputs=varargin{1};
    Il me reste á tester le cas des attributs réglés sur protected, private, etc.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 94
    Points : 85
    Points
    85
    Par défaut
    Et apparemment, pour régler la valeur de la propriété "outputs", je dois écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monobjet=monobjet.setOutputs(1234);
    Très énervant mais en moins ca marche avec un attribut réglé sur "protected".

  4. #4
    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 : 40
    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,

    Essaye plutôt de faire hériter ta classe de la classe "handle" en modifiant le première ligne ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    classdef process < handle
    Pour plus d'information, je te conseille de lire cette page de la documentation.

    Duf
    Simulink & Embedded Coder

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/05/2009, 09h36
  2. Réponses: 1
    Dernier message: 28/11/2007, 11h52
  3. Réponses: 6
    Dernier message: 27/07/2006, 14h38
  4. Réponses: 5
    Dernier message: 30/09/2005, 16h42
  5. Attributs d'un record en property non modifiables
    Par WebPac dans le forum Langage
    Réponses: 15
    Dernier message: 11/04/2005, 12h59

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