Académique Documents
Professionnel Documents
Culture Documents
ENSA de Fès
Université Sidi Mohammed Ben Abdellah
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 1/46
Les bases de JAVA
Objectif du cours
I Apprendre le langage JAVA (les applications, les APIs,...).
I Apprendre le paradigme de la Programmation Orientée Objet en JAVA.
I Utiliser des outils d’aide au développement (Environnement de
développement, ...).
Organisation
I 16h de cours : Concepts de la POO et JAVA.
I 16h de TP : Programmation JAVA et outils de développement.
Évaluation
I Examen * 0.53 + TP * 0.47. TP : 4 TP relevés et notés.
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 2/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 3/46
Les bases de JAVA
Introduction
JAVA
I JAVA est une langage de programmation moderne développé par Sun
Microsystems (Début des années 90 ), aujourd’hui racheté par Oracle.
I Il est compilé et basé sur une architecture logicielle très particulière
nécessitant une machine virtuelle Java.
I Il permet une programmation orientée-objet (à l’instar de SmallTalk et
C++), modulaire (langage ADA) et reprend une syntaxe très proche de celle
du langage C.
I Il est accompagné d’un ensemble énorme de bibliothèques standard couvrant
de très nombreux domaines.
I La technologie JAVA est indissociable du domaine de l’informatique et du
Web. On la retrouve donc sur les ordinateurs, mais aussi sur les téléphones
mobiles, les consoles de jeux, etc.
I La technologie Java regroupe aujourd’hui différents standards, des logiciels et
des communautés d’entreprises. Le terme est l’un des plus répandus sur la
Toile et dans le monde de l’informatique. Il a même été utilisé comme
symbole boursier au Nasdaq par Sun.
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 4/46
Les bases de JAVA
Introduction
Avantages
I simple: Plus simple que C++, nombreux mots clés éliminés, pas de
pointeurs visibles au niveau du programmeur..
I modulaire: On peut écrire des portions de code génériques, c-à-d utilisables
par plusieurs applications.
I Portable: Un même programme compilé peut s’exécuter sur différents
environnements.
I Rigoureux: La plupart des erreurs se produisent à la compilation et non à
l’exécution.
I Avantages de POO: Utilise les notions usuelles de la programmation
orientée objet : la notion de classe, d’encapsulation, d’héritage, d’interface,
de virtualité, de généricité,...
Inconvénient
I les applications Java ont le défaut d’être plus lentes à l’exécution que des
applications programmées en C++ par exemple.
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 5/46
Les bases de JAVA
Introduction
Il est possible d’utiliser Java pour créer des logiciels dans des environnements
très diversifiés:
I applications machine (IHM, Swing) ;
I applications sur client lourd (JFC) ;
I applications Web, côté serveur (servlets, JSP, Struts, JSF, J2EE) ;
I applications réparties (EJB) ;
I applications embarquées (J2ME) ;
I applications sur carte à puce (JavaCard).
Ces applications peuvent être enrichies par de nombreuses fonctionnalités:
I accès à des bases de données (JDBC et JDO) ;
I accès à des annuaires (JNDI) ;
I traitements XML (JAXP) ;
I connexion à des ERP (JCA) ;
I accès à des traitements en d’autres langages (JNI) ;
I services web (JAX-RPC, JAXM, JAXR) ;
I multimédia (Java Media) ;
I téléphonie (JTAPI) ;
I télévision interactive (Java TV).
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 6/46
Les bases de JAVA
Environnement Java
Java est un langage interprété, ce qui signifie qu’un programme compilé
n’est pas directement exécutable par le système d’exploitation mais il doit
être interprété par un autre programme, qu’on appelle interpréteur.
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 7/46
Les bases de JAVA
Environnement Java
Un programmeur Java écrit son code source, sous la forme de classes, dans
des fichiers dont l’extension est .java. Le langage source Java est défini par
la JLS (Java Language Specification) éditée par Sun-Oracle.
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 8/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 9/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 10/46
Les bases de JAVA
Premier exemple
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 11/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 12/46
Les bases de JAVA
En plus de ces types primitifs, le terme void est utilisé pour spécifier le
retour vide ou une absence de paramètres d’une méthode.
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 13/46
Les bases de JAVA
I Exemple de déclaration:
int a ;
int a , b , c ; // Multiple d é clarations é quivalent à
int a ; int b ; int c ;
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 14/46
Les bases de JAVA
int a = 10;
int b = a * ( int )2.5; // r é sultat : 20
int b = ( int )( a * 2.5); // r é sultat : 25
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 15/46
Les bases de JAVA
Les expressions
Dans la plupart des langages, on trouve, comme en Java :
I d’une part, des expressions formées (entre autres) à l’aide d’opérateurs et
variables;
I d’autre part, des instructions pouvant éventuellement faire intervenir des
expressions, comme, par exemple, l’instruction d’affectation :
y = a * x + b ;
++ i ; // é quivalent à i = i + 1
i = 5 ;
i +=5 ; // é quivalent à i = i + 5
k = i = 5 ; // é quivalent à k = ( i = 5)
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 16/46
Les bases de JAVA
Les opérateurs
Les opérateurs sont des symboles qui permettent de manipuler des variables,
c’est-à-dire effectuer des opérations, les évaluer, etc.
On distingue plusieurs types d’opérateurs :
Incrémentation
Affectation /Décrémentation
Arithmétique Logiques Comparaison Autre
+a
a = b -a
a += b a + b
a -= b a - b
a == b
a *= b a * b
++a a != b a(...)
a /= b a / b !a
--a a < b a, b
a %= b a % b a && b
a++ a > b ? :
a &= b ~a a || b
a-- a <= b a.b
a |= b a & b
a >= b
a ^= b a | b
a <<= b a ^ b
a >>= b a << b
a >> b
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 17/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 18/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 19/46
Les bases de JAVA
Pour pouvoir récupérer les données saisie, Il suffit de créer un objet Scanner
avec en argument le flux d’entrée standard, System.in, puis d’appeler une
méthode nextXXX() selon le type primitif XXX à lire.
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 21/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 22/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 23/46
Les bases de JAVA
I Où condition est une expression dont la valeur est booléenne ou entière.
Toute valeur non nulle est considérée comme vraie. Si le test est vrai,
instruction est exécutée.
I Il est possible de définir plusieurs conditions à remplir avec les opérateurs ET
et OU (&& et ||).
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 24/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 25/46
Les bases de JAVA
Dans le cas où plusieurs instructions différentes doivent être exécutées selon
la valeur d’une variable de type intégral, Le Java fournit donc la structure de
contrôle switch, qui permet de réaliser un branchement conditionnel:
Syntaxe
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 26/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 27/46
Les bases de JAVA
Structure conditionnelle ”? :”
int x = 10 , y = 20;
int max = ( x < y ) ? y : x ; // Maintenant , max vaut 20
int x = 10 , y = 20;
int max = ( x < y ) ? y * 2 : x * 2 ; // Ici , max vaut 2 * 20 donc 40
int x = 10 , y = 20;
int max = ( x < y ) ? ( y < 10) ? y % 10 : y * 2 : x ; // max vaut 40
/** On peut entourer la deuxi è me instruction ternaire par des parenth è ses
pour mieux voir : */
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 28/46
Les bases de JAVA
La boucle for est une structure de contrôle qui permet de répéter un certain
nombre de fois une partie d’un programme. Elle permet de condenser:
I Un compteur: une instruction consiste à préciser le nom de la variable qui
sert de compteur et éventuellement sa valeur de départ.
I Une condition: une expression dont la valeur déterminera la fin de la boucle.
I Une itération: une instruction qui incrémente ou décrémente le compteur.
Syntaxe
for ( compteur ; condition ; it é ration )
{
instructions ;
}
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 29/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 30/46
Les bases de JAVA
Exemple
public class Main {
public static void main ( String [] args ){
Syntaxe int i = 1;
// affiche les valeurs de 1 jusqu ’à 9
while ( condition )
while ( i < 10)
{
{
instructions ;
System . out . println ( " " + i );
}
i ++ ;
}
}
}
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 31/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 32/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 33/46
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 34/46
Les bases de JAVA
La récursivité
La fonction doit comporter un test d’arrêt (des appels récursifs) qu’il est
conseillé de mettre en début de fonction.
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 35/46
Les bases de JAVA
La récursivité
Exemples
Factorielle
Par exemple, la fonction factorielle peut être définie sous forme récursive de
la manière suivante:
si n=0 alors factorielle(n)=1 sinon factorielle(n)=n*factorielle(n-1)
Lorsque n >= 1, il y a récursivité car la définition de factorielle(n) fait appel
à factorielle(n-1).
Suite de Fibonacci
( F (0) = 0
F (1) = 1 (1)
F (n) = F (n − 1) + F (n − 2) si n > 1
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 36/46
Les bases de JAVA
La récursivité
Exemples
implémentation en Java:
Factorielle
long fact ( int N )
{
if ( N == 0)
return 1;
else
return N * fact (N -1);
}
Suite de Fibonacci
long Fibonacci ( int N )
{
if ( N == 0)
return 0;
elseif ( N == 1)
return 1;
else
return Fibonacci (N -1) + Fibonacci (N -2);
}
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 37/46
Les bases de JAVA
Ruptures de séquence
break et continue
Exemple
for ( int i =0; i <10 ; i ++){
if ( i ==5) continue ; // Si i =5 , on passe à 6 sans afficher
if ( i ==7) break ; // Si i =7 , on sort de la boucle
System . out . println ( " The value of i is : " + i ); // 0 , 1 , 2 , 3 , 4 , 6
}
System . out . println ( " The value of i is : " + i ); // 7
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 38/46
Les bases de JAVA
Les tableaux
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 39/46
Les bases de JAVA
Les tableaux
Création du tableau - Tableaux unidimensionnels
Lors de la définition d’un tableau, les [ ] spécifiant qu’il s’agit d’un tableau,
ils peuvent être placés avant ou après le nom du tableau :
TypeDuTableau NomDuTableau [] ; // Ou encore
TypeDuTableau [] NomDuTableau ;
Exemple de déclaration :
int TEntier [];
char [] TCaractere ;
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 40/46
Les bases de JAVA
Les tableaux
Manipulation des éléments - Tableaux unidimensionnels
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 41/46
Les bases de JAVA
Les tableaux
Manipulation des éléments - Tableaux unidimensionnels
On peut ainsi effectuer une action sur chacune des cases d’un tableau, l’une
après l’autre : par exemple afficher le contenu des cases.
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 42/46
Les bases de JAVA
Les tableaux
Création du tableau - Tableaux multidimensionnels
Exemple de déclaration :
double [][] matrice ;
double [] matrice [] ;
double matrice [][];
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 43/46
Les bases de JAVA
Les tableaux
Création du tableau - Tableaux multidimensionnels
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 44/46
Les bases de JAVA
Les tableaux
Manipulation des éléments - Tableaux multidimensionnels
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 45/46
Les bases de JAVA
String s1 ;
String s1 , s2 ;
I Déclaration et initialisation:
I Opérations essentielles:
Pr. Abdessamad EL BOUSHAKI (ENSA de Fès) Programmation Orientée Objet avancée en JAVA 46/46