Documents

Programmation objets : VB & Delphi

Niveau débutant, mars 2001

Plan

  1. Présentation générale
  2. Syntaxe de base
  3. Utilisation de l'environnement de développement intégré (EDI)
  4. La programmation orientée objets (POO)
  5. Conclusion

I. Présentation générale

I.1. Objectifs

Le but de cette formation est d'expliquer les concepts de base 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 aspects 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 de l'interface graphique. Il permet aussi généralement de lancer la compilation facilement, et d'exécuter le programme ligne par ligne en mode de débugage. 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 sur un seul type de machine (par exemple les PC x86). Un interpréteur est un programme qui lit le code source développé " ligne par ligne " et l'interprête.
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 Communicator 4.77
Ex. 3 Java Borland JBuilder - Internet Explorer (avec le plug-in Java)
Ex. 4 C++ Microsoft Visual C++ Microsoft Visual C++ -
Ex. 4 bis C++ Borland C++Builder 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 crochets 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
Chaînes 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 blocs 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 (cf. ci-dessus).
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 toute 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;

Étant 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éalisée 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érer 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 dimensionner 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 (Étiquette 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ébuguer. 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 débugage

Là encore, Delphi et Visual Basic proposent de nombreux outils de débugage relativement efficaces.

Le premier est la possibilité d'exécuter le programme ligne par ligne, en faisant une pause sur chaque ligne, ou de placer des "points d'arrêts" au cœur 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 stoppent 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 cœur 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 cœur 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é. Ça signifie que l'on perd énormément en performances sur le plan de la vitesse. Cependant, vu la rapidité actuelle des micro-ordinateurs, ce défaut est en général sans importance.

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 objets.

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 voir 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 dont il s'agit :

Exemple en Delphi Exemple en Visual Basic
// Définissons d'abord le type de
// données 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ées 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, dans 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 ?

OBJET = variables  + méthodes + propriétés 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 :

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.

Une voiture est formée d'objets ! Imaginons que nous cherchons à 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 "roue 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.

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

L'utilisation d'objets offre 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édant 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. Ça 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'avantage 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 ?

Delphi Visual Basic
Éditeur Inprise (anciennement et à nouveau appellé Borland) Microsoft
Langage Pascal Objet (Visual) Basic
Quelques points forts
  • Les applications sont compilables.
  • Delphi possède de nombreux outils facilitant la gestion de bases de donneés
  • Kylix était 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 strict, où les bricolages sont limités.
  • Langage moins populaire qui va peut-être tendre à être marginalisé par VB ou Java...
  • Il n'existe pas de compilateur libre du langage.
  • Langage interprété
  • Il n'existe pas de compilateur libre du langage.
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 ? À 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'exprimer. 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 débugez 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 œuvre, il en est de même pour vous quand vous programmez une application !


Rédaction : Nicolas ROFFET. Texte de mars 2001 avec quelques mises à jour par la suite.

Mise à jour : 02-01-2009   ⚪   Webdesigner & webmaster : Nicolas Roffet   ⚪   Page valide XHTML 1.0 Strict, CSS2