unidos tipos tipo ser que puedo miami manejo licencia instructor florida estados domicilio cuesta cuanto conducir conduccion como clases clase cdl matlab oop

matlab - tipos - Diferencia de clases de manejo y valores



tipos de licencia de conducir en estados unidos (2)

En realidad es bastante simple y diferente a los idiomas que notas. Las clases de control se pasan por referencia. Las clases de valor pasan por valor. La diferencia de c / c ++ es que el mecanismo es parte del sistema de tipo, no una operación que se puede realizar en cualquier variable.

Tengo algunos antecedentes C ++ y quiero usar clases en Matlab.

¿Cuál es la diferencia entre un mango y una clase de valor?

Sé que usaría una clase de valor si quisiera definir una clase de matriz con operadores sobrecargados como "+" y "*". Sin embargo, a veces parece que las cosas solo funcionan para mí como quiero cuando elijo una clase de manejo.


The MathWorks proporciona cierta información sobre el uso que se le puede dar para su ayuda y también en su documentación PDF . También encontré este artículo del Proyecto Yagtom (originalmente por Matt Dunham ) para ser una gran introducción a OOP en MATLAB.

En la ayuda esto se explica de la siguiente manera (el énfasis es mío):

MATLAB admite dos tipos de clases: manejar clases y clases de valores. El tipo de clase que utiliza depende del comportamiento deseado de las instancias de clase y de las características que desea usar.

Utilice una clase de control cuando desee crear una referencia a los datos contenidos en un objeto de la clase, y no quiera copias del objeto para hacer copias de los datos del objeto. Por ejemplo, use una clase de control para implementar un objeto que contenga información para una entrada en la guía telefónica. Varios programas de aplicación pueden acceder a una entrada particular de la guía telefónica, pero solo puede haber un conjunto de datos subyacentes.

El comportamiento de referencia de los identificadores permite que estas clases admitan funciones como eventos, oyentes y propiedades dinámicas.

Use clases de valor para representar entidades que no necesitan ser únicas, como los valores numéricos. Por ejemplo, use una clase de valor para implementar un tipo de datos polinomiales. Puedes copiar

En el artículo de Matt Dunham, se hace otro buen punto para distinguir ambos tipos de clases:

Anteriormente mencionamos que los objetos en Matlab son, (de forma predeterminada) pasados ​​por valor , lo que significa que las copias completas se pasan de ida y vuelta en las llamadas a métodos. Sin embargo, los objetos gráficos de Matlab se pasan por referencia (a través de identificadores). Si subclasificamos la clase de identificador incorporada [...] entonces los objetos de nuestra clase también se pasarán por referencia, no por valor.

Personalmente, suelo usar clases de manejo para obtener algo de la sintaxis a la que estoy acostumbrado con Java: para una clase de manejo, puede hacer que el objeto almacene toda la información, de modo que pueda tener operaciones como sort(a) (o a.sort() ) se realizará en su lugar. Para las clases de valor, el equivalente de esto es a = sort(a) (o a = a.sort() ). Para los operadores, la primera sintaxis no tiene ningún sentido, pero la segunda es obviamente de uso general: por ejemplo, a = a + b (esto es equivalente a a = plus(a,b) y a = a.plus(b) ).

  • Si la principal preocupación de su clase es almacenar valores (numéricos) de algún tipo y poder realizar operaciones, la clase de valor probablemente sea el camino a seguir.
  • Si desea almacenar un estado, agrupar valores relacionados, conectar diferentes objetos juntos (listas vinculadas, gráficos, ...), la clase de manejo podría ser el camino a seguir.

O al menos, eso es lo que tiendo a usar para hacer la distinción.