Programmation objets sous Windows appliquée à Visual Basic et Delphi Niveau débutant Inhalt Français English not available Deutsch nicht verfügbar Español no disponible Seite den 10.11.2002 aktualisiert
Valid HTML 4.0
E-Mail: webmaster@roffet.com Site-Map
Diese Seite ist leider nicht auf Deutsch verfügbar.

Programmation objets sous Windows

appliquée à Visual Basic et Delphi


Niveau débutant




Plan


I. Présentation générale
II. Syntaxe de base
III. Utilisation de l'environnement de développement intégré (EDI)
IV. La programmation orientée objets (POO)
V. Conclusion









I. Présentation générale

I.1. Objectifs

Le but de cette formation est d'expliquer les concepts de bases de la programmation objets et de montrer comment ensuite utiliser un environnement de développement intégré (EDI) pour programmer sous Windows (ou sous tout autre système d'exploitation graphique). Dans cet objectif, Visual Basic et Delphi, très proches, seront utilisés en parallèle.


I.2. Note de mise en page du document

Ce document a été rédigé pour être vu sur internet avec une fenêtre de l'ordre de 800 par 600 ou plus (l'idéal est généralement le plein écran). S'il est lu avec une fenêtre plus petite, des problèmes de retour à la ligne peuvent apparaître dans les exemples de code. Mêmes problèmes à l'impression.
Essayez donc à chaque fois de comprendre si les retours à la ligne que vous observez sont volontaires ou non.


I.3. Différences entre le langage, l'EDI, le compilateur et l'interpréteur.

On a souvent tendance à mélanger les quatres, surtout dans le cas de Visual Basic et de Delphi. Pourtant, il faut les différencier.
  Langage EDI Compilateur Interpréteur
C’est quoi ? C’est la syntaxe, les règles, les mots clef, etc… Ce sont tous les aspect conceptuels de la programmation. Sans compilateur ou interpréteur, le langage n’est pas exploitable. L’EDI est un programme qui facilite la programmation que ce soit pour éditer le code ou pour dessiner les fenêtres Windows. Il permet aussi généralement de lancer la compilation facilement, et d’exécuter le programme ligne par ligne en mode de débuggage. Un compilateur transforme le code (généralement sous forme de banal fichier texte) que vous avez développé en programme binaire exécutable par un seul système d’exploitation. Un interpréteur est un programme qui lit le code développé " ligne par ligne " et les interprête alors. Exemple : s’il voit la ligne " Beep " dans Visual Basic, il émet un son.
Ex. 1 C Sous Linux : xemacs . Très basique. Trop pour qu’on puisse réellement parler d’EDI. gcc -
Ex. 2 JavaScript - - Netcape ou Internet Explorer
Ex. 3 Java Borland JBuilder - Netcape ou Internet Explorer
Ex. 4 C++ Microsoft Visual C++ Borland C++Builder Microsoft Visual C++ Borland C++Builder -
Ex. 5 Pascal Borland Turbo Pascal Borland Turbo Pascal -
Ex. 6 Pascal Objet Borland Delphi Borland Delphi -
Ex. 7 Basic (Objet) Microsoft Visual Basic Microsoft Visual Basic
(note : la version 6 ne permet encore que de faire de la pseudo compilation...)
Microsoft Visual Basic






II. Syntaxe de base

Nous allons nous intéresser dans le tableau ci-dessous à la syntaxe de base du code Delphi et Visual Basic :
 

En Delphi

En Visual Basic

Fin d'instruction (ou de ligne) ; Un retour à la ligne suffit (ou éventuellement ":" pour mettre plusieurs instructions sur la même ligne, même si c'est déconseillé)
Commentaires

// Ceci est une ligne de commentaire

{ Ceci est un bloc
éventuellement
de plusieurs lignes
de commentaires
}

‘ Ceci est une ligne de commentaire

Rem -- Ceci est un commentaire
Rem    moins pratique à utiliser,
Rem    donc à oublier              --
Déclaration de variables En début de procédure uniquement :
var
   MaVariable1 : integer;
   MaVariable2, MaVariable3 : string;
Possible un peu partout :
Dim MaVariable1 As Integer
Dim MaVarible2, MaVariable3 As String
Affectation :=
Ex. : a :=1 ;
=
Ex. : a=1
Condition (ce qui est entre guillemet est facultatif) if condition then
   instruction
