Lisning for a subclass property

8 views (last 30 days)
Walid
Walid on 24 Jun 2015
Commented: Walid on 25 Jun 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

Accepted Answer

Guillaume
Guillaume on 24 Jun 2015
Edited: Guillaume on 24 Jun 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
  5 Comments
Guillaume
Guillaume on 25 Jun 2015
Edited: Guillaume on 25 Jun 2015
Sorry, I made a typo. It should have read:
addlistener(obj.subclass, 'A', 'PreSet', @PushButton.do);

Sign in to comment.

More Answers (0)

Categories

Find more on Construct and Work with Object Arrays in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!