Lisning for a subclass property

1 Ansicht (letzte 30 Tage)
Walid
Walid am 24 Jun. 2015
Kommentiert: Walid am 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

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Construct and Work with Object Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by