Editing superclass properties from subclasses

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

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 ...
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!