Maîtriser les nouveaux concepts (J1 + J2)
Objectifs
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. A 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 bases exemples utilisées sont fournies, permettant au développeur de copier-coller directement les objets et méthodes dans les applications existantes.
- 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
Public : Développeurs 4D ou venant d'autres horizons.
Pré-requis : Bonne expérience du développement.