Vous êtes sur la page 1sur 51

PREMINV – Virtual Enterprises Management

and Engineering Training Laboratory

Langages de programmation
2009-2010
I/F cours 2

George DRAGOI

LP 2010-2011 IF 1
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

Objectifs du cours

Ce cours a précisément pour objectif de vous introduire les éléments et les construction de base
de base de la programmation, particulièrement en Java.
Aucune connaissance préalable de programmation n’est pas nécessaire. Si vous possédez
quelques rudiments de langage C il fait bien, mais il n’est pas obligatoire.
Habituellement presque tous les livres de programmation supposent que précédemment vous
avez déjà programmé dans au moins un autre langage.
On essaye à mettre l’accent sur les notions fondamentales de la programmation et même si vous
avez déjà programmé d’avance, parfois il peut être une révision utile.
Si vous déjà un autre langage de programmation mais vous êtes débutant en Java il n’est pas un
problème parce qu’un grand partie des concepts de programmation restent valables toujours.
Le but est de se familiariser avec le langage java, de pouvoir l’utiliser, inclusivement ses
caractéristiques de programmation orientées objets qui constituent en fait l’essence du langage.
En plus, on essaye vous familiariser avec un environnement de développement intégré qui vous
facilite la charge de programmateur.

LP 2010-2011 IF 2
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

Evaluation

Activité pendant le semestre: 60 points


dont
Activité et devoirs en TP : 40 points
Tests en TP: 20 points
Examen final: 40 points
Conditions minimales:
Pour participer à l’examen final:
Minimum 30 points pour l’activité pendant le semestre en TP;
Minimum 10 présences en TP (attention!! Les TP’s ne peuvent être
refaits!!!)
Pour passer: 50 points, dont minimum 20 points à l’examen final

LP 2010-2011 IF 3
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

Références

REFERENCES
1. Programmer en Java de Claude Delannoy aux éditions Eyrolles
2. Java client-serveur de Cédric Nicolas, Christophe Avare, Frédéric Najman chez Eyrolles.
Le premier livre est un excellent ouvrage d'introduction pédagogique au langage Java. Une fois acquis son contenu,
on pourra passer au second ouvrage qui présente des aspects plus avancés de Java (Java Beans, JDBC,
Corba/Rmi). Il présente une vue industrielle de Java intéressante. Pour approfondir Java dans différents
domaines, on pourra se référer à la collection "Java series« chez O'Reilly. Pour une utilisation professionnelle
de Java au sein d'une plate-forme J2EE on pourra lire :
3. Programmation j2EE aux éditions Wrox et distribué par Eyrolles, Septembre 98, juin 2002.
4. "Absolute Java, 4th edition« ,auteur: Walter Savitch, Editeur: Addison Wesley Hall / Pearson Education.
5. "Java Programming: From the Beginning« auteur: K. N. King, Editeur: W.W. Norton & company.
6. "The Java(TM) Programming Language" (4th Edition), auteurs: Ken Arnold, James Gosling, David Holmes,
Editeur: The Java(TM) series
7. "Java for Students" (5th Edition) Auteur: Doug Bell, Mike Parr, Editeur: Prentice Hall
8. Vous pouvez aussi vous contenter de complémenter les transparents du cours par le tutorial Java en ligne de Sun
et la documentation sur l'API.
9. http://curs.ing.pub.ro support de cours et transparents.

LP 2010-2011 IF 4
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les éléments de base du


langage Java

George DRAGOI

LP 2010-2011 IF 5
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory
1.2. Théorie générale de résolution
des problèmes (rappel)

On va détailler à la suite les étapes de résolution d’un problème par l’aide de


l’ordinateur
Apres l’analyse du problème et le choix de l’algorithme, celui-ci doit être traduit
(implémenté) dans un langage de programmation.

LP 2010-2011 IF 6
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

1.3. Construction d’un programme

L’écriture d’un programme représente le premier pas pour créer une application.
1. il faut trouver une modalité d’introduire les instructions du programme, parmi
les possibilités existantes :
¾ un éditeur de texte, par exemple, Microsoft Word ou Notepad, applications qui
sont inclues en Windows. Dans ce cas, il faut sauvé le document (fichier
source) dans un format de texte simple.
¾ un environnement intégré de développement (IDE – Integrated Development
Environment) qui est un éditeur de texte en combinaison avec d’autres outils de
programmation.

LP 2010-2011 IF 7
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

1.3. Construction d’un programme:


exemple en C++
La construction du programme représente le processus de conversion du code source
(les instructions C++) dans une application qui pourra être utilisée. On retrouve deux
étapes :
il faut compiler le programme par la conversion des instructions C++ en code machine
(code objet).
En cas échéant de la première étape, on continue par le programme de liens (link) qui
combine le code machine avec les lignes de code obtenues de la bibliothèque C++.
La bibliothèque C++ contient des fonctions qui sont appelées pour exécuter des
opérations communes. Ainsi, la bibliothèque C++ incluent des fonctions standard qui
peuvent envoyer des données vers le moniteur et qui savent lire et écrire dans les
fichiers de données sur le disque dur (harddisk) ou, par exemple, la fonction standard
sqrt (racine carré) qui vous aide en faisant les calculs nécessaires sans vous obliger
les faire vous mêmes.
LP 2010-2011 IF 8
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

