On dependent properties: Is this poor Object Oriented Programming?
이전 댓글 표시
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,
채택된 답변
추가 답변 (1개)
Guillaume
2014년 8월 18일
0 개 추천
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
Patrick Mboma
2014년 8월 18일
Actually the method you call needs to be protected
classdef C1
properties (Dependent)
d;
end
methods
function value = get.d(this)
value = getdimplementation(this);
end
end
methods (Access = protected)
function value = getdimplementation(this)
%actual implementation of dependent property for C1
end
end
end %end of C1 definition
classdef C2 < C1
methods (Access = protected)
function value = getdimplementation(this)
%actual implementation of dependent property for C2
end
end
end
Patrick Mboma
2014년 8월 18일
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.
카테고리
도움말 센터 및 File Exchange에서 Configure and View Diagnostics에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!