Checkpoint del Módulo 5
Las once piezas de la programación orientada a objetos trabajando juntas en un sistema de comisiones, y tu primera clase guardada en una org real.
✓ En esta sub-lección
- 01Traducir cada concepto de la POO a su equivalente de Admin y de vuelta.
- 02Diseñar una pequeña jerarquía con interfaz, clase abstracta e hijas concretas.
- 03Guardar y ejecutar una clase en una Developer Org de verdad.
La nutria: ¿Te acuerdas? · Repaso de la lección 11
¿Qué diferencia hay entre un picklist restringido y un enum?
Con este módulo has cruzado la línea que separa escribir instrucciones de diseñar código. Todo lo que sigue en el curso (triggers, handlers, asíncrono, tests) está hecho de clases, y ahora ya sabes leerlas y escribirlas.
Lo que has aprendido, sub-lección a sub-lección
1 · Clases y objetos. Una clase es la definición de un objeto en Object Manager; una instancia es un registro. Los atributos son sus campos y los métodos sus acciones, con tipo de retorno, parámetros y return. new fabrica instancias y el punto entra en ellas.
2 · Referencias. Una variable de objeto guarda el enlace, no el objeto: dos variables pueden ser dos pestañas del mismo registro. Por eso un bucle o un método pueden cambiar registros, y por eso clone() existe. === pregunta si es el mismo objeto.
3 · Constructores. Los valores por defecto al pulsar New: mismo nombre que la clase, sin tipo de retorno, se ejecuta en cada new. Crea las listas vacías para que nada empiece en null. Si escribes uno con parámetros, el vacío desaparece.
4 · this. El $Record de la clase: this.level distingue el atributo del parámetro del mismo nombre, y this(…) encadena constructores para no repetir lógica. level = level; compila y no hace nada.
5 · Static. Lo de cada registro frente a lo de toda la org, como un campo frente a un Custom Setting. Los métodos estáticos se llaman con el nombre de la clase (ya usabas Date.today()) y no tienen this. En Apex, una variable estática vive una transacción.
6 · Access modifiers. Field-Level Security para el código: private (por defecto), protected, public y global. Las propiedades { get; private set; } dejan leer sin dejar escribir, y los métodos que validan son las reglas de validación de tu clase.
7 · Herencia. extends da a la hija todo lo del padre, como los campos estándar que todo objeto trae de serie. En Apex el padre tiene que ser virtual o abstract, la hija llama a super(…) en la primera línea y solo hay un padre. Hereda solo si «es un».
8 · virtual, abstract y override. virtual permite cambiar, abstract obliga a implementar, override es la hija haciéndolo a su manera, y super.método() amplía en vez de sustituir. Una clase abstracta, como Activity, no se instancia.
9 · Sobrecarga y sobrescritura. Sobrecarga: mismo nombre y distintos parámetros en una clase, elegido al compilar. Sobrescritura: mismos parámetros en una hija, elegida al ejecutar por el objeto real.
10 · Interfaces y polimorfismo. Un contrato de firmas (como Schedulable para aparecer en Schedule Apex) que cualquier clase puede cumplir, varias a la vez. Una lista de objetos distintos con el mismo contrato se recorre igual, y añadir uno nuevo no toca el bucle.
11 · Clases internas y enums. Un enum es un picklist restringido que vigila el compilador; en un switch, sus when van sin prefijo. Una clase interna agrupa lo que solo sirve a su clase, y el wrapper junta datos de varios registros en un objeto a medida.
EL NEGOCIO PIDE… ·aciertos 0/0
Que ningún plan de soporte pueda existir sin su fecha de inicio.
Paso 1 de 8
Elige la estructura que usarías.
Ahora en tu Developer Org
Hasta aquí el curso ha validado tu código leyéndolo. A partir de este módulo también vas a guardarlo en Salesforce, que es donde se aprende a leer errores de verdad. Solo necesitas una Developer Edition gratuita, que no caduca.
- Crea la org en developer.salesforce.com/signup (si ya tienes una de Trailhead, también sirve).
- Setup → Apex Classes → New. Pega solo una clase (por ejemplo la PricingUtils de la lección 5) y pulsa Save. Si hay un error, Salesforce te dice la línea: es el compilador que llevas cinco módulos imaginando.
- Abre la Developer Console (menú del engranaje) → Debug → Open Execute Anonymous Window. Pega el código de uso, marca Open Log y pulsa Execute.
- En el log, marca Debug Only: ahí están tus System.debug. Ese es el resultado real, calculado por Salesforce.
El mapa completo: POO en lenguaje de Admin
| Concepto | Lo que ya conocías | Para qué lo usarás |
|---|---|---|
| Clase / objeto | Objeto de Object Manager / registro | Todo el código a partir de aquí |
| Referencia | El mismo contacto en dos related lists | Cambiar registros dentro de bucles y servicios |
| Constructor | Acción rápida con valores predefinidos | Objetos que nacen válidos |
| this | $Record en un flow | Constructores y clases de datos de prueba (M10) |
| static | Custom Setting de toda la org | Servicios y guardias de triggers (M7) |
| private / get; private set; | Field-Level Security y reglas de validación | Clases que no se pueden usar mal |
| Herencia / abstract | Activity → Task y Event | Frameworks de triggers (M7) |
| Interfaz | El contrato de un subflow | Schedulable, Queueable, Batchable (M9) |
| Enum / wrapper | Picklist restringido / fila de informe | Pantallas y resultados de servicios |
La nutria: ¿Y por qué no un Flow? Porque las comisiones van a cambiar