[ else
   instructions ] ;

Cas 1 :
If condition Then instruction [ Else instruction ]

Cas 2 :
If condition Then
   instructions
[ Else
   instructions ]
End If
Comparaison égalité : " = "
inégalité : " <> "
égalité : " = "
inégalité : " <> "
" et " et " ou " logiques and, or and, or
Chaines de caractères Le type "string" est le plus pratique à utiliser : on n'a pas à gérer la longueur de la chaîne.
Concaténation avec "+". Exemple : 'Une '+'chaîne'+' découpée'
Il faut mettre les caractères entre apostrophes. Exemple : 'Coucou!'. Pour mettre une apostrophe dans la chaîne, il suffit de la doubler. Exemple : 'C''est la vie!'.
Le type est "string".
La concaténation se fait avec "&" (ou "+").
On n'a pas à gérer la longueur de la chaîne.
Il faut mettre les caractères entre guillemets. Exemple : "Coucou!". Pour mettre un guillemet dans la chaîne, il faut faire ainsi : Exemple : "Il a dit " & chr(32) & "Attention" & chr(32) & "!".
Bloc d’instructions On peut transformer une instruction isolée en un bloc d’instructions si on l’entoure par " begin " et " end " :
begin
   instructions  ;
end ;
Les bloc d’instructions n’existent pas en Visual Basic. Il y a toujours une parade. Par exemple pour " if then else ", on utilise le cas 2 au lieu du cas 1
Boucle " for " Un exemple vaut mieux qu’un long discours :
for i :=1 to 10 do
   instruction ;
Exemple illustratif :
For i=1 To 10
   instructions
Next
Boucle conditionnelle (condition testée avant tout exécution) while condition do
   instruction ;
1ère possibilité :
Do While condition
   instructions
Loop

2nde possibilité :
Do Until condition
   instructions
Loop
Boucle conditionnelle (condition testée après une boucle) repeat
   instructions ;
until condition ;
1ère possibilité :
Do
   instructions
Loop While condition

2nde possibilité :
Do
   instructions
Loop Until condition
Procédures et fonctions : (Rappel : une procédure est une fonction qui ne renvoie pas de valeur.) Mot clef procédure : " procedure "
Mot clef fonction : " function "

Un exemple issu de l’aide en ligne de Delphi :

procedure NbChaine (N : Integer; var S : string);
var
   V: Integer;
begin
   V := Abs(N);
   S := '';
   repeat
      S := Chr(V mod 10 + Ord('0')) + S;
      V := V div 10;
   until V = 0;
   if N < 0 then S := '-' + S;
end;

Etant donnée cette déclaration, vous pouvez appeler la procédure NbChaine de la manière suivante :

NBChaine(17, MaChaine);

Cette procédure affecte la valeur "17" à MaChaine (qui doit être une variable string).

En Delphi, il faut toujours déclarer ou prédéclarer sa procédure et sa fonction au dessus (dans le code) avant de l’utiliser.
Une prédéclaration est réaliser en copiant uniquement la première ligne de la procédure ou de la fonction.

Notez que la présence du mot clef " var " dans " var S : string " signifie qu’on appelle la procédure en envoyant nécessairement une variable (qu’on veut généralement modifier dans la procédure) et non juste une valeur.
Mot clef procédure : " Sub "
Mot clef fonction : " Function "

Un exemple de fonction issu de l’aide en ligne de VB :

Function WhatsForLunch(WeekDay As String, _
Hour As Integer) As String
   ' Renvoie un menu de midi sur    ' base du jour et de l'heure.
   If WeekDay = "Vendredi" then
      WhatsForLunch = "Poisson"
   Else
      WhatsForLunch = "Poulet"
   End If
   If Hour > 4 Then WhatsForLunch = "Trop tard"
End Function

Pas besoin de prédéclarer une fonction ou une procédure.
   





III. Utilisation de l'environnement de développement intégré (EDI)

III.1. Présentation de l'interface

Un environnement de développement intégré (EDI) est un logiciel fait pour faciliter l'élaboration d'une application et accéléré son développement. On dit alors que Delphi et Visual Basic sont des logiciels de développement rapide d'application (RAD).
L'EDI est constitué de toute une série d'outils qui font qu'après avoir pris l'habitude de les utiliser, on n'a généralement plus envie de retourner à un éditeur de texte basique pour écrire le code !
De ce côté là, Visual Basic et Delphi sont très proches : ils possèdent les mêmes outils.

