Java

Page 1

Programmation orientée Objet en langage JAVA Pr. Jihane Alami Chentoufi Département d’Informatique Faculté des Sciences- Kénitra-

Année Universitaire: 20102010-2011


1. 2. 3. 4. 5. 6.

2

Introduction au langage Java Bases du langage Classes et Objets HĂŠritage HĂŠritage et polymorphisme Package, collections et exceptions

Pr. Jihane Alami


Partie 1: Introduction au langage Java

3

Pr. Jihane Alami


Langages de programmation Types de langage de programmation: 1. dépendants des machines: langage machine, assembleur : pas de

réutilisation suivant les plateformes. 2. procéduraux : basés sur le concept d'appel procédural, ex. C, Pascal,

Cobol, Fortran, VB, etc. 3. orientés objet : se fondent sur des objets qui peuvent regrouper des

données et des méthodes. Ex. C++(1980) , Ada95, Java.

4

Pr. Jihane Alami


POO Vs. Programmation Structurée Objectifs de la POO: 1. 2. 3. 4.

Facilité la réutilisation de code, encapsulation et abstraction Facilité de l’évolution du code Améliorer la conception et la maintenance des grands systèmes Programmation par « composants ». Conception d’un logiciel à la manière de la fabrication d’une voiture

Programmation structurée: 1. 2. 3.

5

Une zone pour les variables Une zone pour les fonctions Chaque fonction résout une partie du problème

Pr. Jihane Alami


Historique de Java Mis au point en 1991 par la firme Sun Microsystems ( Projet Green) :

- Nommé Oak (chêne en français) - Créé par James Gosling. - Objectif : concevoir un langage orienté objet spécifiquement conçu pour être indépendant des plateformes, robuste et fiable. Renommé Java en 1995

- Etendu, amélioré et sécurisé pour être utilisé sur Internet: capable de faire fonctionner des applets (des petites applications fonctionnant dans un navigateur)

6

Pr. Jihane Alami


Applications Java En Java on peut développer : Les applications : applications standards fenêtrées. Les applets : s’exécutent au sein d’un navigateur Web et sont automatiquement chargées

à partir d’un serveur Web. Servelets: des applications Java fonctionnant du côté serveur; permettent de gérer des

requêtes HTTP et de fournir au client une réponse HTTP dynamique (donc de créer des pages web dynamiques). Java Server Pages (JSP): permet aux développeurs de générer dynamiquement du code

HTML, XML ou tout autre type de page web.

7

Pr. Jihane Alami


Avantages Java Langage objet “pur“: il n’existe ni fonctions, ni procédures, la programmation se fait

