2011-11-11 18 views
8

Supongamos que tengo la siguiente clase que calcula la solución a la ecuación de segundo grado:MATLAB - propiedades dependientes y cálculo

classdef MyClass < handle 
    properties 
     a 
     b 
     c 
    end 
    properties (Dependent = true) 
     x 
    end 

    methods 
     function x = get.x(obj) 
      discriminant = sqrt(obj.b^2 - 4*obj.a*obj.c); 
      x(1) = (-obj.b + discriminant)/(2*obj.a); 
      x(2) = (-obj.b - discriminant)/(2*obj.a); 
     end 
    end 
end 

Ahora supongamos que ejecute los siguientes comandos:

>>quadcalc = MyClass; 
>>quadcalc.a = 1; 
>>quadcalc.b = 4; 
>>quadcalc.c = 4; 

En este punto, quadcalc.x = [-2 -2]. Supongamos que llamo al quadcalc.x varias veces sin ajustar las demás propiedades, es decir, quadcalc.x = [-2 -2] cada vez que solicito esta propiedad. ¿Está quadcalc.xrecalculado cada vez, o simplemente "recordará" [-2 -2]?

Respuesta

6

Sí, x se recalcula cada vez. Este es el punto de tener una propiedad dependiente, ya que garantiza que el resultado en x esté siempre actualizado.

Si desea hacer x una "propiedad dependiente floja", es posible que desee consultar las sugerencias en mi respuesta al this question.

+1

Supongamos que utilizo 'x' en otras propiedades dependientes; 'x' también se volvería a calcular para cada otra propiedad dependiente, ¿sí? –

+0

@ strictlyrude27: Sí. – Jonas

Cuestiones relacionadas