Environnement de travail de Visual Basic :
Microsoft Visual Basic 6

Environnement de travail de Delphi :
Borland Delphi 4


III.2. Dessiner une fenêtre

Pour dessiner une fenêtre, on utilise la souris. On ajoute une nouvelle fenêtre vierge. Note : une fenêtre s'appelle une fiche sous Delphi et une feuille sous Visual Basic, et en anglais "form" pour les 2. Ensuite, on la personnalise en modifiant quelques propriétés à l'aide de la "fenêtre de propriétés" sous Visual Basic appellée "inspecteur d'objets" sous Delphi. Puis, on va choisir dans la palette des composants par exemple des contrôles Windows pour les placer, les dimenssioner et les configurer.

Les composants sont des objets tout-faits que l’on n'a qu’à placer sur la fenêtre que l’on est en train de créer. Une grande partie des composants standards sont des contrôles Windows (Etiquette de texte, bouton, liste déroutante ou non, cases à cocher, barre de défilement, …), mais ils ne se limitent pas à ça. Il est possible de plus de fabriquer soi-même des composants ou d’en trouver ou acheter sur internet par exemple.

La création de l'interface est donc généralement très rapide. Cependant, malheureusement (ou heureusement ?), la création d'une application ne se limite pas à la création de l'interface : il faut écrire le code, et débugguer. Ces deux phases sont généralement extrêmement longues, mais très intéressantes.


III.3. Aides à la création du code

L'aide à la saisie :
Visual Basic possède une aide à la saisie très performante (Delphi 4 en a une aussi, mais bien moins efficace) qui rappelle les différents arguments requis par une fonction quand on écrit son nom, ou qui propose de terminer la saisie d'un mot par "entrée".

L'aide en ligne :
Les aides en ligne de Delphi 4 et Visual Basic sont très bien faites. Il ne faut donc surtout pas hésiter à les utiliser pour avoir une description détaillée (souvent avec des exemples) de telle ou telle fonction, de tel ou tel composant...
Utiliser les aides en ligne permet de s'autoformer de manière relativement efficace.


III.4. Le debugage

Là encore, Delphi et Visual Basic proposent de nombreux outils de debugage relativement efficaces.
Le premier est la possibilité d'exécuter le programme ligne par ligne, en faisant une pause sur chaque ligne, où de placer des "points d'arrêts" au coeur du programme pour interrompre l'exécution du programme en un endroit particulier du code. Le programme arrêté, il est alors possible, en plaçant la souris au dessus d'une variable de savoir sa valeur, et de trouver éventuellement un bug.
Il est aussi possible d'insérer des "espions" qui stoppe le programme dès qu'une variable change de valeur par exemple.


III.5. La compilation

Une fois l'application terminée, il faut compiler l'application pour pouvoir ensuite l'utiliser sans l'EDI. En fait, Delphi compile avant chaque essai du programme, même au coeur de l'EDI. Ce n'est pas le cas de Visual Basic qui ne fait qu'interprêter le code. Quand on crée un exécutable avec Visual Basic, on fabrique en fait un petit programme exécutable (EXE) qui va appeller le coeur de Visual Basic à travers une bibliothèque DLL (VB6FR.DLL) qui doit obligatoirement être installée sur le système de l'utilisateur. Ensuite, le code Basic va être interprêté. Ca signifie que l'on pert énormément en performances sur le plan de la vitesse. Cependant, vu la rapidité actuelle des micro-ordinateurs, ce défaut est de moins en moins important.





IV. La programmation orientée objets (POO)


IV.1. Les langages objets

De plus en plus de langages de programmation sont orientés objets. Les plus célèbres sont Java, le C++ (et non le C attention), Delphi et Visual Basic. Parmi ces langages, Java est le seul 100% objets. Il est « théoriquement » possible de programmer en C++, Delphi ou Visual Basic sans utiliser d’objets.
On trouve aussi de la programmation objets dans les langages de scripts tels que JavaScript ou Visual Basic Script (VBS).
Comme l’utilisation de ces langages tend à se généraliser, il est intéressant de comprendre les concepts de la programmation objet.


IV.2. Les enregistrements

Les enregistrements sont comparables à des objets ultra basiques. C'est pour ça que nous nous intéressons à eux maintenant, avant de voit ce que c’est qu’un objet, (patience, patience !...).

