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!