Ereditare struct su un altra classe

di il
1 risposte

Ereditare struct su un altra classe

Salve , ho il seguente



classdef contatore
   %UNTITLED Summary of this class goes here
   %   Detailed explanation goes here
   
   properties
% modificata inizializazinoe del campo "visita"     
      s=struct('visita',[],'contatore',1,'capacita',0);
      conta;
   end
   methods(Static)
% Aggiunto un parametro e modificato il nome del parametro "self"
      function r=setGlobalx(cont_class,input_1,n)
% Eliminata (commentata) la definizione della varaibile globale
%          global x
% Eliminata l'assegnazione della variabile globale alla varaibile di output
% della funzione
%          r=x;
         cont_class.s(1).visita(n)=input_1;
% Assegnazione del valore del campo "vista" alla varaibile di output della
% funzione
         r=cont_class;
         
         for i=1:n
            disp('Valore di "visita settato nella funzione "setGlobalx= ')
            disp(num2str(cont_class.s(1).visita(i)));
         end
      end
     
% Funzione modificata: ritorna solo il valore della property "visita"
% Assegnato un paramtro di input: l'istanza della classe della quale si
% vogliono acquisire i valori
      function r2 = getGlobalx(input_class)
         r2=input_class.s(1).visita;
      end
     
% Primo "end" aggiunto
   end
% Secondo "end" aggiunto     
end


classdef exec_contatore
%UNTITLED3 Summary of this class goes here
% Detailed explanation goes here

properties
end

methods(Static)


function self=exec_contatore()


cont_class=contatore;



% Creazione di un'istanza della classe "contatore"

% Utilizzo della funzione (method "setGlobalx"): il campo (l'array)
% "visita" dell'istanza "cont_class"

for n=1:3
% Definizione di "un valore" da assegnare al campo "visita"
val=n*2;
% Chiamata del method "setGlobalx"
cont_class=cont_class.setGlobalx(cont_class,val,n);
end

display(cont_class.s(1).visita(1));
% Stampa nella Command Window dei valori settati


% Utilizzo della funzione "getGlobalx" per "acquisire" i valori assegnati
% alla property "visita" dell'istanza "cont_class" tramite le chiamate alla
% funzione "setGlobalx" effettuate in precedenza



var_out=cont_class.getGlobalx(cont_class);

display(var_out);




end

function prova3()

cont_class=contatore;

exec_contatore();
var_out=cont_class.getGlobalx(cont_class);



display(var_out);

% Utilizzo della funzione "getGlobalx" per "acquisire" i valori assegnati
% alla property "visita" dell'istanza "cont_class" tramite le chiamate alla
% funzione "setGlobalx" effettuate in precedenza




end
end

end




Il problema sarebbe di visualizzare var_out anche in un altra function

ad esempio nel mio caso nel exec_contatore viene visualizzato var_out mentre  in prova3 non viene visualizzato come mai? come posso risolvere?

1 Risposte

  • Re: Ereditare struct su un altra classe

    signfra ha scritto:


    Salve , ho il seguente
    
    
    
    classdef contatore
       %UNTITLED Summary of this class goes here
       %   Detailed explanation goes here
       
       properties
    % modificata inizializazinoe del campo "visita"     
          s=struct('visita',[],'contatore',1,'capacita',0);
          conta;
       end
       methods(Static)
    % Aggiunto un parametro e modificato il nome del parametro "self"
          function r=setGlobalx(cont_class,input_1,n)
    % Eliminata (commentata) la definizione della varaibile globale
    %          global x
    % Eliminata l'assegnazione della variabile globale alla varaibile di output
    % della funzione
    %          r=x;
             cont_class.s(1).visita(n)=input_1;
    % Assegnazione del valore del campo "vista" alla varaibile di output della
    % funzione
             r=cont_class;
             
             for i=1:n
                disp('Valore di "visita settato nella funzione "setGlobalx= ')
                disp(num2str(cont_class.s(1).visita(i)));
             end
          end
         
    % Funzione modificata: ritorna solo il valore della property "visita"
    % Assegnato un paramtro di input: l'istanza della classe della quale si
    % vogliono acquisire i valori
          function r2 = getGlobalx(input_class)
             r2=input_class.s(1).visita;
          end
         
    % Primo "end" aggiunto
       end
    % Secondo "end" aggiunto     
    end
    
    
    
    
    classdef exec_contatore
        %UNTITLED3 Summary of this class goes here
        %   Detailed explanation goes here
        
        properties
        end
        
        methods(Static)
            
            
            function self=exec_contatore()
                
                
               cont_class=contatore;
                
                
                
             % Creazione di un'istanza della classe "contatore"
    
    % Utilizzo della funzione (method "setGlobalx"): il campo (l'array)
    % "visita" dell'istanza "cont_class"
    
    for n=1:3
    % Definizione di "un valore" da assegnare al campo "visita"
       val=n*2;
    % Chiamata del method "setGlobalx"   
       cont_class=cont_class.setGlobalx(cont_class,val,n);
    end
    
    display(cont_class.s(1).visita(1));
    % Stampa nella Command Window dei valori settati
    
    
    % Utilizzo della funzione "getGlobalx" per "acquisire" i valori assegnati
    % alla property "visita" dell'istanza "cont_class" tramite le chiamate alla
    % funzione "setGlobalx" effettuate in precedenza
    
    
    
                    var_out=cont_class.getGlobalx(cont_class);
    
                    display(var_out);
    
                    
                    
                    
            end
    
                function prova3()
                    
                                    cont_class=contatore; 
                 
                    exec_contatore();
                   var_out=cont_class.getGlobalx(cont_class);
    
               
    
    display(var_out);
    
    % Utilizzo della funzione "getGlobalx" per "acquisire" i valori assegnati
    % alla property "visita" dell'istanza "cont_class" tramite le chiamate alla
    % funzione "setGlobalx" effettuate in precedenza
    
               
               
                
            end
        end
        
    end
    
    
    

    Il problema sarebbe di visualizzare var_out anche in un altra function

    ad esempio nel mio caso nel exec_contatore viene visualizzato var_out mentre in prova3 non viene visualizzato come mai? come posso risolvere?
Devi accedere o registrarti per scrivere nel forum
1 risposte