100% ont trouvé ce document utile (1 vote)
95 vues42 pages

Introduction à WinDev et WLangage

WinDev est un environnement de développement intégré (IDE) conçu par PC SOFT pour le développement rapide d'applications (RAD) sur diverses plateformes. Il utilise le WLangage, un langage de programmation orienté lisibilité, et intègre une base de données HFSQL pour une gestion efficace des données. WinDev permet de créer des applications de bureau, web et mobiles tout en offrant des outils et éditeurs spécialisés pour faciliter le processus de développement.

Transféré par

awamiekountou
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
95 vues42 pages

Introduction à WinDev et WLangage

WinDev est un environnement de développement intégré (IDE) conçu par PC SOFT pour le développement rapide d'applications (RAD) sur diverses plateformes. Il utilise le WLangage, un langage de programmation orienté lisibilité, et intègre une base de données HFSQL pour une gestion efficace des données. WinDev permet de créer des applications de bureau, web et mobiles tout en offrant des outils et éditeurs spécialisés pour faciliter le processus de développement.

Transféré par

awamiekountou
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

WINDEV

P a g e 1 | 42
Table de matière

I : Introduction à l’environnement WinDev

• 1.1 Présentation de WinDev et de PC SOFT

• 1.2 Caractéristiques principales de WinDev

• 1.3 Vue d'ensemble de l'IDE WinDev