uniquement par classes. Mémoire: la gestion de la mémoire n’est pas à la charge du programmeur ( présence

d’un « garbage collector ») Java est fondé sur une syntaxe très proche du C++ Robuste: typage des données très fort, pas de pointeur, etc. Sûr: mécanisme d’exception.(un débordement de tableau déclenchera une exception Portable: Java n’est pas compilé à destination d’un processeur, mais dans un code

intermédiaire pour être interprété sur la machine virtuelle. 8

Pr. Jihane Alami


Outils de développement Java Outils de développement gratuit :

http://www.oracle.com/technetwork/java/javase/downloads/index.html Software Developpement Kit (anciennement dénommé JDK) : 1.

javac,

2. java, 3.

appletviewer,

4. Javadoc 5. Jdb 6. etc Indépendance de la plateforme : le code compilé peut être exécuté sur de

nombreuses plateformes : 1.

Unix,

2. Windows, 3. Mac, 4. de gros calculateurs. 9

Pr. Jihane Alami


Versions de Java Avant Java 2, une seule édition JDK (édition standard). Java 2 comporte 3 éditions:

J2SE, Java 2 Standard Edition : développement d'applications pour ordinateurs personnels J2ME, Java 2 Micro Edition : pour systèmes embarqués J2EE, Java 2 Enterprise Edition : pour applications d’entreprises

Chaque édition propose un environnement complet pour le développement et l'exécution d'applications basées sur Java et comprend notamment JVM ainsi qu'un ensemble de classes.

10

Pr. Jihane Alami


Fonctionnement Fichier source Java: 1. 2. 1. 2. 1.

Fichier utilisé lors de la phase de programmation Le seul fichier réellement intelligible par le programmeur Byte-Code Java: Code objet destiné à être exécuté sur toute « Machine Virtuelle » Java Provient de la compilation du code source Machine Virtuelle Java: Programme interprétant le Byte-Code Java et fonctionnant sur un système d’exploitation particulier Conclusion : il suffit de disposer d’une « Machine Virtuelle » Java pour pouvoir exécuter tout programme Java même s ’il a été compilé avec un autre système d’exploitation

11

Pr. Jihane Alami


Machine virtuelle Java JVM Stations de travail, Network

Computers Téléphones portables Cartes à puces etc

12

Pr. Jihane Alami


Principales étapes d’un développement 1. Création du code source: Outil : éditeur de texte, IDE (Integrated Development

Environment) 2. Compilation en Byte-Code A partir du code source Outil : compilateur Java javac 3. Diffusion sur l’architecture cible Transfert du Byte-Code seul 4. Exécution sur la machine cible Exécution du Byte-Code java Outil : Machine Virtuelle Java 13

Pr. Jihane Alami


Compilation et exĂŠcution du code Java Compilation: javac [options] fichiers_sources

exemple : javac MaClasse.java MaClasse.class ExĂŠcution: java [options] nom_classe

exemple: java MaClasse lance la JVM

14

Pr. Jihane Alami


‘ PATH & CLASSPATH’ JDK

Bin

Lib

PATH: une variable d'environnement qui définit les répertoires où doivent être cherchés les exécutables lorsqu'une commande est tapée dans l'interpréteur de commandes MS-DOS. Poste de travail Avancé Variables d’environnement CLASSPATH: une variable d'environnement qui définit les répertoires où doivent être cherchés le byte-code et/ou les sources des classes java lorsqu’on utilise le compilateur java (javac) ou lancez la machine virtuelle java (java) Poste de travail Avancé Variables d’environnement

15

Pr. Jihane Alami


Partie 2: Bases du langage Java

16

Pr. Jihane Alami


Premier programme Java public class PremierProg { public static void main(String[ ] args) { System.out.println("Voci mon premier programme en Java"); } } public class PremierProg: Nom de la classe public static void main : La fonction principale équivalent à la fonction main du C/C++ String[] argv: Permet de récupérer des arguments transmis au programme au moment de son lancement System.out.println("Voci mon premier programme en Java"): Méthode d'affichage dans la fenêtre console

17

Pr. Jihane Alami


Types de variables Il existe deux types de données:

- Types primitifs: entiers, caractères, booléens, réels, …. - Types de référence : tableaux, objets.

18

Pr. Jihane Alami


Types primitifs Ne sont pas des objets; Syntaxe : <type> identificateur; Les différents types :

- Quatre types de données pour les valeurs entières : byte, short, int et long. - Deux types de données pour les valeurs décimales : float et double. - Un type de données qui permet de stocker un caractère: char. - Un type de données logique nommé boolean qui autorise seulement deux valeurs : true (vrai) ou false (faux).

19

Pr. Jihane Alami


Types primitifs Primitive

Signification

char

Caractère

2

byte

Entier très court

1

short

Entier court

2

int

Entier

4

long

Entier long

8

-9223372036854775808 à 9223372036854775807

float

flottant (réel)

4

-1.4*10-45 à 3.4*1038

double

flottant double

8

4.9*10-324 à 1.7*10308

1

0 ou 1 (toute autre valeur que 0 est considérée égale à 1)

boolean

20

Pr. Jihane Alami

booléen

Taille (en octets)

Plage de valeurs acceptée valeur de caractères Unicode (65000 caractères possibles) -128 à 127 -32768 à 32767 -2 147 483 648 à 2 147 483 647


Initialisation des variables Déclaration des constantes Initialisation 1.

Une variable peut recevoir une valeur au moment de sa déclaration : char a = ‘A’; int b = 1;

2.

Cette instruction joue le même rôle : char a; a= ‘A’; int b; b= 1;

Constantes 1. Ce sont des variables dont la valeur ne peut être affectée qu'une fois 2. Elles ne peuvent plus être modifiées 3. Elles sont définies avec le mot clé final

final int a = 5; final int b; b= 8; a= 10; // erreur : a est déclaré final

21

Pr. Jihane Alami


Structures de Contrôle 1.

Conditionnel Si alors sinon : « if condition {…} else {…} »

2.

Itérations Boucle pour: « for (initialisation ; condition ; modification) { … } » Tant que : « while (condition) { … } » Faire jusqu’à : « do { … } while (condition) »

3.

Sélection bornée/branchement conditionnel Selon faire : « switch choix { case valeur0 : … case valeur1 : … default: …} » Le mot clé break demande à sortir du bloc

22

Pr. Jihane Alami


Structures de Contr么le public class exempleIf{ public static void main (String[] argv) { int i = 10; if (i < 0) System.out.println("Le nombre est n茅gatif"); else System.out.println("Le nombre est positif"); } }

23

Pr. Jihane Alami


Structures de Contrôle public class exempleSwitch{ public static void main (String[] argv) { int nbre = 5; switch (nbre) { case 1: System.out.println("Ce nombre est tout petit"); break; case 2: System.out.println("Ce nombre est tout petit"); break; case 3: System.out.println("Ce nombre est un peu plus grand"); break; case 4: System.out.println("Ce nombre est un peu plus grand"); break; case 5: System.out.println("Ce nombre est la moyenne"); break; case 6: System.out.println("Ce nombre est tout de même grand"); break; case 7: System.out.println("Ce nombre est grand"); break; default: System.out.println("Ce nombre est très grand, puisqu'il est compris entre 8 et 10"); } } } 24

Pr. Jihane Alami


Structures de Contr么le public class exempleFor{ public static void main (String[] argv) { for(int i = 1; i <= 10; i++) { System.out.println("Voici la ligne "+i); } } }

25

Pr. Jihane Alami

public class exempleWhile{ public static void main (String[] argv) { int i = 0; while(i < 10) { System.out.print("i vaut : "+i); i ++; } } }


Structures de Contr么le public class exempleDoWhile{ public static void main (String[] argv) { int i =0; do { System.out.println("i est : " + i); i++; }while(i < 5); } }

26

Pr. Jihane Alami


Opérateurs sur les types primitifs Opérateurs arithmétiques 1. 2. 3. 4.

Unaires : « +a, -b » Binaires : « a+b, a-b, a*b, a%b » Incrémentation et décrémentation : « a++, b-- » Affectation élargie : « +=, -=, *=, /= »

Opérateurs comparaisons 1. 2. 3.

« a==b, a!=b, a>b, a<b, a>=b, a<=b » Et : « a && b » Ou : « a || b »

Conversion de type explicite (cast: typage forcé) 1.

« (NouveauType)variable » a = (int) b; c = (float) d; int i = (int)1.07;

27

Pr. Jihane Alami


Opérations sur les types primitifs Affecter et recopier un type primitif « a=b » signifie a prend la valeur de b Toute modification de a n’entraîne pas celle de b 2. Comparer un type primitif « a == b » retourne « true » si les valeurs de a et b sont identiques 1.

Affectation

28

Pr. Jihane Alami


Les tableaux en Java Fournissent des collections ordonnées d’éléments Les valeurs contenues sont repérées par un indice (de 0 à n-1), Les éléments d’un tableau peuvent être:

Des variables d’un type primitif (int, boolean, double, char, …) 2. Des références sur des objets (à voir dans la partie Classes et Objets) Les tableaux en Java sont considérés comme des objets 1.

Création d’un tableau 1. 2. 3.

29

Déclaration = déterminer le type du tableau Dimensionnement = déterminer la taille du tableau Initialisation = initialiser chaque case du tableau Pr. Jihane Alami


Les tableaux en Java: Déclaration Déclaration: précise simplement le type des éléments du tableau

Exemple: int [] tab; ou int tab [] ; //référence sur l’objet tab String chaine[ ]; ou String chaine[] //référence sur l’objet chaine Attention: une déclaration de tableau ne doit pas préciser de dimensions du tableau: int tab[5]; // erreur

30

Pr. Jihane Alami


Les tableaux en Java: Dimensionnement / instanciation Instanciation: dimensionne le tableau avec une taille fixe Le nombre d’éléments du tableau sera déterminé quand l’objet tableau sera

effectivement créé en utilisant le mot clé new La taille déterminée à la création du tableau est fixe, elle ne pourra plus être modifiée par la suite Longueur d’un tableau : «Tableau.length » Exemple: int[] Tableau; // Déclaration Tableau = new int[3]; // Dimensionnement La création d’un tableau par new: 1. Alloue la mémoire en fonction du type de tableau et de la taille 2. Initialise le contenu du tableau à 0 pour les types simples

31

Pr. Jihane Alami


Les tableaux en Java: Initialisation Initialisation:

Les indices commencent à zéro 2. l’accès à un élément d’un tableau s’effectue suivant cette forme: Tab[ind]; // ind>= 0 et <Tab.length 3. Java vérifie automatiquement l’indice lors de l’accès (exception levée) Autre façon d’initialisation : en donnant explicitement la liste de ses éléments entre {…} 1.

int[ ] monTab = {1, 2, 3} est équivalent à: monTab = new int[3]; monTab[0] = 1; monTab[1] = 2; monTab[2] = 3;

32

Pr. Jihane Alami


Les tableaux multidimensionnels en Java: Tableaux dont les éléments sont eux mêmes des

tableaux Déclaration: type[][] tab; Tableaux rectangulaires: Dimensionnement: tab = new type[2][3] Tableaux non-rectangulaires Dimensionnement : tab = new type[2] tab[0] = new type[2] tab[1] = new type[3] 33

Pr. Jihane Alami


Commentaires et mise en forme Documentation des codes sources

Utilisation des commentaires // Commentaire sur une ligne complète int b = 34; // Commentaire après du code /* Le début du commentaire ** Je peux continuer à écrire … Jusqu’à ce que le compilateur trouve cela */ 2. Utilisation de l’outil Javadoc (à voir dans la partie les Indispensables) Mise en forme Facilite la relecture Crédibilité assurée !!!! Indentation à chaque niveau de bloc 1.

34

Pr. Jihane Alami


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.