44 0 441KB
Les bases de JAVA
Programmation Orient´ee Objet avanc´ee en JAVA Module: M22 - 4i`eme Ann´ee FI-GTR
Pr. Abdessamad EL BOUSHAKI [email protected] ENSA de F` es Universit´ e Sidi Mohammed Ben Abdellah
Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
1/46
Les bases de JAVA
Programmation orient´ee objet avanc´ee en JAVA Objectif du cours I
Apprendre le langage JAVA (les applications, les APIs,...).
I
Apprendre le paradigme de la Programmation Orient´ee Objet en JAVA.
I
Utiliser des outils d’aide au d´eveloppement (Environnement de d´eveloppement, ...).
Organisation I
16h de cours : Concepts de la POO et JAVA.
I
16h de TP : Programmation JAVA et outils de d´eveloppement.
´ Evaluation I
Examen * 0.53 + TP * 0.47. TP : 2 TP relev´es et not´es.
Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
2/46
Les bases de JAVA
Les bases de JAVA
Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
3/46
Les bases de JAVA
Introduction JAVA I JAVA est une langage de programmation moderne d´ evelopp´e par Sun Microsystems (D´ebut des ann´ees 90 ), aujourd’hui rachet´e par Oracle. I
Il est compil´e et bas´e sur une architecture logicielle tr`es particuli`ere n´ecessitant une machine virtuelle Java.
I
Il permet une programmation orient´ee-objet (`a l’instar de SmallTalk et C++), modulaire (langage ADA) et reprend une syntaxe tr`es proche de celle du langage C.
I
Il est accompagn´e d’un ensemble ´enorme de biblioth`eques standard couvrant de tr`es 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´el´ephones mobiles, les consoles de jeux, etc.
I
La technologie Java regroupe aujourd’hui diff´erents standards, des logiciels et des communaut´es d’entreprises. Le terme est l’un des plus r´epandus sur la Toile et dans le monde de l’informatique. Il a mˆeme ´et´e utilis´e comme symbole boursier au Nasdaq par Sun. Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
4/46
Les bases de JAVA
Introduction Avantages I
simple: Plus simple que C++, nombreux mots cl´es ´elimin´es, pas de pointeurs visibles au niveau du programmeur..
I
modulaire: On peut ´ecrire des portions de code g´en´eriques, c-`a-d utilisables par plusieurs applications.
I
Portable: Un mˆeme programme compil´e peut s’ex´ecuter sur diff´erents environnements. Rigoureux: La plupart des erreurs se produisent `a la compilation et non `a l’ex´ecution.
I
I
Avantages de POO: Utilise les notions usuelles de la programmation orient´ee objet : la notion de classe, d’encapsulation, d’h´eritage, d’interface, de virtualit´e, de g´en´ericit´e,...
Inconv´enient I les applications Java ont le d´ efaut d’ˆetre plus lentes `a l’ex´ecution que des applications programm´ees en C++ par exemple. Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
5/46
Les bases de JAVA
Introduction Il est possible d’utiliser Java pour cr´eer des logiciels dans des environnements tr`es diversifi´es: I I I I I I
applications applications applications applications applications applications
machine (IHM, Swing) ; sur client lourd (JFC) ; Web, cˆ ot´e serveur (servlets, JSP, Struts, JSF, J2EE) ; r´eparties (EJB) ; embarqu´ees (J2ME) ; sur carte ` a puce (JavaCard).
Ces applications peuvent ˆetre enrichies par de nombreuses fonctionnalit´es: I I I I I I I I I
acc`es ` a des bases de donn´ees (JDBC et JDO) ; acc`es ` a des annuaires (JNDI) ; traitements XML (JAXP) ; connexion ` a des ERP (JCA) ; acc`es ` a des traitements en d’autres langages (JNI) ; services web (JAX-RPC, JAXM, JAXR) ; multim´edia (Java Media) ; t´el´ephonie (JTAPI) ; t´el´evision interactive (Java TV). Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
6/46
Les bases de JAVA
Environnement Java Java est un langage interpr´ et´ e, ce qui signifie qu’un programme compil´e n’est pas directement ex´ecutable par le syst`eme d’exploitation mais il doit ˆetre interpr´et´e par un autre programme, qu’on appelle interpr´ eteur.
Figure : La compilation du programme p1.java en son ´equivalent p1.class en bytecode.
Figure : L’interpr´etation du bytecode p1.class sur n’importe quel ordinateur disposant d’un interpr´eteur de bytecode (ind´ependamment du langage machine de cet ordinateur). Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
7/46
Les bases de JAVA
Environnement Java Un programmeur Java ´ecrit son code source, sous la forme de classes, dans des fichiers dont l’extension est .java. Le langage source Java est d´efini par la JLS (Java Language Specification) ´edit´ee par Sun-Oracle. Ce code source est alors compil´e par le compilateur javac en un langage interm´ediaire appel´e bytecode et enregistre le r´esultat dans un fichier dont l’extension est .class. Le bytecode ainsi obtenu n’est pas directement utilisable. Il doit ˆetre interpr´et´e par la machine virtuelle de Java (JVM) qui transforme alors, avec la comande java, le code compil´e en code machine compr´ehensible par le syst`eme d’exploitation. Le rˆ ole de la JVM est d’abstraire le comportement d’une machine pour rendre le possible ind´ependant de la plateforme. on parle plus commun´ement de JRE (Java Runtime Environment).
Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
8/46
Les bases de JAVA
Installer les outils de d´eveloppement Les outils de d´eveloppement Java (JDT) constituent un ensemble d’extensions du plan de travail qui permet d’´editer, de compiler et d’ex´ecuter des programmes Java. JRE ou JDK: I
I
Java Runtime Environment (JRE): environement qui permet d’ex´ecuter applications java. Il contient le JVM, les biblioth`eques de base et d’autres composants suppl´ementaires pour l’ex´ecution d’applications et d’applets ´ecrits dans Java (ex. Java SE). Java Development Kit (JDK) : il s’agit d’un bundle de logiciels qui peut ˆetre utilis´e pour d´evelopper des programmes Java. Il contient le JRE, un jeu de classes API, un compilateur Java, Web Start et d’autres fichiers requis pour l’´ecriture d’applets et d’applications Java.
IDE: I
Integrated Development Environment (IDE): un outil de d´eveloppement permet notamment d’´ecrire, de compiler, d’ex´ecuter et de d´eboguer des applications depuis une interface graphique simplifi´ee. Les trois IDE les plus souvent choisis pour le d´eveloppement Java sont IntelliJ IDEA, Eclipse IDE, and NetBeans. Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
9/46
Les bases de JAVA
Installer les outils de d´eveloppement
Figure : JVM vs JRE vs JDK.
Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
10/46
Les bases de JAVA
Premier exemple
Dans un fichier de nom HelloWorld.java I
I
R` egle: toute classe publique doit ˆ etre dans un fichier qui a le mˆ eme nom que la classe. R` egle: tout code doit ˆ etre ` a l’int´ erieur d’une classe.
public class HelloWorld { /* Un style de commentaire sur plusieurs lignes . */ public static void main ( String [] args ) { // Un commentaire sur une seule ligne System . out . println ( " Bonjour a ` vous les JTR ! " ); } }
C ¸ a d´efinit une classe, qui est une unit´e de compilation. Comme il y a une m´ethode main, cette classe est ex´ ecutable.
Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
11/46
Les bases de JAVA
Variables et types de donn´ees Identificaton
Les contraintes suivantes sont `a respecter dans l’´ecriture des noms de variables : I
I I
I
I
Le premier caract`ere d’une variable doit obligatoirement ˆetre diff´erent d’un chiffre. Aucun espace ne peut figurer dans un nom. Les majuscules sont diff´erentes des minuscules, et tout nom de variable poss´edant une majuscule est diff´erent du mˆeme nom ´ecrit en minuscule. Les caract`eres sp´eciaux ne peuvent ˆetre utilis´es dans l’´ecriture d’un nom de variable. Tout autre caract`ere peut ˆetre utilis´e, y compris les caract`eres accentu´es, le caract`ere de soulignement ( ) et les caract`eres $.
Nom de variable autoris´ e compte num 2 (” ” et non pas ”-”) undeux (et non pas un deux) VALEUR temporaire Val$solde Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Nom de variable interdit pourquoi#pas 2001espace -plus @adresse ah!ah! Programmation Orient´ ee Objet en JAVA
12/46
Les bases de JAVA
Variables et types de donn´ees Types primitifs
Les types primitifs de Java se r´epartissent en quatre grandes cat´egories selon la nature des informations qu’ils permettent de repr´esenter : I I I I
Entiers: byte, short, int et long, tous sign´es. Nombres ` a virgule flottante: float et double. Caract` eres: char. Bool´ eens : boolean, pour les valeurs logiques.
Le tableau suivant en r´ecapitule leurs caract´eristiques: Type boolean byte char short int long
Classe ´ eq. Boolean Byte Character Short Integer Long
Taille 8 bits 8 bits 16 bits 16 bits 32 bits 64 bits
Valeurs true ou false entier sign´e caract`ere entier sign´e entier sign´e entier sign´e
float
Float
32 bits
r´eel sign´e
{-3.402823438 ..3.402823438 } {-1.40239846-45 ..1.40239846-45 }
0.0
r´eel sign´e
{-1, 797693134308 ..1, 797693134308 } {-4, 94065645-324 ..4, 94065645-324 }
0.0
double
Double
64 bits
Port´ ee N/A {-128..128} {/u0000../uFFFF} {-32768..32767} {-2147483648..2147483647} {-231 ..231 -1}
D´ efaut false 0 /u0000 0 0 0
En plus de ces types primitifs, le terme void est utilis´e pour sp´ecifier le retour vide ou une absence de param`etres d’une m´ethode. Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
13/46
Les bases de JAVA
Variables et types de donn´ees D´ eclarer une variable
Comme en C++, la d´eclaration des variables doit s’effectuer avant leur utilisation n’importe o` u dans un bloc. I
Le syntaxe de d´eclaration: type NomDeVariable ;
I
Exemple de d´eclaration: int a ; int a , b , c ; // Multiple d ´ e clarations e ´ quivalent ` a int a ; int b ; int c ;
I
Une variable peut recevoir une valeur initiale au moment de sa d´eclaration, comme dans: int a = 5; // ´ e quivalent ` a int a ; a =5;
I
D´eclaration des constantes avec le mot-cl´e final: final char c = ’A ’; // exemple de constante caract e ` re final int i = 2017; // exemple de constante enti ` e re final double PI = 3.14; // exemple de constante r ` e el Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
14/46
Les bases de JAVA
Variables et types de donn´ees Transtypage
Le transtypage (ou cast) est la conversion d’une expression d’un certain type en une expression d’un autre type. On distingue deux types de transtypage: I
Conversion implicite: Faite automatiquement par le compilateur lorsque plusieurs types de donn´ees sont impliqu´es dans une op´eration. I
I
En Java, la conversion automatique est seulement possible lorsque le compilateur sait que la variable destination est assez grande. Dans le cas des types primitifs, la hi´ erarchie est la suivante : byte est plus bas que short, short plus bas que int, char plus bas que int, int plus bas que long, long plus bas que float, float plus bas que double. Le type boolean est incomparable avec les autres types de base.
double a = 0.5 * 8; // a =0.5 * 8.0 = 4.0 I
Conversion explicite: Cette conversion est demand´ee par le programmeur avec la syntaxe suivante: (nouveau type)expression int a = 10; int b = a * ( int )2.5; // r ´ e sultat : 20 int b = ( int )( a * 2.5); // r ´ e sultat : 25 Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet 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´ees (entre autres) ` a l’aide d’op´erateurs et variables;
I
d’autre part, des instructions pouvant ´eventuellement faire intervenir des expressions, comme, par exemple, l’instruction d’affectation : y = a * x + b ;
dans laquelle apparaˆıt l’expression a ∗ x + b ;
En Java, les notions d’expression et d’instruction sont ´etroitement li´ees puisque la principale instruction de ce langage est une expression termin´ ee par un point-virgule. On la nomme souvent ”instruction expression”. Voici des exemples de telles instructions qui reprennent les expressions ´evoqu´ees ci-dessus : ++ i ; // e ´ quivalent ` a i = i + 1 i = 5 ; i +=5 ; // e ´ quivalent ` a i = i + 5 k = i = 5 ; // e ´ quivalent ` a k = ( i = 5) Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Programmation Orient´ ee Objet en JAVA
16/46
Les bases de JAVA
Les op´erateurs Les op´erateurs sont des symboles qui permettent de manipuler des variables, c’est-`a-dire effectuer des op´erations, les ´evaluer, etc. On distingue plusieurs types d’op´erateurs : Affectation a = b a += b a -= b a *= b a /= b a %= b a &= b a |= b a ^= b a = b
Incr´ ementation /D´ ecr´ ementation
Arithm´ etique
++a --a a++ a--
+a -a a + b a - b a * b a / b a % b ~a a & b a | b a ^ b a > b
Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Logiques
Comparaison
Autre
!a a && b a || b
a == b a != b a < b a > b a = b
a(...) a, b ? : a.b
Programmation Orient´ ee Objet en JAVA
17/46
Les bases de JAVA
Les priorit´es relatives des op´erateurs Lorsque plusieurs op´erateurs apparaissent dans une mˆeme expression, il est n´ecessaire de savoir dans quel ordre ils sont mis en jeu. En Java, comme dans les autres langages, les r`egles sont naturelles et rejoignent celles de l’alg`ebre traditionnelle: Priorit´ e *************** ************** ************* ************ *********** ********** ********* ******** ******* ****** ***** **** *** ** *
Cat´ egorie R´ef´erence Unaire Arithm´etique Arithm´etique D´ecalage Relationnels Relationnels Manipulation de bits Manipulation de bits Manipulation de bits Logique Logique Conditionnel (ternaire) Affectation S´equentiel
Pr. Abdessamad EL BOUSHAKI (ENSA de F` es)
Op´ erateurs () [] . + - ++ -- ! ^ * & * / % + > < >= instanceof == != & ~ | && || ? : = += -= *= /= %= &= ~= |= >>= 1
Programmation Orient´ ee Objet en JAVA
36/46
Les bases de JAVA
La r´ecursivit´e Exemples
impl´ementation 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` es)
Programmation Orient´ ee Objet en JAVA
37/46
Les bases de JAVA
Ruptures de s´equence break et continue
L’instruction break est utilis´ee pour sortir imm´ediatement d’un bloc d’instructions (sans traiter les instructions restantes dans ce bloc). L’instruction continue est utilis´ee pour ignore le reste des instructions et passe tout de suite `a l’it´eration suivante (au d´ebut de la boucle). Exemple for ( int i =0; i