Nous allons nous intéresser à l’enregistrement appelé aussi structure (« struct » en C). Voyons à l’aide d’un exemple ce que c’est :
Exemple en Delphi Exemple en Visual Basic
// Définissons d’abord le type de
// donné nouveau que l’on crée
type TAdresse = record
   Nom : String;
   Prenom : String;
   Adesse : String;
   NumerosDeTel : Array of String;
      // pour infos, le tableau ci-dessus est dynamique
   DateDeNaissance : TDate;
   BonAmi : boolean;
end;

// Puis définissons (une ou)
// plusieurs variables de ce type
var
   MonAdresse : TAdresse ;
   CarnetDAdresses : Array of TAdresse;


// Accédons maintenant à une des variables
begin
   MonAdresse.Nom := ’Goret’ ;
   MonAdresse.Adresse := ’Centrale’ ;
   MonAdresse.BonAmi := True ;
end ;
' Définissons d’abord le type de
' donné nouveau que l’on crée
Type TAdresse
   Nom As String
   Prenom As String
   Adresse As String
   NumerosDeTel() As String
      ' pour infos, le tableau ci-dessus est dynamique
   DateDeNaissance As Date
   BonAmi As Boolean
End Type

' Puis définissons (une ou) plusieurs
' variables de ce type
Dim CarnetDAdresses() As TAdresse
Dim MonAdresse : Tadresse

' Accédons maintenant à une des variables
MonAdresse.Nom = "Goret"
MonAdresse.Adresse = "Centrale"
MonAdresse.BonAmi = True


Un des avantages est qu’à chaque fois que je veux, danc cet exemple, créer une « fiche » adresse ou un carnet d’adresses, je n’ai pas à définir 4 variables, mais uniquement une.


IV.3. Qu’est-ce qu’un objet ?

Un objet est un type de données qui regroupe ensemble des données et du code. Avant la POO, le code et les données étaient traités comme des éléments séparés. Un objet est défini par le regroupement de :
  • variables
  • méthodes. C’est le nom qu’on donne aux fonctions et aux procedures d’un objet. Pourquoi introduire un nouveau mot pour définir un concept qui existe déjà ? Mystère...
  • propriétés C'est un nouveau concept par rapport à la programmation procédurale. Quand une propriété est modifiée, elle peut en même temps modifier la valeur d’une autre variable ou propriété. Par exemple, si mon objet est un carré, et que je modifie la propriété « hauteur », automatiquement, on s’attend à ce que la propriété « largeur » change.
OBJET = variables  + méthodes + propriétés
Note : un objet contenant uniquement des variables est comparable à un enregistrement.


IV.4. Une automobile est formée d’objets.

Pour expliquer l’intérêt d’utiliser les objets, nous allons utiliser un exemple éloigné de la programmation.
Imaginions que nous cherchions à fabriquer une automobile (qui est elle même un objet). Pour cela, on a entre autre besoin de roues. Et bien les roues sont des objets. Il suffit que je définisse une fois une roue, pour ensuite demander à la chaîne de production de m’en produire 4 pour ma voiture (4 instances de l’objet en langage informatique). Ma roue possède des propriétés (valeur du rayon, type de pneu adapté, pression de gonflement interne, état crevée ou non, …). Quand on change une des propriétés (si on crève la roue par exemple), ça peut changer d’autres propriétés automatiquement (la pression interne diminue). Un autre objet dans la voiture est le volant. Il possède des « méthodes » : on peut tourner le volant dans une direction particulière par exemple. Dans ce cas, différentes opérations (« instructions ») sont effectuées pour tourner effectivement toute la voiture. Une voiture est formée d'objets !


IV.5. Quel est l’intérêt d’utiliser des objets ?

L’utilisation d’objets offrent de nombreux avantages.
Tout d’abord, ça rend la programmation facilement modulaire. En tant que fabriquant automobile, je demande à mes fournisseurs de me fournir des sièges de telle dimension possédants telles ou telles caractéristiques (je les veux chauffants par exemple) et tels qu’ils puissent se baisser. Avec ce cahier des charges là, je laisse le fournisseur se débrouiller pour me fabriquer les sièges demandés, et je ne m’occupe pas directement de savoir comment un siège fonctionne pour s'abaisser par exemple. De même pour les roues. Ca m’évite d’avoir à réinventer la roue à chaque fois que je fabrique une nouvelle voiture ! Le partage du travail est ainsi facilité grâce à la programmation objet. De même la visibilité du code.
Les méthodes agissent directement sur les variables et les propriétés de l’objet considéré. D’où l’intérêt très souvent d’utiliser une méthode dans un objet et non une fonction indépendante à laquelle il faudrait alors passer en paramètre le nom de la variable sur laquelle on veut travailler. L’utilisation d’objets simplifie grandement le travail.
Enfin, la POO possède d'autres avantages plus techniques que nous n'aborderons pas ici.


