FORMATION

LA PROGRAMMATION MODERNE DE 4D V17 (J1 + J2 + J3)

warning: file_get_contents(http://www.telize.com/geoip/54.80.93.19) [function.file-get-contents]: failed to open stream: HTTP request failed! in /var/www/www.4d.com/docs/includes/common.inc(1762) : eval()'d code on line 4.
3 jours

Cette formation s'adresse aux développeurs 4D ayant déjà une certaine expérience de la programmation, et qui désirent utiliser la pleine puissance de l'outil.

L'arrivée progressive des Objets en 4D v15 puis v16, suivie de la naissance d'un langage orienté objet change totalement la manière dont on peut penser à présent les développements 4D. Cela va bien plus loin que la notation à points ou l'apparition de nouveaux types de variables. L’introduction d’ORDA en v17 amène une toute nouvelle façon d’approcher la base de données, en mettant fin aux limitations du mode Classic, et en permettant de se libérer des concepts tels que Sélection courante et Enregistrement courant.

 

La programmation orientée Objet facilite le travail en équipe, la réutilisabilité du code et des objets d'interface, le débogage, et les tests. Elle est particulièrement adaptée au développement agile.

 

Avec les nouvelles versions de 4D, v15, v16, et surtout v17-ORDA, sont apparus de nouveaux outils et objets, extrêmement puissants, mais dont l'utilisation optimale nécessite souvent un changement dans les méthodes de programmation, afin d'en tirer le meilleur parti. Il est souvent difficile, pour un développeur, d'étudier à fond les évolutions du produit, et d'essayer les différentes options et les nouvelles techniques. Chaque développeur a souvent 'le nez dans le guidon' et continue d'appliquer les techniques acquises en fonction de ses expériences passées. Mais le monde change, et il change vite.

 

Le but est de montrer (à l'aide d'exemples pratiques) comment s'adapter aux nouvelles possibilités offertes par 4D.

 

Nous verrons en particulier : 

  • comment se servir des Objets Formulaires et/ou de leurs (nouvelles) propriétés, pour approcher la programmation orientée objet (OOP) de façon à accroître les possibilités de créer des outils indépendants des structures, complètement réutilisables, et simples à implémenter.
  • comment optimiser sa programmation pour utiliser la pleine puissance de ces nouveaux outils.
  • les pièges potentiels liés à la manipulation d'objets par référence, et comment les éviter simplement.
  • la structure interne et le fonctionnement précis des différents objets (nouveaux ou non), ainsi que les changements apportés à leur manipulation.
  • le passage des notions de Sélection courante et Enregistrement courant, aux Entités et Sélections d'entités, qui ouvrent des perspectives étonnantes sur la simplification du code et la rapidité d’accès.
  • les concepts liés aux différents niveaux de contextes, que ce soient de process, de composants, de formulaires, de sous-formulaires, etc., ainsi que les cascades d'événements et les moyens de communication entre ces contextes.
  • etc.

 

Nous évoquerons l'utilisation de langages standards (PHP, JavaScript) dans la programmation 4D, pour résoudre des problèmes rares ou accéder à des méthodes n'existant pas dans 4D.

 

Enfin, à chaque étape, nous expliquerons le Pourquoi, ce qui permet de choisir le Comment en fonction des besoins. Par exemple, combien coûte l'utilisation de pointeurs, est-il préférable d'utiliser des pages multiples ou bien des sous-formulaires, quel est le poids réel des objets, comment choisir les index, ou mieux utiliser le cache, etc.

 

Les développeurs venant d'autres horizons (PHP, JavaScript) y trouveront également les techniques nécessaires pour passer de leurs environnements habituels à 4D, tout en conservant des concepts analogues.

 

Les bases exemples utilisées sont fournies, permettant au développeur de copier-coller directement les objets et méthodes dans les applications existantes.

Jour 1 & 2 : Maîtriser les nouveaux concepts


- Introduction

Présentation rapide des modes Classic et ORDA

Pourquoi faut-il choisir ORDA ?

 

- Rapide rappel sur la structure interne des objets 4D en mode Classic

Enregistrements

Tables d'adresses

Ensembles et Clusters

Index

Sélections et Sélections Nommées

Objets volumineux sur disque (blobs, images, multimédia, objets, gros textes)


 - Les objets sont partout

Objets

Collections

Entités

Sélections d'entités

 

- Les objets 4D en mémoire

Refcounting

Objets directs et Références, et Références, et Références, et encore Références

Utilisation correcte des Pointeurs et des Références

Objets type JSON

Objets type Collections

Notions de Classes d'objets

 

Member Functions


- Les Objets pour doper votre code

Objets en programmation

Objets comme paramètres

Tableaux et fonctions de Hash

Tableaux associatifs

- Variables : Du Statique au Dynamique

Noms des Objets Formulaires (Widgets)

Widgets et sources de données

Callbacks

Concepts sur les contextes

La fonction Form : Objet ou fonction ?

Objet et Data Source

Utilisation du langage objet dans les Formulaires

Utilisation extensive des ListBoxes

 

- La programmation moderne de 4D

Approche de la programmation orientée objet (OOP) dans 4D

Les Données, encore les Données, toujours les Données...

Des Paramètres partout...

Optimiser la programmation

Optimiser la gestion des tableaux

Différences entre Collections et Tableaux d'Objets

Utilisation du langage objet (notation à points ou à crochets) et de ses subtilités

Chaînage des commandes

Utilisation des Member Functions

Programmation Indépendante de la structure

Objets réutilisables

 

Composants : Pourquoi et comment

Optimiser les recherches

 

 

Utilisation des Collections

 

- Concepts et Vocabulaire

DataStores et DataClasses

Entités et Enregistrements

Champs réels et Champs virtuels : les relations en tant qu'attributs

Conceptualiser les données en se basant sur de nouveaux paradigmes

 

- La structure des données : du "Schemaful" au "Schemaflex"

Objets en tant que champs

Gérer les champs à structure variable

Ajouter en quelques clics, des champs librement paramétrables par l'utilisateur

Recherches, tris, et utilisation de ces champs : Aujourd'hui et demain

 

Les pièges des structures de données de type Key-Value Store

 

- Des nombres aux noms

Comment passer doucement des numéros de tables, de champs, de process, d'enregistrements, à des identifiants sous forme de noms : Pourquoi et comment ?


- Du 32 bits au 64 bits

Pourquoi faut-il passer en 64 bits ?

Le nouveau gestionnaire de mémoire

Les problèmes liés aux ressources sur Mac et Windows : PICT, cicn, STR#

 

- Du CALL PROCESS au CALL FORM

Se débarrasser de l'événement Sur appel extérieur

Se débarrasser de l'événement Sur minuteur

Se débarrasser des Process de CallBack

Multiplier les fenêtres sans multiplier les process

 

- Des Process aux Workers

Similarités & différences entre Process et Worker

Avantages des Workers

 

- Du Coopératif au Préemptif

Se préparer au Multithreading v16

Programmation parallèle et asynchrone

Comprendre les contextes des process, des workers, des fenêtres, et des formulaires

Les techniques de Messaging, Slicing, Chunking, sans (trop) de casse-têtes

Comment survivre à l'absence de variables inter-process ?

Utilisation des Objets et Collections partagées

Utilisation de Storage

Se préparer aux futures évolutions

 

- Multi-User & Record Locking

Verrouillage des enregistrements ou verrouillage des entités

Analyse de la chaîne des références de l'entité au disque en passant par le cache

 

- Pessimstic vs Optimistic Locking

Un choix cornélien : Verrouillage optimiste ou pessimiste ? Ca dépend...

 

 

- Enhanced Optimistic Locking

Comment utiliser au mieux les nouvelles possibilités apportées par ORDA

 

Problèmes et solutions

 

- Questions diverses



Jour 3 : Introduction aux langages Objets, aux technologies web de 4D, à la programmation multibases et aux bases de données distribuées


Cette journée est plus spécifiquement consacrée à l'intégration des bases 4D dans l'environnement moderne qui comprend les réseaux, le Web et ses services, les bases distribuées, le Big Data, le Cloud, etc.


- Utilisation de PHP et Javascript dans 4D :

Pourquoi, Quand, et Comment

Exemples pratiques et simples

Utilisation de scripts PHP

Exemple simple de greffage de PHP sur 4D

Exemple simple de greffage de Javascript sur 4D

Introduction aux échanges de données avec 4D

 

- 4D, le Web, et les Web Area

Utilisation des services

 

Interface 'à la Web"


- Programmation Multi-Base avec 4D :

Pourquoi, Quand, et Comment

Ouvertures simultanées, gestion des conflits, conversions de données

Bases de données distribuées, analyse des distributions, effets de la redondance et de la dénormalisation

Résilience augmentée et Exigences des clients


- Introduction à l'accès à 4D par REST :

Portage rapide d'un accès à une application 4D sur le Web (Tablettes, smartphones)

Adaptation de la structure

Connexion REST

Appel des méthodes 4D

Gestion des sélections sur mobile

Gestion du multi-utilisateur (Optimistic et Pessimistic Locking)

4D pour iOS : Première approche

 

- Questions diverses

Prix H.T. : 1650 €

Durée :
3 jours


Public :

Développeurs 4D ou venant d'autres horizons.



Pré-requis :

Bonne expérience du développement.


Prochaine(s) session(s) :
Lieu : 4D SAS - Le Pecq

Formateur(s) :
  • Jean-Pierre Ribreau
Niveau de difficulténouveauManipulationPossible en intra