Une autre façon de coder : La notation d’objet

Traduit automatiquement de Deepl

Les objets sont géniaux, tout le monde le dit. Outre leur merveilleuse flexibilité, ils sont incroyablement rapides. Vous pouvez rechercher dans des millions d’enregistrements en une fraction de seconde seulement. 4D v16 permet même d’ordonner les objets par leurs attributs et d’effectuer des calculs tels que la somme ou la moyenne.

Avec 4D v16 R4, le langage 4D a été radicalement amélioré pour rendre l’utilisation des objets beaucoup plus confortable – avec le support de la notation objet. Rapide, flexible, efficace et maintenant élégant !

Quelles sont les possibilités ?

Les objets du langage 4D peuvent être manipulés en utilisant la notation objet standard pour obtenir ou définir leurs valeurs. Avec la notation objet :

  • les propriétés des objets sont accessibles à l’aide du symbole « point » (par exemple, employee.name)
  • les éléments de la collection d’objets sont accessibles à l’aide de crochets (par exemple, rooms[2])
  • les sous-objets intégrés et les propriétés des sous-objets sont accessibles par une séquence de symboles (par exemple, employee.children[2].age).

Bonne nouvelle, maintenant vous avez un moyen de vous débarrasser de tous ces OB Get et OB SET dans votre code ! Et vous savez quoi ? L’exécution du code est 10 fois plus rapide avec la notation objet par rapport à OB Get/OB SET !

Exemples de notation d’objet

Disons que nous avons un objet $o contenant les informations suivantes :

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

Pour récupérer l’attribut « Firstname« , il faut écrire :

Avec la notation d’objet

C_TEXT($name)
$name :=$o.Firstname

Sans notation d’objet

C_TEXT($name)
$name :=OB Get($o; "Firstname")

Pour récupérer l’attribut « Name » du deuxième enfant, on écrit

Avec notation d’objet

C_TEXT($name)
$name :=$o.Child[1].Name

Sans notation d’objet

ARRAY OBJECT($aChild;0 )
C_TEXT ($name)
OB GET ARRAY ($o; "Enfant" ;$aChild)
$name :=OB GET($aChild{2} ; "Nom")

Pour ajouter un autre enfant, on écrit :

Avec la notation objet

$o.Child[2].Name:="Mike"
$o .Child[2].Age:=9

Sans notation d’objet

ARRAY OBJECT($aChild;0 )
C_OBJECT ($kid)
OB GET ARRAY ($o; "Child" ;$aChild)
OB SET ($kid; "Name" ; "Mike")
OB SET ($kid; "Age";9)
APPEND TO ARRAY ($aChild;$kid)
OB SET ARRAY ($o; "Child" ;$aChild)

En savoir plus sur les collections >

Pour ajouter une image dans un attribut d’objet, on écrit :

Avec la notation objet

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

Sans la notation d’objet

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

En savoir plus sur les images dans les objets >

Pour utiliser la notation par pointeur, on écrit :

Avec la notation d’objet

C_POINTER($p)
$p :=->$o
...
C_TEXT ($name)
$name :=$p->Prénom

Sans notation d’objet

C_POINTER($p)
$p :=->$o
...
C_TEXT ($name)
$name :=OB Get($p-> ; "Firstname")

Comment activer la notation objet ?

Pour pouvoir bénéficier de la notation d’objet, vous devez vous rendre sur la page « Compatibility Settings » dans la boîte de dialogue « Database Settings » et cliquer sur le bouton « Activate object notation » :

Il y a quelques conditions préalables avant d’activer la notation d’objet, mais nous vous aidons à vous préparer :

Préparez-vous à la notation d’objet >

Vanessa Talbot
- Product Owner -Vanessa Talbot a rejoint l'équipe du programme 4D en juin 2014. En tant que Product Owner, elle est chargée de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation des fonctionnalités livrées répond aux besoins des clients.Depuis son arrivée, elle a travaillé à la définition des fonctionnalités clés de 4D. Elle a travaillé sur la plupart des nouvelles fonctionnalités de multithreading préemptif et aussi sur un sujet très complexe : la nouvelle architecture pour les applications enginées. Vanessa est diplômée de Telecom Saint-Etienne. Elle a commencé sa carrière à l'Institut de Recherche Criminelle en tant que développeur pour le département audiovisuel. Elle a également travaillé dans les domaines des médias et du médical en tant qu'experte en support technique, en production ainsi qu'en documentation de nouvelles fonctionnalités.