IV.6. Exemples d'objets

Les "composants" sont des objets. L'avantages de ces objets, c'est qu'on peut réellement les voir et modifier leurs propriétés lors de la création de l'interface.
Composants de Delphi Composants de Visula Basic
Cependant, encore une fois, les objets ne se limitent pas à des composants.

Exemple d'objet : une fenêtre sous Delphi
type
   TRPF11 = class(TForm)
      DriveComboBox1: TDriveComboBox;
      Label1: TLabel;
      DirectoryListBox1: TDirectoryListBox;
      Button1: TButton;
      Button2: TButton;
      procedure Button1Click(Sender: TObject);
      procedure Button2Click(Sender: TObject);
      procedure FormShow(Sender: TObject);
      procedure DriveComboBox1Change(Sender: TObject);
   private
      { Déclarations privées}
   public
      { Déclarations publiques}
end;






V. Conclusion

V.1. Comparatif

Quel langage choisir pour débuter
 DelphiVisual Basic
Editeur Inprise (anciennement Borland) Microsoft
Langage Pascal Objet (Visual) Basic
Quelques points forts
  • Les applications sont compilables.
  • Delphi possède de nombeux outils facilitant la gestion de bases de donneés.
  • Kylix est une application de Inprise adaptant Delphi sous Linux. -> plus grande portabilité.
  • Langage très populaire (plein de sites webs ou de bouquins dessus).
  • Connaître VB permet de maîtriser VBA (dans MS Office) ou VBS (un des langages de scripts Windows).
Quelques points faibles
  • Code parfois "lourd", trop stricte, où les bricollages sont limités.
  • Langage moins populaire qui va peut-être tendre à être marginalisé par VB ou Java...
  • Langage interprété
Prix Version professionnelle à prix étudiant : 500 FF (au lieu d'environ 6000 FF)
Version standard environ 900 FF. Pack étudiant (Delphi pro - C++Builder pro - JBuilder pro) 900 FF
Version professionnelle à environ 6000 FF
Version standard environ 900 FF. Pack étudiant (Microsoft Visual Studio pro avec VisualC++...) environ 900 FF

Lequel choisir alors? A vous de voir en fonction de vos critères!


V.2. Pourquoi programmer en Delphi ou en Visual Basic ?

Apprendre à programmer en Delphi ou en Visual Basic est intéressant, car ce sont des langages faciles et modernes, la création d'application est rapide et efficace. De plus, ce sont des langages majeurs actuellement (avec le C++, Java et les langages de scripts Internet). Enfin, c'est un moyen de découvrir la programmation orientée objets de plus en plus généralisée avec Java et la révolution d'Internet.


V.3. Le mot de la fin

Je pense réellement que programmer permet de laisser sa créativité s'exprimmer. J'aime bien comparer la création d'une application au travail du peintre. Non pas qu'une application soit de l'art, mais en tant que programmeur, vous décidez tout de votre "bébé". Le peintre s'applique à tous les détails de son oeuvre, vous définissez et configurez votre application dans les moindres détails. Le peintre reprend sans cesse telle ou telle partie non satisfaisante de sa toile, vous debuggez ou optimisez sans cesse votre code. Et surtout, "finir" une application, même avec des outils RAD, demande généralement d'y avoir consacré un nombre considérable d'heures, car finalement, l'utilisateur ne voit que le résultat, l'extérieur, mais ignore les milliers de lignes de code qui sont derrière. De même on ne voit pas les détails d'une peinture, quand on la regarde de loin... Et puis si le peintre s'est fait plaisir à peindre, et est fier de son oeuvre, il en est de même pour vous quand vous programmez une application!



Rédaction : Nicolas ROFFET. Texte mis à jour le 15 mars 2001.
Nicolas ROFFET - 11.06.2003 Oberer Teil der Seite