lunes, 10 de junio de 2024

Apex: un lenguaje de programación orientado a objetos

Apex es un lenguaje de programación orientado a objetos desarrollado por Salesforce para el desarrollo de aplicaciones en su plataforma de gestión de relaciones con clientes (CRM).

Características de Apex:

  1. Orientado a Objetos:

    • Apex es un lenguaje de programación orientado a objetos, lo que significa que permite a los desarrolladores definir clases, interfaces y métodos.
  2. Fuertemente Tipado:

    • Apex es un lenguaje fuertemente tipado, lo que significa que las variables deben declararse con un tipo de dato específico y no se permite cambiar el tipo una vez declarado.
  3. Sintaxis Similar a Java y C#:

    • La sintaxis de Apex es similar a la de Java y C#, lo que facilita la adopción para desarrolladores familiarizados con estos lenguajes.
  4. Integración Profunda con Salesforce:

    • Apex está diseñado para integrarse estrechamente con la plataforma Salesforce, permitiendo a los desarrolladores interactuar con la base de datos de Salesforce y otros servicios de la plataforma.
  5. Ejecución en la Nube:

    • El código Apex se ejecuta en la infraestructura de Salesforce, lo que significa que los desarrolladores no necesitan preocuparse por la gestión de servidores o la infraestructura subyacente.
  6. Eventos y Triggers:

    • Apex permite definir triggers, que son fragmentos de código que se ejecutan automáticamente en respuesta a eventos específicos en la base de datos de Salesforce, como inserciones, actualizaciones o eliminaciones de registros.

Usos Principales de Apex:

  1. Desarrollo de Aplicaciones Personalizadas:

    • Los desarrolladores pueden crear aplicaciones personalizadas que se ejecutan en la plataforma Salesforce, utilizando Apex para la lógica del negocio y Visualforce o Lightning Components para la interfaz de usuario.
  2. Automatización de Procesos:

    • Apex se utiliza para automatizar procesos de negocio complejos que no pueden ser manejados por las herramientas de automatización de Salesforce como Process Builder o Flows.
  3. Integración con Otros Sistemas:

    • Apex permite integrar Salesforce con otros sistemas y servicios a través de APIs web, lo que facilita la comunicación y la sincronización de datos entre diferentes plataformas.
  4. Manipulación de Datos:

    • Apex proporciona capacidades avanzadas para manipular datos en la base de datos de Salesforce, incluyendo la creación, lectura, actualización y eliminación de registros.

Ejemplo. Calcular el número de pulsaciones de una persona. Los datos de entrada serán:

  • Edad.
  • Peso y
  • Nombre.
public class HeartRateCalculator {
    // Método para calcular el número de pulsaciones por minuto
    public static Double calculateHeartRate(Integer age, Double weight) {
        // Aplicar la fórmula para calcular las pulsaciones
        Double heartRate = 210 - (0.5 * age) - (0.11 * weight);
        return heartRate;
    }
    
    // Método para ejecutar algunos cálculos de ejemplo
    public static void runExample() {
        // Datos de prueba
        Integer[] ages = new Integer[]{25, 30, 40, 35};
        Double[] weights = new Double[]{70.0, 60.0, 80.0, 55.0};
        String[] names = new String[]{"Juan", "Maria", "Pedro", "Ana"};
        
        // Iterar sobre los datos de prueba y calcular las pulsaciones
        for (Integer i = 0; i < ages.size(); i++) {
            Double heartRate = calculateHeartRate(ages[i], weights[i]);
            System.debug('Nombre: ' + names[i] + ', Edad: ' + ages[i] + ', Peso: ' + weights[i] + ', Pulsaciones: ' + heartRate);
        }
    }
}

A primera vista parece ser un código hecho en Java. Apex posee una sintaxis similar a ese lenguaje por lo que a los programadores Java no podría causarles mucha dificultad aprender a usarlo.

Tipos de Datos Primitivos

  1. Integer:

    • Representa números enteros. Ejemplo: Integer age = 25;
  2. Double:

    • Representa números de punto flotante de doble precisión. Ejemplo: Double price = 19.99;
  3. Long:

    • Representa números enteros de mayor tamaño que Integer. Ejemplo: Long distance = 123456789L;
  4. Decimal:

    • Representa números decimales de alta precisión. Útil para cálculos financieros. Ejemplo: Decimal salary = 12345.67;
  5. String:

    • Representa una cadena de caracteres. Ejemplo: String name = 'John Doe';
  6. Boolean:

    • Representa un valor de verdadero o falso. Ejemplo: Boolean isActive = true;
  7. Date:

    • Representa una fecha. Ejemplo: Date today = Date.today();
  8. Time:

    • Representa una hora sin fecha. Ejemplo: Time now = Time.now();
  9. Datetime:

    • Representa una fecha y una hora. Ejemplo: Datetime now = Datetime.now();
  10. ID:

    • Representa un identificador único de un registro en Salesforce. Ejemplo: ID recordId = '001D000000IRFMA';

Colecciones

List

List<String> names = new List<String>{'Alice', 'Bob', 'Charlie'};

Set

Set<Integer> uniqueNumbers = new Set<Integer>{1, 2, 3};

Map

Map<String, Integer> nameToAge = new Map<String, Integer>{'Alice' => 30, 'Bob' => 25};

sObject

Account acc = new Account(Name = 'Acme Corporation');

Enumerations (Enum)

public enum Weekdays {
    Monday, Tuesday, Wednesday, Thursday, Friday
}
Weekdays today = Weekdays.Monday;

Classes

public class Person {
    public String name;
    public Integer age;

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}
Person p = new Person('John Doe', 30);

Ejemplo. Uso de tipos en Apex.

public class Example {
    public static void runExample() {
        // Primitivos
        Integer age = 25;
        Double price = 19.99;
        String name = 'John Doe';
        Boolean isActive = true;
        Date today = Date.today();
        Time now = Time.now();
        Datetime currentTime = Datetime.now();
        ID recordId = '001D000000IRFMA';

        // Colecciones
        List<String> names = new List<String>{'Alice', 'Bob', 'Charlie'};
        Set<Integer> uniqueNumbers = new Set<Integer>{1, 2, 3};
        Map<String, Integer> nameToAge = new Map<String, Integer>{'Alice' => 30, 'Bob' => 25};

        // sObject
        Account acc = new Account(Name = 'Acme Corporation');

        // Enum
        public enum Weekdays {
            Monday, Tuesday, Wednesday, Thursday, Friday
        }
        Weekdays today = Weekdays.Monday;

        // Custom class
        public class Person {
            public String name;
            public Integer age;

            public Person(String name, Integer age) {
                this.name = name;
                this.age = age;
            }
        }
        Person p = new Person('John Doe', 30);

        // Debugging outputs
        System.debug('Age: ' + age);
        System.debug('Price: ' + price);
        System.debug('Name: ' + name);
        System.debug('Is Active: ' + isActive);
        System.debug('Today: ' + today);
        System.debug('Current Time: ' + currentTime);
        System.debug('Record ID: ' + recordId);
        System.debug('Names: ' + names);
        System.debug('Unique Numbers: ' + uniqueNumbers);
        System.debug('Name to Age Map: ' + nameToAge);
        System.debug('Account: ' + acc);
        System.debug('Today is: ' + today);
        System.debug('Person: ' + p.name + ', Age: ' + p.age);
    }
}

Esto solo es un vistazo al lenguaje, en próximas entregas continuaremos con el tema.

Enlaces:

https://www.salesforce.com/mx/

No hay comentarios:

Publicar un comentario