Contenido principal

Sintaxis de propiedades

R2026b

En este tema se describe cómo definir las propiedades de las clases en MATLAB® con bloques properties...end y se presentan la sintaxis y los conceptos de validación de propiedades. También trata los fundamentos para obtener y establecer valores de propiedades desde una instancia de clase.

Bloque de definición de propiedades

Las palabras clave properties y end definen una o varias propiedades de clases que tienen la misma configuración de atributos. Esta es la sintaxis general para definir un bloque de propiedades:

properties (attributes)
   propName1
   ...
   propNameN
end

Nota

Las propiedades no pueden tener el mismo nombre que la clase o que alguno de los otros miembros definidos por la clase.

Por ejemplo, este bloque de propiedades define dos propiedades con el atributo SetAccess establecido en private. Esta configuración de atributos implica que solo los miembros de la clase PrivateProps pueden establecer los valores de la propiedad.

classdef PrivateProps
   properties (SetAccess = private)
      Property1
      Property2
   end
end

También puede definir varios bloques de propiedades con distintos atributos. En este ejemplo, un bloque de propiedades define propiedades con SetAccess privado y el segundo bloque define una propiedad abstracta. Los bloques de propiedades con distintos atributos pueden aparecer en cualquier orden en la definición de clases.

classdef MultiplePropBlocks
   properties (SetAccess = private)
      Property1
      Property2
   end
   properties (Abstract)
      Property3
   end
end

Para obtener una lista completa de los atributos de propiedades, consulte Atributos de propiedad.

Sintaxis de validación de propiedades

Dentro de un bloque de propiedades, puede utilizar la validación de propiedades. La validación de propiedades permite aplicar una o varias restricciones en cada valor de la propiedad, incluyendo tamaño y clase. También puede definir un valor predeterminado para cada propiedad. La sintaxis general para la validación de propiedades es:

properties (attributes)
   propName1 (dimensions) class {validators} = defaultValue
   ...
end

  • (dimensions): tamaño del valor de la propiedad, especificado como una lista separada por comas de dos o más números encerrados entre paréntesis, como (1,2) o (1,:). Los dos puntos permiten cualquier longitud en esa dimensión. Las dimensiones del valor deben coincidir exactamente con (dimensions) o ser compatibles. Para obtener más información, consulte Tamaños de arreglos compatibles para operaciones básicas. (dimensions) no puede contener expresiones.

  • class: clase del valor de la propiedad, especificada como nombre de la clase, como double. El valor debe ser de la clase especificada o de una clase que se pueda convertir. Por ejemplo, una propiedad que especifica double acepta valores del tipo single y los convierte a double. Además de las clases ya disponibles en MATLAB, puede utilizar sus propias clases como validadores de propiedades. Para clases definidas por el usuario, la validación de propiedades permite que una subclase del elemento class especificado pase sin errores, pero no convierte la subclase en la superclase.

  • {validators}: funciones de validación, especificadas como una lista separada por comas encerrada entre llaves, como mustBePositive y mustBeScalarOrEmpty. A diferencia de class, las funciones de validación no modifican los valores de las propiedades. Las funciones de validación provocan errores cuando los valores de las propiedades no coinciden con sus condiciones. Para obtener una lista de las funciones de validación, consulte Property Validation Functions. También puede definir sus propias funciones de validación.

  • defaultValue: los valores de propiedades predeterminados deben cumplir las reglas especificadas sobre tamaño, clase y validación. Un valor predeterminado también puede ser una expresión. Consulte Define Properties with Default Values para obtener más información sobre cómo evalúa MATLAB las expresiones de valores predeterminados.

Esta clase define una propiedad. El bloque de propiedades no tiene ningún atributo explícito definido, lo que equivale a definir un bloque de propiedades públicas. MyPublicData también debe ser un vector de dobles positivos y tiene un valor predeterminado de [1 1 1].

classdef ValidationExample
   properties
      MyPublicData (1,:) double {mustBePositive} = [1 1 1]
   end  
end

No es necesario utilizar todas las opciones de validación al mismo tiempo y diferentes propiedades del mismo bloque pueden utilizar distintas combinaciones de validadores. En este ejemplo, la propiedad RestrictedByClass solo utiliza validación de clases, mientras que RestrictedByFunction usa una función de validación y asigna un valor predeterminado.

classdef DifferentValidation
   properties
      RestrictedByClass uint32
      RestrictedByFunction {mustBeInteger} = 0
   end
end

Para obtener más información, consulte Property Class and Size Validation y Property Validation Functions.

Sintaxis de acceso a propiedades

La sintaxis de acceso a propiedades es como la sintaxis de campos de estructura de MATLAB. Por ejemplo, si obj es un objeto de una clase, puede obtener el valor de una propiedad haciendo referencia al nombre de la propiedad.

val = obj.PropertyName

Asigne valores a las propiedades colocando la referencia de propiedad a la izquierda del signo igual.

obj.PropertyName = val

Por ejemplo, cree una instancia de la clase ValidationExample y lea el valor de MyPublicData.

classdef ValidationExample
   properties
      MyPublicData (1,:) double {mustBePositive} = [1 1 1]
   end  
end
x = ValidationExample;
x.MyPublicData
ans =

     1     1     1

Asigne un nuevo valor a la propiedad que cumpla los validadores definidos para ella.

x.MyPublicData = [2 3 5 7];

Opcionalmente, puede definir métodos get y set a los que MATLAB llama automáticamente cuando se usa esta sintaxis de campos de estructura. Para obtener más información, consulte Property Get and Set Methods.

Hacer referencia a propiedades utilizando variables

MATLAB puede resolver un nombre de propiedad a partir de una variable string o char usando una expresión con este formato:

object.(PropertyNameVar)

PropertyNameVar es una variable que contiene el nombre de una propiedad de objeto válida. Utilice esta sintaxis cuando pase nombres de propiedades como argumentos. Por ejemplo, la función getPropValue devuelve el valor de la propiedad KeyType.

PropName = "KeyType";
function o = getPropValue(obj,PropName)
   o = obj.(PropName);
end

Consulte también

Temas