On dependent properties: Is this poor Object Oriented Programming?
2 次查看(过去 30 天)
显示 更早的评论
Hi, I have a class C1 with a dependent property d and another class C2 which inherits from C1.
When property d is called from C2, it naturally goes through C1. I would like the d coming from C2 to be a transformation of the d coming from C1.
What I did is to create an auxiliary function (not a new method) that is called by C1. The function does what C1 would do to get d and then checks whether the input is a C2 object in which case it transforms d.
Is this bad programming? Would you do it differently?
Thanks,
0 个评论
采纳的回答
Adam
2014-8-18
编辑:Adam
2014-8-19
I would usually use the idea of a protected function that extends the base class.
So the base class function is of the type:
function d = get.d( obj )
% base class implementation here
d = doGetD( obj, d )
end
with an empty protected implementation of doGetD in the base class and an implementation that extends the base class in the derived class.
2 个评论
更多回答(1 个)
Guillaume
2014-8-18
No, it's not very good as your base class C1 now contains implementation that belongs to the derived class C2.
Rather than calling an auxiliary function in C1 d getter, you should call a private class method, that you then override in class C2.
4 个评论
per isakson
2014-8-25
编辑:per isakson
2014-8-25
"There is nowhere I can see"   Use the "debugger" to step through the code and you will see that it works automagically.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Construct and Work with Object Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!