Editing superclass properties from subclasses

1 view (last 30 days)
Hi!
I have a question related to the Matlab example http://www.mathworks.com/help/matlab/matlab_oop/a-simple-class-hierarchy.html. For testing I use:
ds = DocSavings;
db = DocBond;
I can change the superclass property "Description" with
ds.Description = 'test';
However, listing "db" properties shows an empty "Description" string. Is there a way to synchronize superclass properties? Is using events and listeners of handle classes the only possible way?
Maybe: Another way is to use the subclasses as normal classes and define objects of these classes as properties of the former superclass?
Is there a better solution?

Accepted Answer

per isakson
per isakson on 13 Sep 2013
Edited: per isakson on 14 Sep 2013
Why do you want different objects to share ( "synchronize" ) property values? However, without looking at the documentation you refer to.
super = SuperClass;
sub = SubClass;
sub.handle.Description = 'Hello';
super.handle.Description
super.handle.Description = 'World';
sub.handle.Description
returns
ans =
Hello
ans =
World
where
classdef SuperClass < handle
properties
handle = DescriptionContainer();
end
end
and
classdef DescriptionContainer < handle
properties
Description
end
end
and
classdef SubClass < SuperClass
properties
another_property
end
end
.
With the help of a dependent property together with set and get methods, I think it would be possible to hide (Access=protected) the property, which I call "handle".
.
The word, "Editing", in the subject line makes me unsure regarding your intent.
"Maybe: Another way ..." sounds strange to me. Wouldn't that overly complicate the dependencies.
"events and listeners" if nothing else it complicates the debugging.
  2 Comments
Simon
Simon on 16 Sep 2013
Hi!
Thank you for your reply!
"Editing" in the subject line maybe better replaced with sharing or synchronizing, you're right.
Why do you want different objects to share ( "synchronize" ) property values?
Suppose I have a superclass for reading/writing to a file, with a property called "FileName". If I create two subclasses to use this superclass, each subclass has its own instance of the superclass property "FileName". But I want to write the individual properties of the subclasses to the same file (automatically). This is true if I have another class (like in your example) storing the filename (the description in your example). This is the second solution I tried to explain in my "Maybe: Another way ..." paragraph. But I realize it was quite confusing ;-)
I think I should re-think the problem ...
per isakson
per isakson on 16 Sep 2013
Edited: per isakson on 16 Sep 2013
Comments:
  • What you describe makes me think of a logger. See the FEX-contributions log4m and log4matlab
  • Make some experiments with running code before you settle for a solution.
  • "Is there a better solution?" I think the solution I outline answers your question.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!