Apex 101

26 Out 2019 - Alison Souza

Apex é uma linguagem proprietária da Salesforce.

A principal motivação ao criar uma nova linguagem foi permitir que a mesma conseguisse realizar a manipulação e pesquisa de dados (SOQL, SOSL) ao mesmo tempo que criamos aplicações.

É uma linguagem orientada a objetos fortemente tipada que será executada apenas na nuvem.

Possui uma sintaxe semelhante ao Java. Em relação a sua execução, podemos fazer analogia com procedures de banco de dados.

Com uma conta de desenvolvedor e usando o Developer Console será possível praticar os conceitos abaixo.

Apex é case-insensitive.

Comentários

// comentário de uma linha
  
/*
  comentário
  de varias
  linhas
*/

Tipos

Variáveis

Integer m = 100;
Boolean shipmentDispatched = false;
Date ShipmentDate = date.today();
Long companyRevenue = 21474838973344648L;
Account objAccount = new Account (Name = 'Test Chemical');
String companyName = 'Abc International';

If

  if (place == 1) {
      medal_color = 'gold';
  } else if (place == 2) {
      medal_color = 'silver';
  } else if (place == 3) {
      medal_color = 'bronze';
  } else {
      medal_color = null;
  }

Loops

While

Integer count = 1;
  
do {
    System.debug(count);
    count++;
} while (count < 11);
  
Integer count = 1;
  
while (count < 11) {
    System.debug(count);
    count++;
}

For

// Tradicional
for (Integer i = 0, j = 0; i < 10; i++) {
    System.debug(i+1);
}
  
// Iteração de uma lista
Integer[] myInts = new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  
for (Integer i : myInts) {
    System.debug(i);
}
  
// Iteração de uma query SOQL
for (variable : [soql_query]) {
    code_block
}

Classes

Apex Classes são semelhantes às classes Java. Veja aqui diferenças para uma classe Java. Um dos benefícios das classes Apex é a reutilização de código. Os métodos de classe podem ser chamados por triggers ou outras classes. Há uma extensa documentação sobre a criação de classes, abaixo apenas um exemplo.

public class RedMarker {
    public Double computePrice() {
        return 1.5;
    }
}
  
RedMarker obj = new RedMarker();
Double price = obj.computePrice();

Veja também