Télécharger la présentation
1
Présentation du langage Java
Chapitre I ~ A. P. ~
2
1 - Généralités ~ A. P. ~
3
Caractéristiques générales
Java est un langage de programmation développé par Sun Microsystems à partir des années 95 C’est un langage " à objets " classes objets messages héritage programmation objet uniquement ~ A. P. ~
4
Caractéristiques générales
Java est un langage sécurisé pas de pointeurs mais des références pas de dépassement d'indice de tableau pas de conversion implicite de types tous les objets sont créés dynamiquement nettoyage automatique de la mémoire complexité de l'héritage multiple contournée par la notion d'interface ~ A. P. ~
5
Caractéristiques générales
Java implémente des mécanismes avancés programmation parallèle multithread synchronisation, exclusion mutuelle, communication portabilité le compilateur génère un pseudo code (le byte-code) exécuté par la machine virtuelle propre à chaque environnement distribution du code chargement dynamique code mobile ~ A. P. ~
6
Caractéristiques générales
Java est un langage simple syntaxe familière similaire à celle du C++ le corpus des règles est limité les constructions sont simples les données sont typées suivant des standards (C2, IEEE 754, Unicode) La difficulté de programmation réside essentiellement dans la maîtrise des concepts objets (cf. cours C++) ~ A. P. ~
7
2 – Développer avec Java ~ A. P. ~
8
Les types d'application
Programme Java p-code obtenu par la compilation d'un source écrit en langage Java exécuté de manière autonome à l'aide de l'interpréteur Java Virtual Machine (JVM). correspond à une application au sens classique Applet p-code invoqué depuis des documents HTML exécuté à l'intérieur du navigateur ou encore grâce à un programme dédié l'appletviewer résidant sur le serveur et téléchargé via le réseau ~ A. P. ~
9
Les types d'application
Mais aussi… Servlet Java = applet côté serveur et sans interface utilisateur Java Beans = composants logiciels écrits en Java et réutilisables JavaScript = langage frère de Java simplifié pour être directement intégré dans une page HTML afin d'effectuer des traitements sur le poste client ~ A. P. ~
10
Chaîne de développement
Écriture à l'aide d'un éditeur du fichier source d'extension .java (exemple NomFic.java) Compilation du source pour compiler javac NomFic.java on obtient le fichier de byte-code NomFic.class Exécution du byte-code pour une application java NomFic.class pour une applet on invoque le code à l'intérieur d'une page HTML grâce aux balises <applet code = "NomFic.class" …</applet> ~ A. P. ~
11
Chaîne de développement
Exemple de fichier source // HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } ~ A. P. ~
12
Chaîne de développement
Remarques : tout fichier source .java doit avoir une classe déclarée public portant le même nom que le fichier sans l'extension (ici class HelloWorld ) pas de fonctions ou de variables globales : même le point d'entrée du programme main appartient à une classe l'usage veut qu'un fichier source ne contienne qu'une seule classe ~ A. P. ~
13
Chaîne de développement
Compilation et exécution avec le JDK $javac HelloWorld.java $java HelloWorld Hello World! $ ~ A. P. ~
14
Chaîne de développement
Exemple : HelloWorld.java javac HelloWorld.java HelloWorld.class Fichier source Programme compilé (p-code) Compilation Moteur d’interprétation p-code Registres / piles virtuels Machine virtuelle Java Système d'Exploitation Unix, Windows, Mac, etc. java HelloWorld Source P.Emy CERTA ~ A. P. ~
15
Les outils Le minimum requis Pour les applets il faut en plus
un éditeur de texte (exemple TextPad) javac le compilateur java l'interpréteur de byte-code Pour les applets il faut en plus soit le visualiseur appletviewer soit une connexion réseau la pile protocolaire TCP/IP un navigateur avec un interpréteur Java ~ A. P. ~
16
Les outils le JRE (Java Runtime Environment) représente la machine virtuelle Java nécessaire pour exécuter une application Java (dépend de la machine et du système d'exploitation) le SDK (Standard Development Kit) anciennement appelé JDK, comprend l'ensemble des outils pour développemer une application Java une JRE, le compilateur et les bibliothèques divers outils comme javadoc ou jar ~ A. P. ~
17
Les outils L'utilitaire jar (Java Archive) permet
d'archiver des classes Java mais aussi des fichiers image ou audio de distribuer ou d'installer une application Pour créer un fichier jar jar –options [path][…] options identiques à celles de l'utilitaire tar d'Unix Pour récupérer le contenu d'un fichier jar par la ligne de commande jar –t [path][…] dans une applet par <APPLET CODE="….class" ARCHIVE="….jar" …> ~ A. P. ~
18
Les outils Ces outils de base sont téléchargeables à partir du site de Sun microsystems Il existe aussi de nombreux IDE Jbuilder de Borland Jdeveloper d'Oracle Visual Café de Symantec Websphere d'IBM les "open source" NetBeans et Eclipse ~ A. P. ~
19
Quelques références Bibliographie Quelques liens
HORSTMANN CORNELL, Au cœur de JAVA, Volume 1 et volume 2, CAMPUSPRESS [1999] DELANNOY, Programmer en JAVA, EYROLLES [2000] LEMAY CADENHEAD, JAVA 2, CAMPUSPRESS [2002] HORTON, Maîtrisez Java 2, CAMPUSPRESS [2001] Quelques liens ~ A. P. ~
20
3 - Éléments du langage ~ A. P. ~
21
Mots réservés en Java ~ A. P. ~
22
Les identificateurs Identificateur = nom des différents éléments du programme variable ex: totalGeneral constante ex: TAILLE méthode ex: int getX() classe ex: class MaClasse package ex: java.util.Vector Formé à partir de lettres, de chiffres et des caractères _ et $ (à éviter comme premier caractère) ~ A. P. ~
23
Les symboles Caractères ou groupe de caractères pour représenter des opérateurs pour représenter des caractères spéciaux & ~ { } ( ) [ ] | \ / * % , ; . < > = ! ^ ? : Exemples: == opérateur d'égalité >>> opérateur de décalage binaire à droite non signé ~ A. P. ~
24
Les commentaires 3 styles de commentaires
plusieurs lignes /* ceci est un commentaire qui se termine ici */ sur une ligne // commentaire sur une ligne destiné au générateur automatique de documentation JavaDoc /** commentaire destiné à l'outil de documentation automatique */ ~ A. P. ~
25
Les commentaires JavaDoc
Ils permettent de documenter la classe en même temps que le codage Le programme javadoc génère des fichiers HTML de documentation à partir des fichiers Java On peut inclure du code HTML dans les commentaires Javadoc ~ A. P. ~
26
Les commentaires JavaDoc
Permet de décrire si nécessaire pour une classe ses spécifications sa version son auteur Dans la classe on peut également préciser le rôle de chaque attribut décrire les méthodes (paramètres, valeur retournée, exceptions pouvant être éventuellement générer) meilleure lisibilité du programme ~ A. P. ~
27
Les types en Java Les types en Java se classent en 2 catégories
les types primitifs ou types de base les caractères les entiers les réels les booléens les types références les tableaux tous les objets manipulés Important pour le passage de paramètres aux méthodes qui se fait par valeur ~ A. P. ~
28
Les types primitifs Entier: Réel:
type codé en C2 byte 1 Ø, short 2 Ø, int 4 Ø, long 8 Ø Réel: type codé en IEEE 754 float 4 Ø, double 8 Ø Caractère : type char codé en Unicode sur 2 Ø Booléens: type boolean codé sur 1 bit ~ A. P. ~
29
Les types primitifs ~ A. P. ~
30
Les types primitifs Codage des caractères
ASCII sur 128 premiers caractères les 128 autres = caractères des divers langages les suivants = divers symboles Les caractères sont écrits entre ’ainsi la séquence ’\uNNNN’ désigne le caractère dont la valeur Unicode est NNNN ’\u0020’signifie blanc ( identique à ' ') ’\u0041’signifie A ( identique à 'A') ’\’’ signifie ’ ’\\’ signifie \ ~ A. P. ~
31
Les variables Déclaration identique au C++ Une variable représente
Type variable; Type variable = valeur; Une variable représente soit l'attribut d'une classe soit une variable de classe soit une variable locale à une méthode de classe Caractéristiques conversion toujours explicite et identique au C var1 = (type_force) var2; portée limitée au bloc { } de déclaration ~ A. P. ~
32
Les variables Exemples :
boolean encore = true; // initialisation à vrai int x = 10; // decimal int x = 0x0A; // hexadécimal int x = 10L; // entier long float y = F; // réel simple précision x = (int) y; // transtypage d'un réel vers un int float z = -2.45E-3F; // réel avec exposant double pi = D; // réel double précision char rep = 'n'; char rep = '\u006e'; // code ASCII de 'n' ~ A. P. ~
33
Les constantes Une constante est définie à l'aide de final et est toujours initialisée final type MACONSTANTE = valeur; Exemples: final float CM_PAR_POUCE = 2.54F; final double E = D; Une constante de classe est définie à l'aide de static final Exemple: static final float PI = F; ~ A. P. ~
34
Les constantes Caractères spéciaux:
'\b' caractère backspace (retour arrière) '\f' caractère saut de page (formfeed) '\n' caractère saut de ligne (new line) '\r' caractère retour chariot '\t' caractère de tabulation '\\' caractère \ '\'' caractère ' ~ A. P. ~
35
Les opérateurs Opérateur d'affectation =
Opérateurs arithmétiques * / % = -= *= /= %= Opérateurs relationnels > >= == != < <= Opérateurs logiques && || ! Opérateurs binaires & | ^ ~ >> << >>> ~ A. P. ~
36
Les opérateurs L'opérateur logique ?
composé de trois expressions expression1 ? expression2 : expression3 si expression1 vraie alors expression2 sinon expression3 valabs = (x >= 0) ? x : -x; Opérateur d'allocation mémoire new ~ A. P. ~
37
Priorité des opérateurs
~ A. P. ~
38
4 – Les structures de contrôle
~ A. P. ~
39
Les structures de contrôle
L'alternative if (<expression_logique>) <bloc1> else <bloc2> un bloc commence par { et finit par } Alternatives imbriquées if (<expr1>) <bloc1> else if (<expr2>) <bloc2> else if (expr3>) <bloc3> else <bloc4> ~ A. P. ~
40
Les structures de contrôle
Le choix multiple switch (<expression_entière>) { case valeur_1: ; break; case valeur_2: ; ; case valeur-n: ; ; break; default: ; ; } ~ A. P. ~
41
Les structures de contrôle
Le choix multiple (suite) branchement lorsque l'expression entière est égale à une des valeurs des case branchement à default si aucune valeur trouvée passe en séquence jusqu'au premier break ou fin du switch ~ A. P. ~
42
Les structures de contrôle
L'itération bornée traduction du pour for(<expr1>;<expr2>;<expr3>) <bloc> expr1 effectuée 1 fois pour toutes expr2 condition de maintien expr3 effectuée à la fin de chaque boucle nombre de passages 0 à n ~ A. P. ~
43
Les structures de contrôle
La répétitive tant que while(<expression >) <bloc> expression condition de maintien nombre de passages 0 à n La répétitive répéter tant que do <bloc> while (<expression>) ; nombre de passages 1 à n ~ A. P. ~
44
Les structures de contrôle
L'instruction break permet de sortir d'un switch d'un for d'un while d'un do for(;;) { if (EVENEMENT) break; /* si EVENEMENT devient VRAI on sort */ } ~ A. P. ~
45
Les structures de contrôle
L'instruction continue force le branchement en fin de boucle d'une répétitive la condition de passage est retestée évite l'écriture d'un sinon while (i<10) { ; ; if (n<0) continue; ; /* traitement si n >= 0 */ } ~ A. P. ~
46
5 – Compléments ~ A. P. ~
47
Les packages Un package regroupe des classes et des interfaces qui portent sur un même domaine Pour utiliser une classe d'un package soit il faut la préfixer avec le nom du package soit on utilise la directive import import java.util.* importe toutes les classes du package import java.util.vector importe la classe vector du package java.util Exemple de packages inclus dans le SDK java.lang java.io java.util java.net ~ A. P. ~
48
Les packages Pour créer son propre package
il faut ajouter package <nom_package> dans chaque fichier source .java devant composer le package il faut s'assurer qu'il n'existe pas de classes homonymes Lorsqu'on ne spécifie pas de package dans un fichier source, les classes créées appartiennent au package par défaut ~ A. P. ~
49
Les exceptions Permet le traitement uniforme et structuré des anomalies survenant lors de l'exécution d'un programme Mécanisme identique à celui du C++ Mais en Java, toutes les exceptions sont des objets de la classe Exception ~ A. P. ~
50
Les exceptions Principe
si on appelle une méthode susceptible de lancer une exception, on se porte candidat par le bloc try si une erreur survient dans la méthode appelée, cette dernière lance une exception par throw l'appelant intercepte l'exception grâce au bloc gestionnaire d'exception catch il y a un gestionnaire par type d'exception le bloc finally est exécuté dans tout les cas et en dernier s'il existe ~ A. P. ~
51
Les exceptions Schéma général de traitement des exceptions try { // bloc de code pouvant générer l'exception } catch(TypeException1 e) { // traitement approprié pour ce type d'exception } catch(TypeException2 e) { // traitement approprié pour ce type d'exception } finally { // bloc facultatif mais toujours exécuté si présent } ~ A. P. ~
52
Interception d'une exception
Void Methode() throws T { ... if (probleme) throw new T(); } type T de l'exception try { Methode(); catch (T param) { ~ A. P. ~
53
Les exceptions Méthode susceptible de générer des exceptions propagées vers l'appelant on déclare dans son en-tête les exceptions qu'elle peut lancer par throws TypeExc1, TypeExc2 ,.. mais les exceptions héritant de Error ou de RuntimeException ne se déclarent pas l'exception est lancée par throw <exception> soit il s'agit d'une instance de la hiérarchie Exception soit il s'agit d'une instance d'une classe personnelle d'exception qui doit héritée de Exception ~ A. P. ~
54
Les exceptions Capture des exceptions par l'appelant
se fait par le gestionnaire catch pour le type voulu si on souhaite que le gestionnaire traite tout type d'exception, on indique Exception comme type catch (Exception e) si une exception n'est pas traitée à un niveau (gestionnaire absent ou de type inadapté), sa gestion est déléguée au niveau supérieur si l'exception sort de la méthode main sans être gérée, elle est alors traitée par la machine Java ~ A. P. ~
55
Les chaînes de caractères
En Java il n'y a pas de type chaîne prédéfini On utilise pour cela la classe String fournie d'origine avec le langage Il existe aussi une classe StringBuffer de chaînes modifiables Ces classes font partie du package java.lang reconnu de façon implicite ~ A. P. ~
56
Les chaînes de caractères
Les opérations courantes de la classe String: concaténation + et += longueur length égalité equals et equalsIgnoreCase et non == qui porte sur références, de même pour la comparaison qui se fait par compareTo extraction substring transformation en un tableau de char toCharArray changer la casse toUpperCase et toLowerCase suppression des espaces de début et fin trim etc., etc. voir l'aide pour les autres méthodes ~ A. P. ~
57
Les chaînes de caractères
Exemples String ch1 = "essai d'une chaine"; String ch2 = new String ("Bonjour"); // on récupère les 3 premiers car de ch2 String ch3 = ch2.substring(0,3); int n = ch3.length(); // longueur de ch1 ch2 = ch2 + " tout le monde"; if (ch3.equals("Bon") == true) … … … if (ch3.compareTo(ch1) >= 0) ~ A. P. ~
58
Les tableaux Sont des objets créés dynamiquement
Déclaration type nomTableau[]; ou type[] nomTableau; Puis allocation mémoire nomTableau = new type[tailleTableau]; Déclaration et allocation mémoire type nomTableau[] = new type[tailleTableau]; Déclaration et initialisation type nomTableau[] = {val1, val2, val3,...valn}; ~ A. P. ~
59
Les tableaux Comme en C l'indice du premier élément est 0
Le champ length d'un tableau donne la dimension du tableau Par sécurité, Java déclenche les exceptions ArrayIndexOutOfBoundsException si le rang d'un élément est invalide NegativeArraySizeException si la taille est négative à la création du tableau ArrayStoreException si on tente de stocker un élément de type incompatible ~ A. P. ~
60
Les tableaux Exemples // déclaration String tabJour[] = {"Lundi","Mardi","Mercredi"}; short [ ][ ]mat = {{5, 2, 33,-8}, {1, 2, 3, -7}}; int [ ] tabVide = {}; int tabEntiers[] = new int[5]; // parcours for(i=0;i<tabEntiers.length;i++) tabEntiers[i]=i+1; for(lig=0;lig<2;lig++) for (col=0;col<4;col++) ... ~ A. P. ~
61
Les tableaux Un tableau est en fait une référence, donc:
il faut penser à l'allocation mémoire sauf s'il est initialisé à la déclaration il peut être modifié s'il est passé en argument à une méthode une méthode de classe peut retourner un tableau l'affectation entre tableaux de même type porte sur les références (la copie physique se fait par la méthode arraycopy de la classe System) Ne pas oublier: en Java il y a une gestion automatique de la mémoire ~ A. P. ~
62
Sortie écran en mode texte
La classe System comprend 3 canaux d'E/S écran out clavier in erreurs err Pour l'affichage à l'écran on utilise 2 méthodes System.out.print et System.out.println qui fait un saut de ligne après l'affichage qui prennent en argument une chaîne de caractères toute variable son type peut être concaténée avec l'opérateur + pour former la chaîne d'affichage ~ A. P. ~
63
Sortie écran en mode texte
Exemple: public class TestAffichage { public static void main(String[] argv) { // variables locales int x = 3; char c='o'; float z = -2.45E-3F; String ch = "essai"; // affichage System.out.println(" x = : " +x +" et z = : " +z); System.out.println("\n c = : " +c +" et ch = : " + ch ); } } ~ A. P. ~
64
Entrée clavier en mode texte
La saisie en mode texte est compliquée inclusion du package java.io.* utilisation de la classe BufferedReader pour la lecture du flux d'entrée déclaration d’un buffer d’entrée saisie d’une chaîne par la méthode readLine() conversion de la chaîne saisie en entier, en byte, en entier ou en réel mise en oeuvre d'une gestion des exceptions ~ A. P. ~
65
Entrée clavier en mode texte
Exemples de saisie import java.io.*; class TestSaisie { public static void main(String args[]) throws IOException, NumberFormatException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader rep = new BufferedReader(isr); System.out.print("Entrez une chaine : "); String saisie = rep.readLine(); System.out.println("Voici la chaine saisie : "+ saisie); System.out.print("Entrez un entier : "); int i = Integer.parseInt(rep.readLine()); System.out.println("l'entier i = "+ i); ~ A. P. ~
66
Entrée clavier en mode texte
Exemples de saisie (suite) System.out.print("Entrez un reel : "); float f = Float.parseFloat(rep.readLine()); System.out.println("le reel f = "+ f); // cas d'un caractère System.out.print("Entrez un caractere : "); String valeur = rep.readLine() ; char c = valeur.charAt(0); System.out.println("le caractere vaut = "+ c); } // public static void main } // class TestSaisie ~ A. P. ~
67
Entrée clavier en mode texte
Exemple avec gestion des exceptions import java.io.*; public class TestSaisieExcep { public static void main(String args[]) { // saisie d'un réel avec gestion des exceptions int x = 0; // entier à saisir System.out.print("Entrez un entier : "); try { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader rep = new BufferedReader(isr); x = Integer.parseInt(rep.readLine()); } ~ A. P. ~
68
Entrée clavier en mode texte
Exemple avec gestion des exceptions (suite) // exception éventuellement générée par readLine catch (IOException e) { System.out.println("ERREUR DE SAISIE \n\n"); } // exception éventuellement générée par parseInt catch (NumberFormatException e) { System.out.println("ERREUR DE TYPE \n\n"); } System.out.println("l'entier vaut : "+ x); } // public static void main } // class TestSaisie ~ A. P. ~
69
Application Définition d'un tableau de taille dynamique avec remplissage aléatoire import java.io.*; import java.util.*; public class TestTableau { public static void main(String[] argv)throws IOException { // saisie de la dimension du tableau InputStreamReader isr = new InputStreamReader(System.in); BufferedReader rep = new BufferedReader(isr); System.out.print("Entrez un entier : "); int taille = Integer.parseInt(rep.readLine()); ~ A. P. ~
70
Application Définition d'un tableau de taille dynamique avec remplissage aléatoire // dimensionnement dynamique du tableau d'entiers int tabEntiers [] = new int[taille]; // remplissage aléatoire d'entiers compris entre 0 et 50 Random r = new Random(); for(int i=0;i<tabEntiers.length;i++) tabEntiers[i]=Math.abs(r.nextInt()%51); // affichage du tableau for(int i=0;i<tabEntiers.length;i++) System.out.println("\n "+tabEntiers[i]); } // fin de main } // fin de TestTableau ~ A. P. ~
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.