Lisning for a subclass property
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Walid
 el 24 de Jun. de 2015
  
    
    
    
    
    Comentada: Walid
 el 25 de Jun. de 2015
            I have a main class and a subclass and I would like to listen for the change in any of the subclass properties. In other term when the property in the subclass changes, I would like to trigger a function in the main class. I coded it this way but nothing is happening. thanks for your help.
mainclass =
classdef class_mainclass < handle
     properties (SetAccess = private)
     end
      properties (SetObservable)
          subclass;
      end
     events
     end
     methods
         function obj = class_mainclass
             obj.subclass = class_subclass;
             addlistener(obj,'subclass','PreSet',...
              @PushButton.do);
         end
         function do(src,evt)
             display('did');
         end
     end % methods
  end % classdef
and a subclass
classdef class_subclass < handle
     properties (SetAccess = private)
     end
      properties (SetAccess = public)
          A=1;
      end
     events
     end
     methods
         function obj = class_subclass
         end
         function obj = addA(obj)
             obj.A=obj.A+1;
         end
     end % methods
  end % classdef
>> m = class_mainclass;
>> m.subclass.addA
0 comentarios
Respuesta aceptada
  Guillaume
      
      
 el 24 de Jun. de 2015
        
      Editada: Guillaume
      
      
 el 24 de Jun. de 2015
  
      First, a matter of terminology. Your subclass is not a subclass at all. A subclass derives from the main class. In matlab OOP this implies the following definition:
classdef subclass < mainclass
Your subclass is just a standard class that happens to be a member of your main class. It would be very odd for a main class to instantiate a subclass (except through factory methods), anyway.
In any case, If you want to listen to the property changes of your member class, it is these properties you need to set observable and these properties you need to attach a listener. At present, the only thing you'll detect is if your subclass member is changed to a new instance. That is you'll detect this:
m.subclass = class_subclass; %assign a new class_subclass to the member property of m
Más respuestas (0)
Ver también
Categorías
				Más información sobre Class Introspection and Metadata en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
