Cyclic dependency in OOP
显示 更早的评论
I'm new to OOP in MATLAB, but I would like to define properties a,b,c in a class in such a way that if one of the value changes, then so do the other 2. For example, suppose that we have the relation, b = a+1, c = b+1, a = c-2. Hence, if I set the value b = 2, then c = 2+1 =3 and a = c -2 = 1.
回答(2 个)
colordepth
2025-3-13
0 个投票
To implement interdependent properties in MATLAB where changing one updates the others, you can use property 'set' methods or property listeners. Both approaches allow you to define custom behavior when a property value changes.
- Property Set Methods: Define set.a, set.b, and set.c methods in your class. These methods execute whenever the corresponding property is assigned a value. Inside each setter, update the other properties based on your equations. You can refer to the documentation for more details: https://www.mathworks.com/help/matlab/matlab_oop/property-set-methods.html.
- Property Listeners: These are event-driven callbacks that trigger when a property value changes. You can implement a logic for the dependent property update inside this callback. For more guidance, refer to: https://www.mathworks.com/help/matlab/matlab_oop/listening-for-changes-to-property-values.html.
Walter Roberson
2025-3-13
0 个投票
You can use dependent properties, perhaps in conjunction with hidden properties.
In the example given, you could have a hidden master property, hidden_a with get.a = hidden_a, get.b = hidden_a + 1, get.c = hidden_a + 2. Then establish set.a, set.b, set.c that affect hidden_a in appropriate ways -- for example set.c would set hidden_a = VALUE - 2;
类别
在 帮助中心 和 File Exchange 中查找有关 Get Started with MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!