On dependent properties: Is this poor Object Oriented Programming?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Patrick Mboma
el 18 de Ag. de 2014
Editada: per isakson
el 25 de Ag. de 2014
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 comentarios
Respuesta aceptada
Adam
el 18 de Ag. de 2014
Editada: Adam
el 19 de Ag. de 2014
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.
Más respuestas (1)
Guillaume
el 18 de Ag. de 2014
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 comentarios
per isakson
el 25 de Ag. de 2014
Editada: per isakson
el 25 de Ag. de 2014
"There is nowhere I can see"   Use the "debugger" to step through the code and you will see that it works automagically.
Ver también
Categorías
Más información sobre Construct and Work with Object Arrays en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!