1.3. Le processus de construction d’un


programme: exemple en C++

prog.cpp Compilateur prog.cbj


(code source C++) de C++ (code objet)

Programme de
liens

bibliothèque C++

prog.exe
(programme executable)

Si on utilise un environnement intégré de développement ces étapes seront exécuter


automatiquement en appuyant une touche fonctionnelle ou les barres d’outils.
LP 2010-2011 IF 9
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

1.3. Construction d’un programme

Si la construction a abouti, vous étés heureux parce que ni le compilateur ni le


programme de liens n’a pas trouvé des erreurs et vous croyez que vous avez déjà fini.
Il n’est pas vrai parce que le compilateur détecte les erreurs de syntaxe, mais il existe
d’autres erreurs qu’il ne peut pas les détecter.
Il faut donc passer au test du programme!
Maintenant vous cherchez en fait les possibles erreurs logiques de programme qui sont
parfois plus difficile à les détecter que les erreurs de syntaxe.
On suppose, par exemple, que le programme affiche un nombre qui n’est pas correcte
ou que le programme arrête sans un motif évident de son exécution.
Laquelle est l’instruction qui détermine ce problème ?
La réponse n’est pas toujours évidente.
Peut être que vous avez d’hypothèses qui ne sont toujours valables dans des différentes
situations.
LP 2010-2011 IF 10
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

1.3. Construction d’un programme

Ecriture en code source

Non
Compilation et liens
Succès?

Oui

Non Erreurs logiques?


Exécution et test de programme

Oui
Le programme est fini!

LP 2010-2011 IF 11
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

Maintenant passons vers Java!


2. Les constructions de base en
Java

LP 2010-2011 IF 12
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java


Java est un langage de programmation à usage général, évolué et orienté objet dont la syntaxe est proche du C.
La première partie est chargée de présenter les bases du langage java. Elle comporte les éléments suivants :
¾introduit le langage Java en présentant les différentes éditions et versions du JDK, les caractéristiques du
langage et décrit l'installation du JDK ;
¾les notions et techniques de base en Java : présente rapidement quelques notions de base et comment compiler
et exécuter une application ;
¾la syntaxe et les éléments de bases de Java : explore les éléments du langage d'un point de vue syntaxique ;
¾la programmation orientée objet : explore comment Java utilise et permet d'utiliser la programmation orientée
objet ;
¾les packages de bases : propose une présentation rapide des principales API fournies avec le JDK ;
¾les fonctions mathématiques : indique comment utiliser les fonctions mathématiques ;
¾la gestion des exceptions : explore la faculté de Java pour traiter et gérer les anomalies qui surviennent lors de
l'exécution du code ;
¾le multitâche : présente et met en oeuvre les mécanismes des threads qui permettent de répartir différents
traitements d'un même programme en plusieurs unités distinctes pour permettre leur exécution "simultanée" ;
¾JDK 1.5 (nom de code Tiger) : détaille les nouvelles fonctionnalités du langage de la version 1.5 ;
¾les annotations : présente les annotations qui sont des méta données insérées dans le code source et leurs
mises en oeuvre.
LP 2010-2011 IF 13
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

Java possède un certain nombre de caractéristiques qui ont largement contribué à son énorme succès :

le source est compilé en pseudo code ou byte code puis exécuté par un interpréteur Java : la
Java est interprété Java Virtual Machine (JVM). Ce concept est à la base du slogan de Sun pour Java : WORA
(Write Once, Run Anywhere : écrire une fois, exécuter partout). En effet, le byte code, s'il
ne contient pas de code spécifique à une plate-forme particulière peut être exécuté et obtenir
quasiment les même résultats sur toutes les machines disposant d'une JVM.

Java est portable : il est il n'y a pas de compilation spécifique pour chaque plate forme. Le code reste indépendant
indépendant de la machine sur laquelle il s'exécute. Il est possible d'exécuter des programmes Java sur
de toute plate-forme tous les environnements qui possèdent une Java Virtual Machine. Cette indépendance est
assurée au niveau du code source grâce à Unicode et au niveau du byte code.

Java est orienté objet comme la plupart des langages récents, Java est orienté objet. Chaque fichier source
contient la définition d'une ou plusieurs classes qui sont utilisées les unes avec les autres
pour former une application. Java n'est pas complètement objet car il définit des types
primitifs (entier, caractère, flottant, booléen,...).

LP 2010-2011 IF 14
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java


Les caractéristiques
Java est simple le choix de ses auteurs a été d'abandonner des éléments mal compris ou
mal exploités des autres langages tels que la notion de pointeurs (pour
éviter les incidents en manipulant directement la mémoire), l'héritage
multiple et la surcharge des opérateurs etc.

Java est fortement typé toutes les variables sont typées et il n'existe pas de conversion
automatique qui risquerait une perte de données. Si une telle conversion
doit être réalisée, le développeur doit obligatoirement utiliser un cast ou
une méthode statique fournie en standard pour la réaliser.