• 1.4 Principes de base du RAD (Développement Rapide d'Applications)

• 1.5 Comparaison entre Java et WLangage

II : Bases du WLangage

• 2.1 Syntaxe générale et conventions

• 2.2 Déclaration de variables et types de données

• 2.3 Structures conditionnelles et boucles

• 2.4 Fonctions et procédures

• 2.5 Tableaux, chaînes, dates et manipulations avancées

• 2.6 Le système de nommage WinDev

III : Programmation Orientée Objet en WLangage

• 3.1 Introduction à l'objet en WLangage

• 3.2 Création et utilisation de classes

• 3.3 Héritage et encapsulation

• 3.4 Constructeurs, destructeurs, propriétés, méthodes

• 3.5 Interfaces et polymorphisme

IV : Manipulation des fichiers de données (HFSQL)

• 4.1 Introduction à HFSQL (local et client/serveur)

• 4.2 Création de l’analyse (fichiers de données, liaisons, clés)

• 4.3 Fonctions de gestion des fichiers de données

• 4.4 Requêtes avec le langage SQL et l'éditeur de requêtes


P a g e 2 | 42
• 4.5 Relations entre fichiers et intégrité référentielle

• 4.6 Transactions et gestion d’erreurs

V : Interfaces Graphiques et Composants Visuels

• 5.1 Présentation de l’éditeur de fenêtres

• 5.2 Ajout et configuration des contrôles (boutons, zones de texte, combo, tables, etc.)

• 5.3 Gestion des événements (clic, focus, etc.)

• 5.4 Liaisons entre l’interface et les fichiers de données

• 5.5 Styles, agencements et ergonomie (UX/UI)

• 5.6 Utilisation des modèles de fenêtres

VI : Gestion de projet et architecture d’une application WinDev

• 6.1 Structure d’un projet WinDev

• 6.2 Navigation entre fenêtres

• 6.3 Gestion des paramètres globaux et locaux

• 6.4 Modularité et réutilisabilité du code

• 6.5 Exportation, exécutable et installation

P a g e 3 | 42
I : INTRODUCTION A L’ENVIRONNEMENT WINDEV

Objectifs :

• Comprendre ce qu’est WinDev.

• Connaître l’historique et les objectifs de l’éditeur PC SOFT.

• Identifier les atouts de l’environnement WinDev dans le développement d’applications.

1.1.1 Qu’est-ce que WinDev ?

WinDev est un environnement de développement intégré (IDE) édité par PC SOFT, conçu pour
faciliter le développement rapide d’applications (RAD). Il permet de créer des applications :

• de bureau (desktop),

• client/serveur,

• et multi-plateformes (Windows, Linux, etc.).

Trois produits complémentaires de PC SOFT :

Produit Description

WinDev Développement d’applications Windows / desktop.

WebDev Développement d’applications web responsives.

WinDev Mobile Développement d'applications mobiles (Android, iOS).

1.1.2 Qui est PC SOFT ?

• PC SOFT est une entreprise française créée en 1984, spécialisée dans les outils de
développement logiciel.

• Elle est réputée pour fournir des environnements puissants et productifs, adaptés aux
entreprises de toutes tailles.

• Le siège est basé à Montpellier (France).

• PC SOFT développe tous ses outils en interne, avec une grande attention portée à la
compatibilité ascendante (un projet développé avec une ancienne version reste
fonctionnel dans une version récente).

1.1.3 Objectifs et philosophie de WinDev

P a g e 4 | 42
WinDev a été conçu dans une logique productiviste :

• Créer plus rapidement des applications avec moins de code à écrire.

• Offrir un IDE tout-en-un : base de données, éditeur d’interface, outils de débogage,


générateur de documentation.

• Approche déclarative et événementielle : le développeur conçoit l’interface et


rattache des événements (clic, changement de valeur, etc.) à du code en WLangage.

Remarque: comparé à Java, où il faut combiner plusieurs outils (IDE, base de données,
framework, etc.), WinDev offre une solution intégrée et homogène.

1.1.4 À quoi sert WinDev ?

WinDev est utilisé pour :

• Développer des ERP (Enterprise Resource Planning ou, en français, Planification des
Ressources de l'Entreprise : système de gestion intégré qui centralise les données et les
processus d'une entreprise pour optimiser sa gestion globale), CRM (CRM signifie
Customer Relationship Management ou, en français, Gestion de la Relation Client. C'est
un système qui vise à optimiser la relation entre une entreprise et ses clients en
centralisant les données client et en facilitant le suivi commercial, marketing et service
client), logiciels de facturation, gestions de stock, RH, etc.

• Gérer des bases de données locales ou distantes (HFSQL, SQL Server, Oracle…).

• Générer rapidement des interfaces utilisateur.

• Prototyper rapidement des applications et les livrer en production.

1.1.5 Quelques caractéristiques clés

• WLangage : un langage de programmation puissant, proche du langage naturel.

• HFSQL : système de base de données natif, gratuit et performant.

• RAD / SCHEMA RAD : permet de générer automatiquement des fenêtres (CRUD) à


partir des fichiers de données.

• Multibase : supporte MySQL, PostgreSQL, Oracle, SQL Server, etc.

• Composants visuels riches : tables, champs image, onglets, tableaux croisés, etc.

P a g e 5 | 42
1.2 Caractéristiques principales de WinDev

1.2.1 WinDev, un environnement RAD (Rapid Application Development)

WinDev est avant tout un outil RAD, c’est-à-dire :

• Conçu pour réduire drastiquement le temps de développement.

• Fournit des assistants intelligents, des modèles, des gabarits et des composants prêts
à l’emploi.

• Génère du code automatiquement (code de liaison, formulaires CRUD, etc.).

• Permet une conception rapide d’IHM, de traitements, et de gestion de données.

Exemple : en quelques clics, on peut créer une fiche client avec ajout, modification,
suppression, recherche, impression et exportation.

1.2.2 L’intégration native de la base de données HFSQL

HFSQL est :

• Une base de données relationnelle propriétaire, gratuite, livrée avec WinDev.

• Disponible en version locale (monoposte) ou Client/Serveur.

• Capable de gérer plusieurs centaines de connexions simultanées.

• Compatible avec les langages SQL, mais aussi avec les fonctions WLangage (ex. :
HAjoute, HModifie, HRecherchePremier).

Les requêtes peuvent être écrites en SQL standard ou à l’aide de l’éditeur visuel intégré.

1.2.3 Le WLangage (WL)

Le WLangage est :

• Un langage propriétaire de haut niveau utilisé pour écrire le code dans WinDev.

• Inspiré des langages procéduraux et objets.

• Orienté lisibilité (syntaxe proche du français).

• Multimode : procédural, événementiel, objet.

Exemples :

SI [Link] = "" ALORS


Info("Le nom du client est obligatoire")

P a g e 6 | 42
FIN

POUR i = 1 À 10
TableAjouteLigne(TABLE_Produits, i, "Produit " + i)
FIN

1.2.4 Editeurs et outils intégrés dans WinDev

Outil Fonction principale

Éditeur de code Coloration syntaxique, suggestions, auto-


complétion.

Éditeur de fenêtres Création d’interfaces utilisateur glisser-


déposer.

Éditeur d’analyse Modélisation de la base de données (tables,


relations).

Éditeur de requêtes Construction visuelle de requêtes SQL.

Centre de contrôle Suivi des tâches, bugs, versions.

Débogueur intégré Points d’arrêt, pas à pas, surveillance des


variables.

Centre de tests Tests unitaires et régression.


automatiques

1.2.5 Richesse des composants graphiques

WinDev propose une large panoplie de composants prêts à l'emploi :

• Champs de saisie, boutons, tables, listes, onglets.

• Zones répétées, champs image, graphe, tableaux croisés dynamiques.

• Impression, exportation PDF, envoi d’e-mails, lecture de fichiers Excel.

Tous ces éléments peuvent être liés dynamiquement à des données sans écrire
beaucoup de code.

1.2.6 Multibase et interopérabilité

WinDev ne se limite pas à HFSQL. Il permet la connexion à :

P a g e 7 | 42
• MySQL, PostgreSQL, SQL Server, Oracle, DB2, etc.

• Webservices REST et SOAP.

• API externes (JSON, XML, HTTP, FTP).

• Applications Java, .NET, et C++ via DLL ou appels système.

1.2.7 Multiplateforme (WinDev, WebDev, WinDev Mobile)

Un projet WinDev peut être :

• Porté vers WebDev pour créer une version web de l’application.

• Ou vers WinDev Mobile pour une version Android/iOS.

PC SOFT met en avant sa technologie "Réutilisation de code" qui permet de partager


une grande partie du code entre les plateformes.

1.2.8 Autres fonctionnalités notables

• Impression par code ou par état.

• Générateur de documentation automatique.

• Gestion des utilisateurs et des droits.

• Composants internes et composants externes réutilisables.

• Langues multiples et traduction automatique de l’interface.

Avantages concrets pour par rapport à Java

Java + Outils divers WinDev (tout-en-un)

Eclipse / IntelliJ + MySQL + Apache Un seul IDE intégré

JDBC + Swing / JavaFX IHM glisser-déposer + liaison directe

Fichiers de configuration Gestion intégrée des connexions

Écriture manuelle de CRUD Génération automatique via RAD

1.3 Vue d'ensemble de l'IDE WinDev

P a g e 8 | 42
1.3.1 Qu’est-ce qu’un IDE ?

Un IDE (Integrated Development Environment) est un environnement unifié qui regroupe


tous les outils nécessaires au développement d’une application. WinDev propose un IDE très
complet, adapté aussi bien aux débutants qu’aux développeurs expérimentés.

1.3.2 Écran d’accueil de WinDev

Dès l’ouverture de WinDev, on peu voir :

• L’écran de démarrage avec :

o La création d’un nouveau projet.

o L’ouverture d’un projet existant.

o Les modèles d’exemples fournis.

o Un accès à l’actualité de PC SOFT (mises à jour, tutoriels...).

1.3.3 Les principales fenêtres de l’IDE

Zone Rôle

Ruban (en haut) Accès rapide aux outils (création, sauvegarde, exécution, test, etc.).

Explorateur de projet Vue arborescente des éléments du projet (fenêtres, requêtes,


classes…).

Éditeur central Zone principale où s’ouvrent les éditeurs de code, d’analyse, etc.

Volet d’assistant / Informations contextuelles et aides automatiques.


Aide

Barre d’état (en bas) Infos sur l’environnement, les erreurs, les raccourcis, etc.

1.3.4 Les éditeurs spécialisés dans WinDev

WinDev dispose de plusieurs éditeurs visuels intégrés permettant de développer chaque


aspect d’une application :

Éditeur Utilité

Éditeur de fenêtres Création d’interfaces graphiques (IHM) avec champs, boutons,


onglets, etc.

P a g e 9 | 42
Éditeur d’analyse Conception de la base de données HFSQL (tables, relations,
index…).

Éditeur de requêtes Construction visuelle ou SQL des requêtes.

Éditeur d’états Création de documents imprimables (factures, états financiers,


etc.).

Éditeur de code Rédaction du code en WLangage (événements, procédures,


traitements).

Éditeur de classes Modélisation orientée objet avec propriétés et méthodes.

Éditeur de Création de blocs de fonctionnalités réutilisables (composants


composants internes).

1.3.5 Navigation entre les éditeurs

Tous les éditeurs sont synchronisés :

• Cliquer sur une table dans l’analyse permet de générer automatiquement les fenêtres.

• Double-cliquer sur un bouton dans une fenêtre ouvre l’événement associé dans
l’éditeur de code.

Par exemple, si vous créez une table Client, WinDev peut générer automatiquement les
fenêtres :

• FEN_ClientAjout

• FEN_ClientModification

• FEN_ClientListe

1.3.6 Outils d’aide à la productivité

• Modèles prédéfinis : pour interfaces, tables, boutons, etc.

• Assistant de projet : création guidée de projet (Desktop, Web, Mobile).

• Auto-complétion : du code WLangage avec documentation.

• Correcteur de code : suggestions en temps réel.

• Débogueur : pour tester, surveiller, corriger en pas à pas.

1.3.7 Personnalisation de l’environnement


P a g e 10 | 42
• Possibilité de personnaliser les raccourcis clavier.

• Organisation des fenêtres (ancrage, flottant).

• Mode sombre / clair.

• Enregistrement de dispositions selon les préférences de chaque utilisateur.

Résumé

Ce que l’on a vu… Ce qu’il faut retenir…

Vue d’ensemble de l’environnement de L’IDE est centralisé, visuel, et multi-éditeur.


WinDev

Éditeurs visuels puissants Chaque aspect du développement a son outil


dédié.

Synchronisation des éléments Modification d’un composant se répercute dans


tout le projet.

Assistance permanente WinDev accompagne le développeur dans


chaque étape.

1.4 – Types de projets réalisables avec WinDev

Objectifs :

• Comprendre l’étendue des applications qu’on peut concevoir avec WinDev.

• Savoir distinguer les types de projets selon la plateforme cible.

• Identifier les spécificités de chaque type de projet dans l’environnement WinDev.

1.4.1 Un outil multiplateforme puissant

WinDev permet de développer des applications pour plusieurs environnements, à partir d’un
même projet ou en adaptant selon les besoins :

Plateforme Environnement cible

WinDev Applications desktop (Windows)

WinDev Mobile Applications mobiles (Android, iOS)

P a g e 11 | 42
WebDev Applications web (Intranet/Internet)

Tous ces environnements partagent le WLangage, facilitant le passage d’un projet à l’autre.

1.4.2 Types de projets dans WinDev

1. Application de gestion

• Gestion commerciale, comptabilité, facturation, stock, ressources humaines, etc.

• Forte intégration avec HFSQL, SQL Server, MySQL, Oracle…

• Utilisation fréquente des formulaires, états, tables, fenêtres de saisie.

2. Applications métiers personnalisées

• Logiciel d’analyse médicale, planification logistique, suivi scolaire, etc.

• Interface adaptée à un métier ou une entreprise.

3. Applications connectées

• Utilisation des webservices REST/SOAP.

• Intégration avec des API tierces : Google Maps, PayPal, services d’envoi SMS, etc.

• Synchronisation entre application mobile et base centrale.

4. Applications multi-utilisateurs / client-serveur

• Gestion des accès simultanés à une base (HFSQL Client/Serveur).

• Possibilité de travailler en réseau local ou distant.

5. Applications en mode SaaS

• Déploiement sur le cloud, hébergement WebDev, architecture 3-tiers.

6. Applications mobiles (WinDev Mobile)

• Saisie de données terrain, inventaire, fiche client, géolocalisation, etc.

• Déploiement sur smartphone ou tablette, avec ou sans connexion internet.

7. Sites Web dynamiques (WebDev)

• Site e-commerce, portail client, extranet, interfaces web internes.

• Support des formulaires, tables interactives, paiements en ligne, etc.

1.4.3 Un seul langage pour tous les projets


P a g e 12 | 42
Le WLangage (WLanguage) est commun à tous les environnements :

• Pas besoin de changer de langage pour le Web, le Mobile ou le Desktop.

• Réutilisation des procédures, classes, et requêtes d’un projet à l’autre.

• Simplifie la maintenance et le travail en équipe.

1.4.4 WinDev dans les projets en entreprise

Grâce à sa rapidité de développement et à ses outils intégrés, WinDev est souvent utilisé dans
les contextes suivants :

• Prototypage rapide d’interface (RAD).

• Migration d’une base Access ou Excel vers un logiciel complet.

• Développement d’un ERP interne à une PME.

• Numérisation de dossiers patients, bulletins scolaires, ou fiches de production.

Résumé du point 1.4

Type d’application Description rapide

Desktop Application Windows complète et professionnelle.

Web Site web dynamique ou portail en ligne.

Mobile Application Android/iOS pour tablette ou smartphone.

Multi-utilisateur Client-serveur, avec gestion de connexions multiples.

Connectée à des API Webservices, API REST, synchronisation de données.

Environnement partagé Code réutilisable sur différentes plateformes.

P a g e 13 | 42
1.5 – Comparaison entre Java et WLangage

Objectifs pédagogiques :

• Identifier les ressemblances et différences entre Java et le WLangage.

• Faciliter la transition avec des compétences de base en java.

• Mettre en lumière les avantages du développement rapide d'applications avec WinDev.

1.5.1 Présentation générale des deux langages

Critère Java WLangage (WinDev)

Paradigme Orienté objet Principalement procédural + objet

Compilé/interprété Compilé en bytecode (JVM) Compilé nativement ou en code interprété

Type de typage Fort, statique Faible à moyen, dynamique ou déclaré

Portabilité Très portable (JVM) Lié à l’environnement (WinDev, WebDev…)

Développement général, Développement rapide d'applications


Usage principal
web, mobile métier

Interface graphique RAD intégrée (éditeur


Interface graphique Swing, JavaFX
visuel)

Base de données JDBC, ORM (Hibernate) HFSQL natif, SQL intégré, très assisté

1.5.2 Syntaxe : comparaison directe

➤ Déclaration de variables

int age = 25;


String nom = "Jean";

WLangage :

age est un entier = 25


nom est une chaîne = "Jean"

En WLangage, on utilise une syntaxe proche du langage naturel. Pas de point-virgule.

➤ Conditions

P a g e 14 | 42
Java :

if (age > 18) {


[Link]("Majeur");
}

WLangage :

SI age > 18 ALORS


Info("Majeur")
FIN

➤ Boucles

Java (for) :

for (int i = 0; i < 5; i++) {


[Link](i);
}

WLangage :

POUR i = 1 À 5
Info(i)
FIN

➤ Procédure / méthode

Java :

public int addition(int a, int b) {


return a + b;
}

WLangage :

PROCÉDURE Addition(a est un entier, b est un entier)


RETOURNE a + b
FIN

1.5.3 Gestion des objets

Java :

class Personne {

P a g e 15 | 42
String nom;
void sePresenter() {
[Link]("Je suis " + nom);
}
}

WLangage :

CLASSE Personne
nom est une chaîne
PROCÉDURE sePresenter()
Info("Je suis " + nom)
FIN
FIN

Le concept d’objet est similaire mais plus souple dans WLangage, avec moins de rigueur sur
l'encapsulation et les types.

1.5.4 Gestion des bases de données

Java (avec JDBC) :

Connection conn = [Link](url, user, pwd);


Statement stmt = [Link]();
ResultSet rs = [Link]("SELECT * FROM clients");

WLangage (avec HFSQL ou SQL) :

SI HLitPremier(Client) ALORS
TANTQUE PAS HEnDehors()
Info([Link])
HLitSuivant(Client)
FIN
FIN

WinDev gère nativement les fichiers de données et rend le parcours des enregistrements très
simple.

1.5.5 Interfaces graphiques

Java :

P a g e 16 | 42
• Utilisation de JavaFX ou Swing

• Interface manuelle ou avec des outils tiers comme SceneBuilder.

WinDev :

• Interface graphique RAD (développement rapide d'applications).

• Drag-and-drop pour ajouter : champs, boutons, tables, onglets, graphiques, etc.

• Code des événements associé automatiquement à chaque composant.

1.5.6 Points forts de WLangage par rapport à Java

Atout de WLangage Explication

Simplicité Syntaxe naturelle, accessible et rapide à apprendre.

Développement rapide Interface graphique intégrée, composants prêts à l'emploi.

Accès base de données facilité Requêtes graphiques, navigation simple, HFSQL


performant.

Moins de code à écrire Beaucoup de traitements sont automatisés.

Tout intégré Éditeur de fenêtres, états, requêtes, analyse, déploiement.

1.5.7 Limites de WLangage comparé à Java

Limite de WLangage Explication

Portabilité limitée Moins universel que Java (cible spécifique : WinDev,


WebDev)

Moins adapté aux architectures Java reste préféré pour les applications industrielles
complexes lourdes

Moins documenté en open source Communauté plus restreinte que celle de Java

Conclusion

Le WLangage n’a pas pour vocation de remplacer Java dans tous les contextes. Il est conçu
pour accélérer le développement d'applications métier, avec un fort accent sur la
productivité. Pour un développeur Java, le passage à WLangage est rapide, et les bases de la
programmation orientée objet restent valables.

P a g e 17 | 42
P a g e 18 | 42
II : Bases du WLangage

• 2.1 Syntaxe générale et conventions

Objectifs pédagogiques :

• Comprendre la structure de base du WLangage.

• Appliquer les conventions de nommage propres à WinDev.

• Écrire des instructions simples en respectant la syntaxe standard.

1. Présentation générale du WLangage

Le WLangage est le langage de programmation utilisé dans WinDev, WebDev et WinDev


Mobile. C’est un langage de 5e génération (L5G), orienté vers la productivité, avec une syntaxe
proche du langage naturel (en français ou anglais).

2. Caractéristiques de base

• Pas de point-virgule ; requis.

• Pas de parenthèses obligatoires pour les conditions ou boucles.

• L’indentation est recommandée pour la lisibilité.

• Langage sensible au type mais pas à la casse (MaVariable = mavariable).

3. Déclaration de variables

age est un entier

nom est une chaîne

pi est un réel = 3.14

Remarque : le mot-clé est un indique le type de la variable.

Types de base courants :

Type WLangage Description

entier Nombres entiers

réel Nombres décimaux

chaîne Texte

P a g e 19 | 42
booléen Vrai ou Faux

date, heure Dates et heures

objet Objets de classes personnalisées

4. Structures de contrôle

➤ Condition SI

SI age >= 18 ALORS

Info("Majeur")

SINON

Info("Mineur")

FIN

➤ Boucle POUR

POUR i = 1 À 10

Info(i)

FIN

➤ Boucle TANTQUE

TANTQUE compteur < 5

compteur += 1

FIN

5. Procédures et Fonctions

PROCÉDURE DireBonjour(nom est une chaîne)

Info("Bonjour " + nom)

FIN

6. Conventions de nommage dans WinDev

WinDev utilise un système de préfixes pour nommer les éléments de l'interface, facilitant leur
identification.

P a g e 20 | 42
Élément Préfixe recommandé Exemple

Bouton BTN_ BTN_Valider

Zone de saisie EDT_ EDT_Nom

Libellé (Label) LIB_ LIB_Message

Combo (liste déroulante) COMBO_ COMBO_Pays

Table TABLE_ TABLE_Commandes

Image IMG_ IMG_Logo

Interrupteur SWT_ SWT_Actif

Case à cocher CHK_ CHK_Terms

Ce système n’est pas obligatoire mais fortement recommandé pour maintenir une application
claire et maintenable.

7. Commentaires

// Ceci est un commentaire sur une ligne

/*

Ceci est un commentaire

sur plusieurs lignes

*/

8. Bonnes pratiques de codage

• Utiliser des noms explicites : EDT_NomClient au lieu de EDT1.

• Indenter correctement les blocs de code.

• Documenter les procédures.

• Regrouper le code par section : Déclarations, Initialisation, Traitement, Affichage.

Exemple complet :
P a g e 21 | 42
// Déclaration

nom est une chaîne = "Alice"

age est un entier = 22

// Condition

SI age >= 18 ALORS

Info(nom + " est majeur(e)")

SINON

Info(nom + " est mineur(e)")

FIN

P a g e 22 | 42
III : Programmation Orientée Objet en WLangage
3.1 – Introduction à l’objet en WLangage

Objectifs pédagogiques :

• Comprendre les principes de la programmation orientée objet dans le contexte de


WinDev.

• Découvrir la syntaxe propre au WLangage pour définir et manipuler des objets.

• Appréhender les concepts de base : classe, objet, attribut, méthode.

1. Qu’est-ce que la POO en WLangage ?

La programmation orientée objet (POO) permet de structurer un programme autour d’entités


logiques appelées objets. Un objet est une instance d’une classe, qui peut contenir :

• des attributs (variables ou propriétés),

• des méthodes (fonctions ou procédures membres),

• des constructeurs,

• et parfois des événements ou des méthodes héritées.

WLangage prend en charge les principaux concepts objets : encapsulation, héritage,


polymorphisme, surcharge, etc.

2. Syntaxe de base : Déclaration d’une classe

CLASSE Voiture

// Attributs

marque est une chaîne

modele est une chaîne

annee est un entier

// Méthodes

PROCÉDURE AfficherInfos()

Info("Marque : " + marque)

Info("Modèle : " + modele)

P a g e 23 | 42
Info("Année : " + annee)

FIN

FIN

Chaque classe est définie avec le mot-clé CLASSE et terminée par FIN.

3. Création et utilisation d’un objet

maVoiture est un objet Voiture

maVoiture:marque = "Toyota"

maVoiture:modele = "Corolla"

maVoiture:annee = 2020

maVoiture:AfficherInfos()

Remarquez l'utilisation des deux-points : pour accéder aux membres de l’objet.

4. Constructeurs en WLangage

Le constructeur d’une classe est une procédure spéciale appelée automatiquement lors de
l’instanciation :

CLASSE Voiture

marque est une chaîne

modele est une chaîne

annee est un entier

// Constructeur

PROCÉDURE CONSTRUCTEUR(m, mo, a)

marque = m

modele = mo

annee = a

FIN

P a g e 24 | 42
PROCÉDURE AfficherInfos()

Info("Marque : " + marque)

Info("Modèle : " + modele)

Info("Année : " + annee)

FIN

FIN

// Utilisation

maVoiture est un objet Voiture("Honda", "Civic", 2021)

maVoiture:AfficherInfos()

5. Comparaison simple avec Java

Concept Java WLangage

Déclaration classe public class CLASSE

Attribut privé private String nom; nom est une chaîne

Constructeur public MaClasse() PROCÉDURE CONSTRUCTEUR()

Appel méthode [Link]() objet:methode()

6. Encapsulation (Visibilité)

WLangage permet de spécifier la visibilité :

CLASSE Personne

PRIVÉ nom est une chaîne

PUBLIQUE âge est un entier

PROCÉDURE PUBLIQUE Afficher()

Info("Nom : " + nom + ", Âge : " + âge)

FIN

FIN

P a g e 25 | 42
• PUBLIQUE → accessible de partout.

• PRIVÉ → accessible uniquement dans la classe.

• PROTÉGÉE → accessible dans la classe et ses descendantes.

P a g e 26 | 42
IV : Manipulation des fichiers de données (HFSQL)

• Comprendre les bases de données HFSQL et leur intégration dans WinDev.

• Apprendre à manipuler les fichiers de données : lecture, écriture, mise à jour, et


suppression.

• Découvrir les concepts avancés : requêtes SQL, transactions et gestion des index.

1. Introduction à HFSQL

1.1. Qu'est-ce que HFSQL ?

HFSQL est le système de gestion de base de données intégré à WinDev. Il permet de gérer des
fichiers de données de manière rapide et efficace. HFSQL offre deux principaux types de
fichiers :

• Fichiers classiques : Utilisés pour des données structurées simples.

• Fichiers de type SQL : Base de données relationnelle permettant d'utiliser SQL pour
effectuer des requêtes complexes.

1.2. Les avantages de HFSQL

• Intégration complète dans WinDev : Il n'y a pas besoin d'installer un serveur de base
de données externe.

• Support des transactions : HFSQL permet la gestion des transactions pour garantir
l'intégrité des données.

• Haute performance : HFSQL est conçu pour être rapide et fiable, même avec des
millions de données.

2. Création et gestion d'une base de données HFSQL

2.1. Création d'une base de données

Pour créer une base de données dans WinDev, vous devez utiliser le modèle de fichier dans
l'éditeur de projet.

• Dans WinDev, vous pouvez créer un fichier de données à partir de l'outil Analyse.

• L'analyse permet de définir les tables, les types de données et les relations entre les
entités.

Exemple de création d'une table Client :


P a g e 27 | 42
Client
Nom : Chaîne
Prénom : Chaîne
Age : Entier
Email : Chaîne
DateInscription : Date

2.2. Gestion des fichiers de données avec les fonctions HFSQL

Les fonctions de manipulation des fichiers de données sont utilisées pour ajouter, modifier,
supprimer, ou lire des enregistrements dans une base HFSQL.

• Ajout de données : Utilisez la fonction HAjoute pour ajouter des enregistrements à une
table.

HAjoute(Client)

[Link] = "Dupont"

[Link]énom = "Pierre"

[Link] = 30

[Link] = "[Link]@[Link]"

[Link] = DateDuJour()

HEnregistre(Client)

• Modification de données : Utilisez la fonction HModifie pour modifier un


enregistrement existant.

HModifie(Client)

[Link] = 31

HEnregistre(Client)

• Suppression de données : Utilisez la fonction HSupprime pour supprimer un


enregistrement.

HSupprime(Client)

3. Requêtes HFSQL

P a g e 28 | 42
3.1. Utilisation de SQL dans HFSQL

HFSQL permet également d'effectuer des requêtes SQL sur les données. Vous pouvez utiliser
des requêtes SQL classiques (comme SELECT, INSERT, UPDATE, DELETE) directement avec la
base de données HFSQL.

Exemple de requête SQL pour obtenir tous les clients ayant un âge supérieur à 25 :

req est une chaîne = "SELECT * FROM Client WHERE Age > 25"

HExecuteSQLQuery(HQClient, req)

TANTQUE HNext(HQClient)

Info([Link] + " " + [Link]énom)

FIN

3.2. Transactions dans HFSQL

HFSQL prend en charge les transactions pour garantir l’intégrité des données. Une transaction
permet de réaliser plusieurs opérations dans une base de données et de s’assurer qu’elles sont
toutes validées ou annulées ensemble.

• Démarrer une transaction : Utilisez HDébutTransaction.

HDébutTransaction()

• Valider une transaction : Utilisez HValideTransaction.

HValideTransaction()

• Annuler une transaction : Utilisez HAnnuleTransaction.

HAnnuleTransaction()

Les transactions sont utiles lorsqu'il est nécessaire de faire plusieurs modifications dans la base
de données et de s'assurer qu'elles sont toutes réussies avant de valider les changements.

4. Indexation des fichiers HFSQL

Les index permettent d’accélérer les recherches sur certaines colonnes d’une table. Dans
WinDev, vous pouvez créer des index pour optimiser les performances des requêtes.
P a g e 29 | 42
• Création d’un index : Dans l'analyse, vous pouvez définir des index sur une ou plusieurs
colonnes.

• Utilisation de l'index : Lorsque vous effectuez des recherches sur les colonnes
indexées, les requêtes seront plus rapides.

Exemple d'utilisation d'un index pour rechercher un client par son nom :

HRecherche(Client, [Link], "Dupont")

5. Exemple complet

Voici un exemple complet de programme qui utilise HFSQL pour gérer une table Client avec
des opérations de base : ajout, recherche et affichage.

Définition de la table Client dans l’analyse

Nom Type

ClientID Entier

Nom Chaîne

Prénom Chaîne

Age Entier

DateInscription Date

Code complet

// Ajouter un client

[Link] = "Dupont"

[Link]énom = "Pierre"

[Link] = 30

[Link] = DateDuJour()

HAjoute(Client)

HEnregistre(Client)

// Recherche de client par nom

req est une chaîne = "SELECT * FROM Client WHERE Nom = 'Dupont'"
P a g e 30 | 42
HExecuteSQLQuery(HQClient, req)

TANTQUE HNext(HQClient)

Info([Link]énom + " " + [Link])

FIN

Exercices

1. Créer une table Produit avec les champs ID, Nom, Prix, et Stock. Ajoutez des données
et effectuez une recherche sur le nom d’un produit.

2. Écrire une procédure qui utilise une transaction pour ajouter plusieurs clients à la fois,
en vous assurant que toutes les données sont ajoutées ou aucune si une erreur se
produit.

3. Créer un index sur le champ Age et effectuez une recherche rapide sur les clients ayant
un âge supérieur à 40.

4.5 Relations entre fichiers et intégrité référentielle

Objectif :
Comprendre les relations entre les fichiers dans HFSQL et la gestion de l'intégrité référentielle
pour assurer la cohérence des données dans une base relationnelle.

1. Introduction aux relations entre fichiers

Dans une base de données relationnelle, les relations entre les fichiers (ou tables) sont
essentielles pour organiser et gérer les données de manière efficace. Ces relations permettent
de lier des informations provenant de différentes tables, assurant ainsi la cohérence des
données et simplifiant la gestion des bases complexes.

Types de relations dans HFSQL :

• Relation un-à-un (1:1) : Un enregistrement dans une table est lié à un seul
enregistrement dans une autre table.

• Relation un-à-plusieurs (1:N) : Un enregistrement dans une table est lié à plusieurs
enregistrements dans une autre table.

P a g e 31 | 42
• Relation plusieurs-à-plusieurs (N:M) : Plusieurs enregistrements d'une table sont liés
à plusieurs enregistrements d'une autre table (implique souvent une table de liaison).

2. Définir des relations entre fichiers dans HFSQL

Pour définir des relations entre les tables, vous devez utiliser les clés primaires et étrangères.
Une clé primaire identifie de manière unique chaque enregistrement dans une table, tandis
qu'une clé étrangère est un champ dans une table qui fait référence à la clé primaire d'une
autre table.

2.1. Exemple de relation entre deux fichiers

Prenons l'exemple d'une base de données avec deux tables : Clients et Commandes.

• Clients : contient les informations des clients (ID_Client, Nom, Prénom).

• Commandes : contient les informations des commandes (ID_Commande, Date,


Montant, ID_Client).

Dans ce cas, la relation entre les deux tables est une relation un-à-plusieurs (1:N), où un client
peut avoir plusieurs commandes, mais chaque commande est associée à un seul client.

Table Clients :

ID_Client Nom Prénom

1 Dupont Pierre

2 Martin Marie

Table Commandes :

ID_Commande Date Montant ID_Client

1001 2025-05-10 150.00 1

1002 2025-05-11 200.00 1

1003 2025-05-12 120.00 2

Dans cet exemple :

• La clé primaire de la table Clients est ID_Client.

• La clé étrangère dans la table Commandes est ID_Client, qui fait référence à la clé
primaire de la table Clients.

P a g e 32 | 42
3. Assurer l'intégrité référentielle

L'intégrité référentielle garantit que les relations entre les tables sont cohérentes et que les
données restent valides. Par exemple, on ne peut pas avoir une commande associée à un client
qui n'existe pas.

3.1. Contraintes d'intégrité référentielle

Les contraintes d'intégrité référentielle peuvent être appliquées pour maintenir la cohérence
entre les enregistrements des différentes tables. Ces contraintes peuvent inclure :

• Suppression en cascade : Si un enregistrement parent (par exemple un client) est


supprimé, toutes les commandes associées à ce client sont également supprimées
automatiquement.

• Mise à jour en cascade : Si une clé primaire d'un enregistrement parent est mise à jour,
la clé étrangère dans les enregistrements enfants est également mise à jour.

• Restriction de suppression : Empêche la suppression d'un enregistrement parent si des


enregistrements enfants lui sont associés.

Exemple de mise en place de la suppression en cascade :

HCreate("Clients")

HCreate("Commandes")

// Ajout d'un client

Client.ID_Client = 1

[Link] = "Dupont"

[Link]énom = "Pierre"

HAjoute(Client)

// Ajout de commandes associées au client

Commande.ID_Commande = 1001

[Link] = "2025-05-10"

[Link] = 150

Commande.ID_Client = 1

HAjoute(Commande)

P a g e 33 | 42
Commande.ID_Commande = 1002

[Link] = "2025-05-11"

[Link] = 200

Commande.ID_Client = 1

HAjoute(Commande)

// Suppression du client, suppression automatique des commandes liées (en cascade)

HSupprime(Client)

3.2. Gestion des erreurs d'intégrité

Lorsque l'intégrité référentielle est violée (par exemple, un enregistrement enfant fait
référence à un parent inexistant), une erreur peut être générée. Il est possible de gérer ces
erreurs pour offrir une meilleure expérience utilisateur.

Exemple de gestion d'une violation d'intégrité référentielle :

SI HErreurDétectée() ALORS

Info("Erreur : Une relation d'intégrité référentielle a échoué.")

SINON

Info("Les données ont été correctement enregistrées.")

FIN

4. Relations entre fichiers dans l'analyse

Dans WinDev, les relations entre les fichiers peuvent être définies directement dans l'analyse.
L'outil Analyse vous permet de créer des relations entre tables en définissant des clés
primaires et des clés étrangères.

4.1. Création d'une relation dans l'Analyse :

1. Dans l'éditeur d'analyse de WinDev, sélectionnez les fichiers que vous souhaitez relier.

2. Définissez les clés primaires et clés étrangères dans chaque table.

3. Spécifiez le type de relation (1:1, 1:N, N:M).

P a g e 34 | 42
4. Utilisez les options de contrainte (suppression en cascade, mise à jour en cascade, etc.).

5. Exemple complet avec relation et intégrité référentielle

Voici un exemple complet où nous créons une base de données pour gérer des Clients et des
Commandes, avec une relation un-à-plusieurs et des contraintes d'intégrité référentielle.

Définition des tables dans l'analyse :

Table Clients :

Nom Type

ID_Client Entier (Clé primaire)

Nom Chaîne

Prénom Chaîne

Table Commandes :

Nom Type

ID_Commande Entier (Clé primaire)

Date Date

Montant Réel

ID_Client Entier (Clé étrangère liée à Clients.ID_Client)

Code pour ajouter un client et des commandes :

// Ajout du client

Client.ID_Client = 1

[Link] = "Martin"

[Link]énom = "Marie"

HAjoute(Client)

HEnregistre(Client)

// Ajout de commandes pour ce client

P a g e 35 | 42
Commande.ID_Commande = 1001

[Link] = "2025-06-01"

[Link] = 250.00

Commande.ID_Client = 1

HAjoute(Commande)

Commande.ID_Commande = 1002

[Link] = "2025-06-02"

[Link] = 100.00

Commande.ID_Client = 1

HAjoute(Commande)

Code pour suppression avec cascade :

// Suppression du client, suppression automatique des commandes liées

HSupprime(Client)

Exercices :

1. Créez un système de gestion des employés et des départements. Chaque employé


appartient à un département. Implémentez la relation un-à-plusieurs entre ces deux
entités et assurez-vous que la suppression d'un département supprime également les
employés associés.

2. Ajoutez une contrainte de mise à jour en cascade entre deux tables : Commande et
Client. Si l'ID d'un client change, l'ID du client dans la table des commandes doit aussi
être mis à jour.

3. Testez l'intégrité référentielle en tentant de supprimer un client ayant des commandes


associées, et gérez l'erreur avec un message d'erreur personnalisé.

Transactions et gestion d’erreurs

P a g e 36 | 42
Objectif :
Comprendre le fonctionnement des transactions dans HFSQL, comment elles permettent
d'assurer la cohérence des données dans des contextes de traitements complexes, et
comment gérer les erreurs pour garantir l'intégrité des données.

1. Introduction aux transactions dans HFSQL

Une transaction est une séquence d'opérations qui doivent être exécutées comme une unité
indivisible. Elle assure que les données restent cohérentes, même en cas d'erreurs, de pannes
système ou d'autres problèmes. Si une erreur survient pendant l'exécution de la transaction,
toutes les modifications effectuées au cours de la transaction sont annulées, garantissant ainsi
l'intégrité des données.

Les transactions sont particulièrement importantes lorsque plusieurs opérations sont


effectuées sur la base de données et qu'elles doivent être toutes réussies ou toutes échouées.
Par exemple, dans le cas d'une opération de transfert d'argent entre deux comptes bancaires,
il faut s'assurer que le montant est débité du premier compte et crédité sur le deuxième. Si
l'une des opérations échoue, toutes les modifications doivent être annulées.

Principes d’une transaction :

1. Atomicité : La transaction est une unité indivisible. Soit toutes les modifications sont
appliquées, soit aucune ne l’est.

2. Cohérence : La base de données passe d'un état valide à un autre.

3. Isolation : Les modifications d'une transaction ne doivent pas être visibles pour les
autres transactions avant qu'elles ne soient validées.

4. Durabilité : Une fois validée, une transaction est permanente, même en cas de panne
du système.

2. Utilisation des transactions dans HFSQL

Dans HFSQL, les transactions permettent d'exécuter plusieurs opérations sur la base de
données et d'assurer la cohérence des données. Pour gérer les transactions, on utilise les
fonctions suivantes :

• HDébutTransaction : Démarre une transaction.

• HValideTransaction : Valide une transaction, c'est-à-dire que toutes les modifications


effectuées sont enregistrées dans la base de données.

P a g e 37 | 42
• HAnnuleTransaction : Annule une transaction, ce qui revient à annuler toutes les
modifications effectuées depuis le début de la transaction.

2.1. Exemple de gestion de transaction

Prenons un exemple où nous effectuons un transfert d'argent entre deux comptes. Si une des
étapes échoue, la transaction doit être annulée pour éviter des incohérences dans les
données.

2.1.1. Définition des tables

Imaginons les tables suivantes :

Table Comptes :

ID_Compte Solde

1 500.00

2 300.00

Table Transactions :

ID_Transaction ID_Compte_Expéditeur ID_Compte_Récepteur Montant Date

1001 1 2 200.00 2025-05-


10

1002 2 1 150.00 2025-05-


11

2.1.2. Code de transfert avec transaction

// Démarre la transaction

HDébutTransaction()

// Débiter le compte de l'expéditeur

SI HModifie(Compte_Expéditeur) ALORS

Compte_Expé[Link] = Compte_Expé[Link] - 200.00

HEnregistre(Compte_Expéditeur)

SINON

// Si l'opération échoue, annule la transaction

P a g e 38 | 42
HAnnuleTransaction()

Info("Erreur lors de la modification du compte expéditeur.")

RETOUR

FIN

// Créer un enregistrement de la transaction

Transaction.ID_Transaction = 1001

Transaction.ID_Compte_Expéditeur = 1

Transaction.ID_Compte_Récepteur = 2

[Link] = 200.00

[Link] = "2025-05-10"

HAjoute(Transaction)

// Créditer le compte du récepteur

SI HModifie(Compte_Récepteur) ALORS

Compte_Ré[Link] = Compte_Ré[Link] + 200.00

HEnregistre(Compte_Récepteur)

SINON

// Si l'opération échoue, annule la transaction

HAnnuleTransaction()

Info("Erreur lors de la modification du compte récepteur.")

RETOUR

FIN

// Si toutes les opérations réussissent, on valide la transaction

HValideTransaction()

Info("Transfert effectué avec succès.")

P a g e 39 | 42
2.1.3. Explication du code :

1. Démarrer la transaction : La fonction HDébutTransaction() initie la transaction, et


toutes les modifications apportées aux données seront conservées en mémoire, sans
être effectivement appliquées à la base de données.

2. Modification du compte expéditeur : L'opération débite le montant du compte de


l'expéditeur. Si l'opération échoue (par exemple, en raison d'un solde insuffisant), la
fonction HAnnuleTransaction() est appelée, ce qui annule toutes les modifications
effectuées depuis le début de la transaction.

3. Enregistrement de la transaction : Une entrée est ajoutée dans la table des


transactions pour enregistrer l'opération. Cela permet de garder une trace de chaque
transfert effectué.

4. Modification du compte récepteur : Le montant est crédité sur le compte récepteur. Si


une erreur survient (par exemple, une tentative de mise à jour d'un compte inexistant),
la transaction est annulée.

5. Validation de la transaction : Si toutes les étapes réussissent, la fonction


HValideTransaction() est appelée, et les modifications sont définitivement enregistrées
dans la base de données.

6. Gestion des erreurs : Si une erreur est détectée à n'importe quelle étape de la
transaction, la fonction HAnnuleTransaction() est appelée pour annuler toutes les
modifications et maintenir la cohérence des données.

3. Gestion des erreurs en WinDev

La gestion des erreurs est un aspect crucial pour le bon fonctionnement des applications.
WinDev offre plusieurs mécanismes pour gérer les erreurs pendant l'exécution de la
transaction :

• HErreurDétectée() : Vérifie s'il y a eu une erreur lors de l'exécution d'une fonction


HFSQL.

• HMessageErreur() : Affiche le message d'erreur.

• HAnnuleTransaction() : Annule les modifications effectuées pendant la transaction.

3.1. Exemple de gestion d’erreur avec transactions

Voici un exemple de gestion d'erreurs dans une transaction :

HDébutTransaction()

P a g e 40 | 42
// Modification du compte expéditeur

SI HModifie(Compte_Expéditeur) ALORS

Compte_Expé[Link] = Compte_Expé[Link] - 200.00

SI NON HEnregistre(Compte_Expéditeur) ALORS

HAnnuleTransaction()

Info("Erreur lors de l'enregistrement du compte expéditeur.")

RETOUR

FIN

SINON

HAnnuleTransaction()

Info("Erreur lors de la modification du compte expéditeur.")

RETOUR

FIN

// Enregistrement de la transaction

Transaction.ID_Transaction = 1001

Transaction.ID_Compte_Expéditeur = 1

Transaction.ID_Compte_Récepteur = 2

[Link] = 200.00

[Link] = "2025-05-10"

SI NON HAjoute(Transaction) ALORS

HAnnuleTransaction()

Info("Erreur lors de l'ajout de la transaction.")

RETOUR

FIN

// Crédit du compte récepteur

SI HModifie(Compte_Récepteur) ALORS

Compte_Ré[Link] = Compte_Ré[Link] + 200.00


P a g e 41 | 42
SI NON HEnregistre(Compte_Récepteur) ALORS

HAnnuleTransaction()

Info("Erreur lors de l'enregistrement du compte récepteur.")

RETOUR

FIN

SINON

HAnnuleTransaction()

Info("Erreur lors de la modification du compte récepteur.")

RETOUR

FIN

// Si tout est ok, valider la transaction

HValideTransaction()

Info("Transfert effectué avec succès.")

Exercices

1. Création d'une transaction bancaire : Créez une transaction où vous devez transférer
de l'argent entre deux comptes et assurer que le solde est mis à jour correctement. En
cas d'échec, toutes les modifications doivent être annulées.

2. Gestion des erreurs dans une transaction : Ajoutez des vérifications pour chaque étape
de la transaction. Si une erreur survient, annulez la transaction et affichez un message
d'erreur approprié.

3. Transaction avec plusieurs tables : Créez une transaction qui met à jour plusieurs
tables (par exemple, une table Clients et une table Commandes). Assurez-vous que la
mise à jour est atomique : si une des opérations échoue, toutes les modifications
doivent être annulées.

P a g e 42 | 42

Vous aimerez peut-être aussi