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 |
Cest quoi ? |
Cest 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 nest pas exploitable. |
LEDI 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 dexé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 dexploitation. |
Un interpréteur est un programme qui lit le code développé " ligne par ligne " et les interprête alors.
Exemple : sil voit la ligne " Beep " dans Visual Basic, il émet un son. |
Ex. 1 |
C |
Sous Linux : xemacs . Très basique. Trop pour quon puisse réellement parler dEDI. |
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 dinstructions |
On peut transformer une instruction isolée en un bloc dinstructions si on lentoure par " begin " et " end " :
begin instructions
;
end ;
|
Les bloc dinstructions nexistent 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 quun 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 laide 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 lutiliser.
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 quon appelle la procédure en envoyant nécessairement une variable (quon 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 laide 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 :
Environnement de travail de Delphi :
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 lon n'a quà placer sur la fenêtre que lon
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 den
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 dobjets.
On trouve aussi de la programmation objets dans les langages
de scripts tels que JavaScript ou Visual Basic Script (VBS).
Comme lutilisation
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 cest quun objet, (patience, patience !...).
Nous allons nous intéresser à lenregistrement appelé aussi structure (« struct » en C). Voyons à laide dun exemple ce que cest :
Exemple en Delphi
|
Exemple en Visual Basic
|
// Définissons dabord le type de
// donné nouveau que lon 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 dabord le type de
' donné nouveau que lon 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 dadresses, je nai pas à définir 4 variables, mais uniquement une.
IV.3. Quest-ce quun 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. Cest le
nom quon donne aux fonctions et aux procedures dun 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 dune autre variable ou propriété. Par exemple, si mon objet est un carré, et que je modifie la propriété « hauteur », automatiquement, on sattend à ce que la propriété « largeur » change.
| |
Note : un objet contenant uniquement des variables est comparable à un enregistrement.
IV.4. Une automobile est formée dobjets.
Pour expliquer lintérêt dutiliser 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 men produire 4 pour ma voiture (4 instances de lobjet 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 dautres 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 lintérêt dutiliser des objets ?
Lutilisation dobjets offrent de nombreux avantages.
Tout dabord, ç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 quils 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 moccupe pas directement de savoir comment un siège fonctionne pour s'abaisser par exemple. De même pour les roues. Ca mévite davoir à 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 lobjet considéré. Doù lintérêt très souvent dutiliser 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. Lutilisation dobjets 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.
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 |
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...
|
|
---|
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.
|