Outra forma de codificação: Notação de objectos

Tradução automática de Deepl

Os objectos são óptimos, todos o dizem. Para além da sua maravilhosa flexibilidade, são incrivelmente rápidos. É possível pesquisar milhões de registos em apenas uma fracção de segundo. 4D v16 permite até encomendar por atributos de objectos, e fazer cálculos tais como Soma ou Média.

Com 4D v16 R4, a linguagem 4D foi drasticamente melhorada para tornar a utilização de objectos muito mais confortável – com o apoio da notação do objecto. Rápido, flexível, eficiente e agora elegante!

O que é possível?

Os objectos em linguagem 4D podem ser manuseados utilizando a notação padrão de objectos para obter ou definir os seus valores. Com a notação de objectos:

  • as propriedades dos objectos podem ser acedidas usando um símbolo de “ponto” (por exemplo, empregado.nome)
  • elementos de colecção de objectos podem ser acedidos usando parênteses rectos (por exemplo, salas[2])
  • os sub-objectos e as propriedades dos sub-objectos podem ser acedidos através de uma sequência de símbolos (por exemplo, empregado.crianças[2].idade).

Boas notícias, agora você tem um meio de se livrar de todos aqueles OB Get e OB SET no seu código! E sabe o quê? A execução do código é 10 vezes mais rápida com a notação do objecto em comparação com OB Get/OB SET utilização!

Exemplos de notação de objectos

Digamos que temos um $o objecto contendo as seguintes informações:

{
    "Lastname": "Doe",
    "Firstname": "John",
    "Avatar": "[object Picture]"
    "Child": [{ 
        "Name": "Susan", 
        "Age": 3
    } , { 
        "Name": "Bob", 
        "Age": 8 
    }] 
}

Para recuperar o “Firstname” atributo, escreve:

Com notação de objecto

C_TEXT($name)
$name :=$o.Primeiro nome

Sem notação de objecto

C_TEXT($name)
$name :=OB Get($o; "Nome próprio")

Para recuperar o atributo “Name” das segundas crianças, escreve:

Com notação de objecto

C_TEXT($name)
$name :=$o.Criança[1].Nome

Sem notação de objecto

ARRAY OBJECT($aChild;0)
C_TEXT ($name)
OB GET ARRAY ($o; "Criança";$aChild)
$name :=OB GET($aChild{2}; "Nome")

Para acrescentar outras crianças, escreve:

Com notação de objecto

$oCriança[2].Nome:="Mike"
$o .Criança[2].Idade:=9

Sem notação de objecto

ARRAY OBJECT($aChild;0)
C_OBJECT ($kid)
OB GET ARRAY ($o; "Criança";$aChild)
OB SET ($kid; "Nome"; "Mike")
OB SET ($kid; "Idade";9)
APPEND TO ARRAY ($aChild;$kid)
OB SET ARRAY ($o; "Criança";$aChild)

Leia mais sobre Colecções >

Para adicionar uma imagem num atributo de objecto, escreve-se:

Com notação de objecto

C_PICTURE($img)
READ PICTURE FILE
("img.jpg";$img )
$o .Avatar:=$img

Sem a notação de objecto

C_PICTURE($img )
READ PICTURE FILE ("img.jpg";$img )
OB SET ($o; "avatar";$img)

Leia mais sobre Fotos em Objectos >

Para utilizar a notação de ponteiro, escreve-se:

Com notação de objecto

C_POINTER($p)
$p :=->$o
...
C_TEXT ($name)
$name :=$p->Primeiro nome

Sem notação de objecto

C_POINTER($p)
$p :=->$o
...
C_TEXT ($name)
$name :=OB Get($p->; "Nome próprio")

Como é que eu activo a notação de objectos?

Para poder beneficiar da notação de objecto, deve ir à página de Definições de Compatibilidade na caixa de diálogo Definições de Base de Dados e clicar no botão “Activar notação de objecto”:

Existem alguns pré-requisitos antes de activar a notação de objecto, mas estamos a ajudá-lo a preparar-se:

Preparar para Notação de Objectos >

Vanessa Talbot
• Proprietário do produto - Vanessa Talbot entrou ao time 4D Program em Junho de 2014 como Proprietária do Produto e está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Desde sua chegada, trabalhou na definição de funcionalidades chaves em 4D. Trabalhou na maioria das novas funcionalidades multithread preemptivo e também em um tema muito complexo: a nova arquitetura para a aplicação engined. Vanessa é formada pela Telecom Saint-Etienne. Começou sua carreira no Instituto de Investigação Criminal como desenvolvedora do departamento audiovisual. Também trabalhou em meios de comunicação e no âmbito médico como especialista em assistência técnica, produção e documentação de novas funcionalidades.