Java assure la gestion l'allocation de la mémoire pour un objet est automatique à sa création et
de la mémoire Java récupère automatiquement la mémoire inutilisée grâce au garbage
collector qui restitue les zones de mémoire laissées libres suite à la
destruction des objets.

LP 2010-2011 IF 15
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

.Il existe 2 types de programmes avec la version standard de Java : les applets et les applications.
Une application autonome (stand alone program) est une application qui s'exécute sous le contrôle direct du
système d'exploitation.
Une applet est une application qui est chargée par un navigateur et qui est exécutée sous le contrôle d'un plug in
de ce dernier.
¾Les principales différences entre une applet et une application sont :
¾les applets n'ont pas de méthode main() : la méthode main() est appelée par la machine virtuelle pour exécuter
une application.
¾les applets ne peuvent pas être testées avec l'interpréteur mais doivent être intégrées à une page HTML, elle
même visualisée avec un navigateur disposant d'un plug in sachant gérer les applets Java, ou testées avec l'applet
viewer.

LP 2010-2011 IF 16
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 17
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 18
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 19
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 20
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 21
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 22
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 23
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 24
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 25
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 26
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 27
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 28
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 29
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 30
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 31
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 32
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 33
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 34
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 35
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 36
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 37
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 38
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 39
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 40
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 41
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Les constructions de base en Java

LP 2010-2011 IF 42
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

Continuons!
Construction de base et Éléments de base du langage
Java!!
Attention! Ces cours seront une introduction
minimales pour que vous auriez tous les briques
nécessaires pour les Tp’s!
Il y a des éléments de base du langage qui seront
repris en détail au fur des cours suivants
LP 2010-2011 IF 43
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Eléments de base du langage

Nous traitons Java d'abord comme un langage de programmation classique. Nous aborderons les
objets ultérieurement.
Dans un programme on trouve deux choses : des données et les instructions qui les manipulent.
On s'efforce généralement de séparer les données des instructions.

Java utilise les types de données suivants:


¾les nombres entiers ;
¾les nombres réels ;
¾les caractères et chaînes de caractères ;
¾les booléens ;
¾les objets.

LP 2010-2011 IF 44
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2. Eléments de base du langage

Les types de données prédéfinies (voir le tableau) ainsi que la notation des données littérales en java

LP 2010-2011 IF 45
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2.1. Les types de données en java

LP 2010-2011 IF 46
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2.1. Les primitives

Les primitives : Les concepteurs de Java ont doté ce langage d’une série d’éléments particuliers appelés
primitives. Ces éléments ressemble à des objets, mais ne sont pas des objets ! Ils sont créés de façon différente, et
sont également manipulés en mémoire de façon différente. Cependant ils peuvent être enveloppés dans des objets
spécialement conçu à cet effet, et appelés enveloppeurs (wrappers).
Les classes BigInteger et BigDecimal sont utilisés pour représenter respectivement des valeurs entières et
décimales de précision quelconque. Il n’existe pas de primitives équivalentes. Le type char sert à représenter les
caractères, conformément au standard UNICODE. Il est le seul type numérique non signé ! Remarquons que le
type boolean n’est pas un type numérique.
Portabilité : A l’inverse de ce qui se passe avec les autres langages, la taille des primitives est toujours la même
en Java, et ce quelque soit l’environnement ou le type de la machine. On garantit ainsi la portabilité des
programmes Java.
Initialisation des primitives: Les primitives doivent être déclarées et initialisées avant d’être utilisées. Une
primitive non initialisée produira une erreur à la compilation :
« Variable may not have been initialized ».
Remarquons que les primitives, lorsqu’elles sont employées comme membre de classe, possède des valeurs par
défaut (tableau suivant). Il n’est donc pas nécessaire de les initialiser !

LP 2010-2011 IF 47
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory
Types de données en C++

2.2. Tables de primitives

LP 2010-2011 IF 48
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2.2. Table des primitives

Les valeurs littérales :

LP 2010-2011 IF 49
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

2.2. Casting sur les primitives

Casting sur les primitives


Les constantes : Java ne comporte pas de constantes à proprement parler. Il est cependant
possible de simuler l’utilisation de constantes à l’aide du mot clé final. Une variable déclarée
final ne peut plus être modifiée une fois qu’elle a été initialisée.
Lorsqu’un élément est déclaré final, le compilateur est à même d’optimiser le code compilé afin
d’améliorer sa vitesse d’exécution. Remarquons que les variables déclarées final peuvent être
initialisées lors de l’exécution et non seulement lors de leur déclaration !
Les handles
définition…
• final
L’utilisation de final n’est pas réservée aux primitives. Un handle d’un objet peut parfaitement
être déclaré final.
Cependant, la contrainte ne s’applique alors qu’au handle, qui ne peut plus voir son affectation
modifiée. L’objet, lui, reste modifiable.

LP 2010-2011 IF 50
PREMINV – Virtual Enterprises Management
and Engineering Training Laboratory

Ça suffit pour aujourd’hui!


Merci de votre attention!

LP 2010-2011 IF 51