Apex - Métodos
Métodos de aula
Existem dois modificadores para Métodos de Classe no Apex - Público ou Protegido. O tipo de retorno é obrigatório para o método e se o método não retornar nada, você deve mencionar void como o tipo de retorno. Além disso, o corpo também é necessário para o método.
Syntax
[public | private | protected | global]
[override]
[static]
return_data_type method_name (input parameters) {
// Method body goes here
}
Explicação da sintaxe
Esses parâmetros mencionados entre colchetes são opcionais. No entanto, os seguintes componentes são essenciais -
- return_data_type
- method_name
Modificadores de acesso para métodos de classe
Usando modificadores de acesso, você pode especificar o nível de acesso para os métodos de classe. Por exemplo, o método Public estará acessível de qualquer lugar na classe e fora da classe. O método privado estará acessível apenas dentro da classe. Global será acessível por todas as classes Apex e pode ser exposto como método de serviço da web acessível por outras classes Apex.
Example
//Method definition and body
public static Integer getCalculatedValue () {
//do some calculation
myValue = myValue+10;
return myValue;
}
Este método tem o tipo de retorno Integer e não leva nenhum parâmetro.
Um método pode ter parâmetros conforme mostrado no exemplo a seguir -
// Method definition and body, this method takes parameter price which will then be used
// in method.
public static Integer getCalculatedValueViaPrice (Decimal price) {
// do some calculation
myValue = myValue+price;
return myValue;
}
Construtores de classe
Um construtor é um código que é chamado quando um objeto é criado a partir do blueprint da classe. Ele tem o mesmo nome da classe.
Não precisamos definir o construtor para cada classe, pois por padrão um construtor sem argumento é chamado. Construtores são úteis para inicialização de variáveis ou quando um processo deve ser executado no momento da inicialização da classe. Por exemplo, você gostaria de atribuir valores a certas variáveis inteiras como 0 quando a classe for chamada.
Example
// Class definition and body
public class MySampleApexClass2 {
public static Double myValue; // Class Member variable
public static String myString; // Class Member variable
public MySampleApexClass2 () {
myValue = 100; //initialized variable when class is called
}
public static Double getCalculatedValue () { // Method definition and body
// do some calculation
myValue = myValue+10;
return myValue;
}
public static Double getCalculatedValueViaPrice (Decimal price) {
// Method definition and body
// do some calculation
myValue = myValue+price; // Final Price would be 100+100=200.00
return myValue;
}
}
Você também pode chamar o método da classe por meio do construtor. Isso pode ser útil ao programar o Apex para o controlador de força visual. Quando o objeto de classe é criado, o construtor é chamado conforme mostrado abaixo -
// Class and constructor has been instantiated
MySampleApexClass2 objClass = new MySampleApexClass2();
Double FinalPrice = MySampleApexClass2.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);
Sobrecarregando Construtores
Os construtores podem estar sobrecarregados, ou seja, uma classe pode ter mais de um construtor definido com parâmetros diferentes.
Example
public class MySampleApexClass3 { // Class definition and body
public static Double myValue; // Class Member variable
public static String myString; // Class Member variable
public MySampleApexClass3 () {
myValue = 100; // initialized variable when class is called
System.debug('myValue variable with no Overaloading'+myValue);
}
public MySampleApexClass3 (Integer newPrice) { // Overloaded constructor
myValue = newPrice; // initialized variable when class is called
System.debug('myValue variable with Overaloading'+myValue);
}
public static Double getCalculatedValue () { // Method definition and body
// do some calculation
myValue = myValue+10;
return myValue;
}
public static Double getCalculatedValueViaPrice (Decimal price) {
// Method definition and body
// do some calculation
myValue = myValue+price;
return myValue;
}
}
Você pode executar esta classe como fizemos no exemplo anterior.
// Developer Console Code
MySampleApexClass3 objClass = new MySampleApexClass3();
Double FinalPrice = MySampleApexClass3.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);