Al escribir clases de Apex debemos considerar ciertas implicancias. A continuación veremos algunas de ellas.
Una clase es una estructura lógica que envuelve funcionalidad en Apex. Además, contiene variables y métodos que se pueden utilizar para especificar el estado y comportamiento de los objetos.
Adicionalmente, las clases e interfaces de Salesforce siguen los principios de programación orientada a objetos y sintaxis del lenguaje de programación Java.
Clases e Interfaces de Apex
A continuación veremos algunas diferencias entre una clase de Apex y una Interfaz.
Clases de Apex | Interfaces | |
Sintaxis | El modificador de acceso, palabras clave y el nombre de la clase son obligatorios en la definición. | Se utiliza la palabra clave Interface para crear una definición de interfaz. Se utiliza la palabra clave implements para implementar una interfaz en una clase. |
Funcionalidad | Utiliza constructores, modificadores de acceso y modificadores de definición. Además puede crear métodos estáticos y no estáticos. | Implementa métodos basados en aplicaciones específicas. La clase implementada proporciona la definición del método. |
Casos de uso | Las clases de Apex se pueden utilizar para servicios web, envío de emails, validaciones complejas, procesos de negocios, lógica personalizada y operaciones batch. | Se implementa una lógica diferente para diferentes tipos de funcionalidad. Permite que los desarrolladores sean abstractos al utilizar objetos. |
¿Cuándo Escribir Clases de Apex?
Los siguientes casos de uso requieren de una clase de Apex:
- Modelos y Acciones: Cuando se crea un modelo de datos o se realizan acciones personalizadas en general.
- Clase de controlador: Para construir un controlador del lado del servidor para una Visualforce Page o un Lightning Web Component.
- Test Custom Mode: Para diseñar, construir y realizar pruebas unitarias.
- Test Data Factory: Al crear un componente reutilizable para la generación de datos de prueba.
- Trigger Handler: Es una lógica independiente de un negocio invocada por un trigger de Apex.
- Implementación de Interfaces: Implementa herencias utilizando una interfaz.
- Extensión de Clases: Implementa herencia al extender una clase virtual.
Definición de una Clase de Apex
Para definir una clase de Apex, debemos tener en cuenta las siguientes especificaciones:
- Nombre de la Clase: Una clase se define utilizando la palabra clave requerida class seguida del nombre de la clase.
- Modificador de acceso: Se requiere que una clase tenga un modificador de acceso (por ejemplo, public, global).
- Extends/Implements: Una clase puede extender otra, o implementar más interfaces.
- Modificador de definición: No se requiere el uso de modificadores de definiciones virtuales o abstractos en una definición de clase.
- Modos de Compartir: El modo de uso compartido de una clase se puede definir para determinar como se debe manejar las restricciones de acceso a los datos.
Constructor de una Clase:
- Un constructor es un código que se ejecuta automáticamente cuando se crea un objeto de una clase.
- Se utiliza para definir argumentos al instanciar un nuevo objeto.
- Pueden ser varios constructores con diferentes parámetros.
- Se puede crear un constructor sin argumentos.
- No tiene un tipo de retorno explícito incluyendo el tipo void.
Sharing Modes:
Apex se ejecuta en System Context de forma predeterminada. Es decir, en modo del sistema. Por lo tanto, permite tener acceso a todos los datos de la organización. No hay restricciones para los permisos de objetos, seguridad de acceso a campos ni a los sharing rules del usuario actual.
Los Sharing Modes se utilizan para definir las restricciones de acceso de datos de Apex.
- With Sharing: Asegura que la clase de Apex hará cumplir las reglas de uso compartido del usuario actual.
- Without Sharing: Garantiza que la clase de Apex no forzará las reglas de uso compartido del usuario actual.
- Inherited Sharing: Hereda la configuración de uso compartido de la clase que llama o depende de cómo se use la clase de Apex.
Algunas Cosas para Recordar:
- Las clases de Apex se pueden utilizar para sevicios web, envío de emails, validaciones complejas, procesos de negocio, lógica personalizada y operaciones batch.
- El código anónimo, de la consola anónima, siempre se ejecuta con los permisos completos del usuario actual, independientemente del modo de uso compartido que se define en una clase.
- Si no se declara ningún modo de uso compartido, no se aplicarán las reglas de uso compartido. Es decir, el modificador de acceso por default será without sharing.
- Si no se le asigna un valor a una variable, su valor predeterminado será nulo.
Más Información para Escribir Clases de Apex
- Create an Apex Class – Trailhead
- Apex Class Definition – Apex Developer Guide
- Extending a Class – Apex Developer Guide
- Class Methods – Apex Developer Guide
Para saber más sobre Salesforce, puedes visitar nuestro último post sobre Decorator Wire en Salesforce
[…] aprender más sobre Apex o Salesforce puedes visitar nuestro último post aquí: Cómo escribir clases de Apex en […]