Programmation Oriente Objet Cours 3 Anne LMD 2013
Programmation Orientée Objet Cours 3 Année LMD (2013 -2014) Hammache Arezki LMD 3_POO@yahoo. fr
Sommaire • Introduction • Concepts de la POO – Objet , classe, encapsulation, héritage, etc. • Langage Java – Introduction – Syntaxe de Java – Objets et Classes – Relations entre classe : Héritage et polymorphisme – Interfaces graphiques : AWT – Les indispensables : Collections, exceptions. – Les entrées sorties – Les threads – Les applets
Introduction
Quelques notions • Algorithme: méthode pour résoudre un problème. Pour un problème donné, il peut y avoir plusieurs algorithmes. . . ou aucun ! • Programme: Le programme est le codage (langage programmation) lisible par l’ordinateur de cet algorithme. de • Le langage de programmation : est l'intermédiaire entre l'humain et la machine, il permet d'écrire dans un langage proche de la machine mais intelligible par l'humain les opérations que l'ordinateur doit effectuer. Quelques uns des plus connus: C, C++, Pascal, Java, python • Langage machine : est une succession de 0 et de 1 • Compilateur (interpréteur) : est un programme qui permet de transformer un programme (fichier source) écrit dans langage de programmation en un programme en langage machine (fichier exécutable).
D’un problème à la solution informatique Homme Machine Fichier source Problème Résolution équation ? Programme (Langage) Algorithme … Calculer delta Si delta >0 alors …. … delta=a*a-4*b*c if (delta>0) { … Compilateur Ou Interpréteur Exécutable Données 5 4 1 Code machine Résultats ? ? ? Introduction 5 … 00011001 …
Niveau de langage de programmation Langage Humain Haut niveau : proche de l’homme, vocabulaire et syntaxe plus riches JAVA, C++, C , Pascal (fonctions) Assembleur (mnémonique : add) Langage Machine (01111001. . ) Bas niveau : proche de la machine, instructions élémentaires
Les familles de langages de programmation On distingue habituellement deux grandes familles de langages de programmation: 1. Les langages orientés procédures (langages fonctionnels ou procéduraux) (ex : pascal, le C). Algorithmes(fonctions , procédures) + Données = Programme 2. Les langages orientés objets (=langages objets) : (ex : C++, JAVA) Méthodes + Données = Objet (Classe)
Langages procéduraux et fonctionnels Un programme est composé de plusieurs procédures (ou fonctions) : Ø qui effectuent un traitement sur des données (procédure) Ø qui retournent une valeur après leur invocation (fonction) Certains langages ne distinguent pas procédures et fonctions. Exemples de langages procéduraux ou fonctionnels : Fortran, Lisp, C, … Données Traitement 1 Traitement 2 Traitement 3 Nom, prénom, nom module, num groupe, Num Salle, …. Inscription Affectation Deliberation
Langages Orientés-Objet Un programme est composé de plusieurs objets qui contiennent : Ø des données "internes" Ø des traitements manipulant ces données internes ou d'autres données Les données d'un objet sont appelés ses attributs et ses traitements sont ses méthodes (ou opérations). Exemples de langages orientés-objet : Small. Talk, C++, Java, … D T D D T T Nom, prénom ajouter Num_salle Num_mod affecter Num_groupe ajouter
Avantages de la Programmation Orienté Objet Facilite la réutilisation de code. Une meilleure sécurité (encapsulation) Facilite l’évolution du code Améliore la conception et la maintenance des grands systèmes ü Permet la Programmation par « composants » . Conception d’un logiciel à la manière de la fabrication d’une voiture ü ü
Sommaire • Introduction • Concepts de la POO – Objet , classe, encapsulation, héritage, etc. • Langage Java – Introduction – Syntaxe de Java – Objets et Classes – Relations entre classe : Héritage et polymorphisme – Interfaces graphiques : AWT – Les indispensables : Collections, exceptions. – Les entrées sorties – Les threads – Les applets
Objet Ø Approche procédurale : ü"Que doit faire mon programme ? " Ø Approche orientée-objet : ü"De quoi doit être composé mon programme ? " Ø Cette composition est conséquence d'un choix de modélisation fait pendant la conception Ø Un objet est une abstraction d’une entité du monde réel Exemple: Gestion d'une bibliothèque Germinal E. Zola Liberté Le seigneur des anneaux J. R. R. Tolkien A. Lydia Directrice D. kamel Bibliothécaire B. Tanina Lectrice A. Nassim Lecteur
Classe Des objets similaires peuvent être informatiquement décrits par une même abstraction : une classe Ø même structure de données et méthodes de traitement Ø valeurs différentes pour chaque objet Classe Livre -titre, auteur Classe Journal -titre Classe Employé -nom, prénom, statut Classe Lecteur -nom, prénom Germinal E. Zola Liberté Le seigneur des anneaux J. R. R. Tolkien A. Lydia Directrice D. kamel Bibliothécaire B. Tanina Lectrice A. Nassim Lecteur
Encapsulation L'encapsulation est la pratique consistant à regrouper des attributs au sein d'une même classe. Ø Pour améliorer la lisibilité des programmes, les attributs encapsulés sont souvent privés (inaccessibles aux autres classes). Ø Les données et méthodes accessibles sont dites publiques.
Héritage (La généralisation / spécialisation) Ø L’héritage autorise une classe d’objet de bénéficier de la structure des données et du comportement d’une classe « mère » tout en lui permettant de les affiner et ce, afin de prendre en compte les spécificités de la classe « fille » sans avoir cependant à redéfinir ce que les deux classes ont en commun. Ø Généralisation = recherche des similitudes ü Identifier les objets du monde réel connus par le système ü Regrouper les objets en classes ü Généraliser les classes en super classes Ø Règle d’or : en cas de doute sur la pertinence d’une classe, il est préférable de ne pas la définir Ø La généralisation est caractérisé par l’expression : « est un type de »
Un exemple d’héritage Exemple : gestion bibliothèque Classes mères Classe Ouvrage -titre Classe Livre -auteur Classe Journal -type Germinal E. Zola Le seigneur des anneaux J. R. R. Tolkien Liberté Classe Personne -Nom, prénom Classe Employé -statut Classe Lecteur -type A. Lydia Directrice D. kamel Bibliothécaire B. Tanina Lectrice A. Nassim Lecteur
Un autre exemple d’héritage Classes mères Moyen de transport <<hérite>> Classes filles Monde réel (objets) Tracteur Train Voiture
Polymorphisme Ø Offre la possibilité d’associer à un comportement, une implémentation différente en fonction de l’objet auquel on se réfère. Personne Sanctionner() Employé Sanctionner() Lecteur dessiner()
Sommaire • Introduction • Concepts de la POO – Objet , classe, encapsulation, héritage, etc. • Langage Java – Introduction – Syntaxe de Java – Objets et Classes – Relations entre classe : Héritage et polymorphisme – Interfaces graphiques : AWT – Les indispensables : Collections, exceptions. – Les entrées sorties – Les threads – Les applets
Origine du langage Ø Développé par Sun. Soft (SUN) pour réaliser le développement de systèmes embarqués Ø Projet « Oak » Ø Évolution gérée par Java. SOFT (Sun. Soft) Ø Repris par Oracle Ø Quelques liens ü ü http: //www. oracle. com/technetwork/java/index. html http: //www. developer. com/ http: //www. javaworld. com/ http: //tips. iworld. com/ Ø Livres ü La programmation objet en Java : Michel Divay, Dunod , 2006. (PR 42)
Java est simple Ø Simplicité relative par rapport au C++ Ø Certains concepts du C++ à l’origine de nombreux bugs ont été supprimés ü Pointeurs ü Surcharge des opérateurs ü… Ø Des études comparatives de développements montrent une diminution du coût de développement de 30 à 35 %.
Java est un langage objet Ø Java reprend des caractéristiques de différents langages à objets ü La syntaxe du C++ ü La gestion dynamique de la mémoire Small. Talk Ø Toute ligne de code JAVA se trouve obligatoirement dans une méthode à l’intérieur d’une classe Ø Java implémente les concept de l’orienté objet ü Encapsulation ü Héritage ü Polymorphisme
Java est robuste et sûr Ø Le compilateur Java est très strict Ø Contrôle de typage « fort » Ø Le compilateur vérifie que les erreurs sont traitées par le développeur – Si une erreur retournée par une méthode n’est pas traitée, le programme ne compilera pas Ø La gestion de la mémoire n’est pas à la charge du développeur ü Garbage Collector ( « ramasse-miettes) ü Pas de pointeurs Ø Un débordement d’index dans un tableau provoque une erreur Ø La mémoire n’est pas écrasée
JAVA est portable Ø Un code source Java est compilé pour générer un code assembleur virtuel : le byte code Ø Ce code est conçu pour : ü ü Etre rapidement interprété Etre optimisable au moment de son exécution Etre facilement traduit en instructions assembleur lors de son exécution Etre compact § en moyenne, une instruction byte code = 1, 8 octet ü Etre vérifiable Ø Le byte code est exécuté par un logiciel : la Machine virtuelle Ø La machine virtuelle est dépendante de la plate-forme: pour chaque plate forme (Windows, linux, etc) il existe une machine virtuelle.
Comment il fonctionne …!
Exemple Programme source java outer: for (int i = 2; i < 1000; i++) { for (int j = 2; j < i; j++) { if (i % j == 0) continue outer; } System. out. println (i); } Compilation (javac) Byte code 0: iconst_2 1: istore_1 2: iload_1 3: sipush 1000 6: if_icmpge 44 9: iconst_2 10: istore_2 11: iload_2 12: iload_1 13: if_icmpge 31 16: iload_1 17: iload_2 18: irem 19: ifne 25 22: goto 38 25: iinc 2, 1 28: goto 11 31: getstatic #84; 34: iload_1 35: invokevirtual #85; 38: iinc 1, 1 41: goto 2 44: return
Le JDK / JRE Ø Le JDK = Java Development Kit Ø Il contient : ü Des exécutables : machine virtuelle, compilateur… ü Un ensemble de classes de base regroupées en packages ü Interface utilisateur, conteneurs, gestion des threads, réseau… ü Des bibliothèques permettant de coupler du Java et du C Ø Le JRE= Java Runtime Environment contient : ü la machine virtuelle
Les environnements de développement Ø Ils offrent des fonctions avancées : – – – Éditeur évolué (couleur, autocorrection, présentation…) Assistance syntaxique Générateur de code Débugage Environnement d’exécution …
Les packages de base Ø AWT et Swing üboutons, listes, menus, etc. Ø Réseau üSockets (serveurs, clients), Web (URL), Applet… Ø Entrée-sortie ü Fichier, Pipe, accès direct… Ø Classes de base ü Date, Chaîne de caractères Ø RMI ü Remote Method Invocation
Les packages de base Ø JDBC ü Accès aux bases de données relationnelles Ø Beans ü Composant Java Ø Sécurité ü Cryptage, identification, signature Ø Internationalisation ü Format de date/heure ü messages localisés ü caractères UNICODE 2 Ø Utiles ü Collection, Compression,
Sommaire • Introduction • Concepts de la POO – Objet , classe, encapsulation, héritage, etc. • Langage Java – Introduction – Syntaxe de Java § § – – – – Structure d’un programme Java Types de données Opérateurs Instructions Objets et Classes Relations entre classe : Héritage et polymorphisme Interfaces graphiques : AWT Les indispensables : Collections, exceptions. Les entrées sorties Les threads Les applets
Constitution d’un programme java Ø Un programme Java utilise un ensemble de classes Ø Les classes sont regroupées par package Ø Une classe regroupe un ensemble d’attributs et de méthodes Package Classe Attributs Méthodes
Premier programme en Java public class PG 1{ public static void main (String argv[]) { System. out. println("MON PREMIER PROGRAMME JAVA "); } } Ø public class PG 1 : Nom de la classe Ø public static void main : nom de la fonction principale (point d’entrée d’un programme java) ØString argv[] : permet de récupérer les arguments transmit au programme au moment de son exécution (lancement) Ø System. out. println( « MON PREMIER PROGRAMME JAVA ") : méthode d’affichage dans une fenêtre console
Étapes de mise en oeuvre 1. Edition (saisie) : saisir le programme source java avec un éditeur: ü le nom de fichier doit être le même que le nom de la classe (nom de fichier= PG 1. java) 2. Compilation : produire le byte code a partir de fichier source (. java) en utilisant la commande javac ü javac PG 1. java üGénération d’un fichier byte code PG 1. class 3. Exécution : exécuter le byte code obtenu en utilisant la commande java ü java PG 1 paramètre 2 v ne pas mettre. class pour l’exécution.
Briques de base de java Ø Les briques de base du langage: Nous traitons Java d'abord comme un langage de programmation classique. Nous aborderons les objets ultérieurement. Ø Les composantes de bases sont : ü Ce qui permettent de stocker des données: variables, constantes (types), etc. ü Les expressions qui permettent de manipuler les données : affectation, comparaison, etc. ü Les instructions pour construire les algorithmes : tests, boucle, etc. ü Les objets
Les commentaires Ø Les commentaires : Ils ne sont pas pris en compte par le compilateur donc ils ne sont pas inclus dans le pseudo code. Ils ne se terminent pas par un caractère "; ". Ø Il existe trois types de commentaire en Java : Type de commentaires Exemple commentaire abrégé // commentaire sur une seule ligne int N=1; // déclaration du compteur commentaire multi ligne /* commentaires ligne 1 commentaires ligne 2 */ commentaire de documentation automatique /** * commentaire de la methode * @param val la valeur a traiter * @since 1. 0 * @return Rien * @deprecated. Utiliser la nouvelle methode XXX */
Les types de données dans Java Ø Types arithmétiques Entiers Réels byte 8 bits signé (-128 , 127) short 16 bits signé (-32768 , 32767) int 32 bits signé (-2147483648 , 2147483647) long 64 bits signé (-9223372036854775808, 9223372036854775807) float 32 bits signé (1. 4 E-45 , 3. 4028235 E 38) double 64 bits signé (4. 9 E-324 , 1. 7976931348623157 E 308) Ø Type caractère char 16 bits non signé UNICODE 2 Ø Type booléen boolean 1 bit deux valeurs possibles : true ou false
Les identificateurs Ø Chaque objet, classe, programme variable, constante est associé à un nom : l'identificateur qui peut se composer de tous les caractères alphanumériques et des caractères _ et $. § Le premier caractère doit être une lettre, le caractère de soulignement ou le signe dollar. Ø Rappel : Java est sensible à la casse ( id <>i. D) Ø Un identificateur ne peut pas appartenir à la liste des mots réservé du langage Java : abstract const interface return break do new strictfp catch Char extends instanceof final int public throw assert continue finally throws boolean default float long short transient for native static true byte double goto try case else if null super void enum (Java 5) implements package s witch volatile import private synchronized while class false protected this
Déclaration de variables Ø La Syntaxe de la déclaration : type Ø exemples : nom_variable; // nom_variable est un identificateur int p ; // p est une variable de type entier double x ; // x est une variable de type flottant char c; // c est une variable de type caractère boolean b ; // b est une variable de type booléenne int X, Y, Z ; //Il est possible de définir plusieurs variables de même type en séparant chacune d'elles par une virgule. ØLa syntaxe de l’Initialisation d’une variable type Ø exemples : ma_variable=valeur; // initialisation de la variable boolean result = true; char capital. C = ‘C’; byte b = 100; short s = 10000; int i = 100000; int dec. Val = 26; // Le numero 26, en decimal int oct. Val = 032; // Le numero 26, en octal int hex. Val = 0 x 1 a; // Le numero 26, en hexadecimal double d 1 = 123. 4; double d 2 = 1. 234 e 2; // notation scientifique float f 1 = 123. 4 f;
Déclaration de constantes Ø Java définie une constante grâce au mot clé final : elle ne peut être initialisée qu'une seule fois de façon statique (à la compilation) ou dynamique. Une fois la valeur affectée, elle ne peut plus être modifiée. Ø La syntaxe de la déclaration d’une constante final type nom_constante; // nom_constante est un identificateur Ø Exemples : final int C=20; // Constante entière ayant une valeur 20 C= 15; // erreur de compilation
Les opérateurs Ø Un opérateur : applique une fonction sur des opérandes (variables ou valeur) => valeur de retour Ø La valeur de retour d’un opérateur dépend de l’opérateur, mais aussi du type de ses opérandes Ø Les différents opérateur sont : ü ü ü Affectation Les opérateurs arithmétiques Opérateurs unaires Opérateurs de comparaison Opérateurs logiques
L’affectation Ø L’opérateur « = » permet d’affecter la valeur de l’expression qui est à droite à la variable qui est à gauche. class Test { int calculer () { int i = 0; // affecter la valeur 0 à la variable i int j = 6; // affecter la valeur 6 à la variable j i = (j + 5) * 3; // affecter la valeur de l’expression à i return i + j; } } 42
Les opérateurs arithmétiques Ø S’appliquent sur les types entiers ou réels § +, - , * , / , % (modulo) , += , -= , *= , /= int x, y, z; y = 2; z = 3; x x y y = y * z ; += 2 ; = x / 4 ; =x % 2 ; //x //y vaut 6 8 2 0 Ø Les opérateur = et += peuvent être utilisés sur des variables de type « String » Ø En terme de performance, il est recommandé d’utiliser la notion raccourcie (+=, *=, -=)
Opérateurs unaires Ø S’appliquent à un seul opérande de type entier ou réel : -, --, +, ++ int x, y; x = 3; y = -x ; y = ++x ; y = x-- ; //y vaut -3 //y vaut 4, x vaut 4 //y vaut 4, x vaut 3 Ø La pré et la post-incrémentation diminuent le nombre de lignes de byte code générées y = ++x ; y = x-- ; y=x+1; y=x; x=x-1;
Opérateurs de comparaison Ø S’appliquent sur des entiers, booléens, réels == (égal) , != (différent), < (inférieur), <= (inférieur ou égal), > (supérieur), >= (supérieur ou égal). Ø Ces opérateurs retournent une valeur du type booléen { boolean droit. De. Vote; int age; droit. De. Vote = (age >= 18) ; }
Opérateurs logiques Ø S’appliquent au type boolean ü ! (not) , && (and) , II (or) ü &, I Ø Retournent un type boolean Ø & renvoie « true » si les deux expressions renvoient « true » Ø && a le même comportement mais n’évalue pas le seconde expression si la première est « false » Ø | renvoie « true » si l’une des deux expressions renvoie « true » Ø || a le même comportement mais n’évalue pas le seconde expression si la première est « true »
Un opérateur spécial : l’opérateur ? Ø la syntaxe : expression 1? expression 2: expression 3; expression 1 est évaluée en premier. Si sa valeur est true, expression 2 est calculée, sinon expression 3 est calculée. Ø Exemple : int x = 3, y = 4, max; max = (x > y)? x: y; //ceci revient à dire max=y; Dans ce code, max reçoit la valeur de x ou de y, selon que x est supérieur à y ou non. Ø Remarque Certains confondent cet opérateur avec une instruction conditionnelle. Ce n’est pas une instruction, comme l’illustre l’erreur dans le code suivant : (x > y)? max = x: max = y; //ne peut pas être utilisé comme une instruction
Priorité des opérateurs ØJava définit les priorités dans les opérateurs comme suit ( du plus prioritaire au moins prioritaire ) les parenthèses les opérateurs d'incrémentation les opérateurs de multiplication, division, et modulo les opérateurs d'addition et soustraction les opérateurs de décalage les opérateurs de comparaison les opérateurs d'égalité l'opérateur OU exclusif l'opérateur ET l'opérateur OU l'opérateur ET logique l'opérateur OU logique les opérateurs d'assignement () ++ -* / % + << >> < > <= >= == != ^ & | && || = += -=
Les conversions de type (1/2) Ø Il y a 4 contextes possibles de conversion (cast) : ü Conversion explicite ü Affectation ü Appel de méthode ü Promotion arithmétique Ø Certaines conversions provoquent une perte de valeur ü Float en int, int en short, short en byte Ø Le type boolean ne peut pas être converti en entier
Les conversions de type (2/2) double f =3. 14 ; int i, j ; short s ; i = (int)f; // float int (conversion explicite) float ff = (float)3. 14; i = s; // short int (affectation) // appel de la méthode int obj. m(int i) obj. m(s); // short int (appel de méthode) // division d’un entier et d’un flottant : l’entier i est // converti en flottant, puis la division flottante est calculée f = i / (double)j; // (promotion arithmétique)
Les Instructions Ø Comme la quasi totalité des langages de développement orienté objets, Java propose un ensemble d'instructions qui permettent d'organiser et de structurer les traitements. L'usage de ces instructions est similaire à celui rencontré dans d'autres langages. Ces instruction sont : ü Les tests conditionnels ü Les boucles ü Les débranchements
Test conditionnel (if …else) Ø la syntaxe : if (condition) { Bloc d’instruction } else { Bloc d’instruction } ü condition est de type booléen ü le if ne nécessite pas de then ü si Bloc d’instruction est une seule instruction alors pas besoin des {} Ø Exemple : class Test { public static void main (String args[]) { int compteur = 0; boolean debut; if (compteur == 0) { debut = true; System. out. println("Début de la partie"); } else if (compteur ==10) System. out. println("Fin de la partie"); else } System. out. println("Partie en cours"); }
Test conditionnel Switch …case Ø Syntaxe : switch (expression) { case constante 1 : instr 11; instr 12; break; case constante 2 : . . . default : . . . } ü Le « switch » ne s’applique qu’au type entier ou caractère. ü Si une instruction case ne contient pas de break alors les traitements associés au case suivant sont exécutés. ü Il est possible d'imbriquer des switch Ø Exemple : class Test { public static void main (String args[]) { char c = (char)System. in. read(); switch(c) { case ‘o’ : case ‘O’ : System. out. println("Oui"); break; case ‘n’ : case ‘N’ : System. out. println("Non"); break; default : } System. out. println("Mauvaise réponse"); break; } }
Boucles while Ø Syntaxe while ( condition) {. . . // code a exécuter dans la boucle } Ø Exemple class Test { public static void main (String args[]) { int i; do { üCondition est de type booléen üLe code est exécuté tant que la condition est vraie. Si avant l'instruction while, la condition est fausse, alors le code de la boucle ne sera jamais exécuté Ø System. out. println("Entrez un nombre < 10"); c= lire. Un. Int(); } while (c>10); while (c>0) afficher (c--); } public static int lire. Un. Int() {……} Autre syntaxe do {. . . // code a exécuter dans la boucle } while ( condition) üLe code est exécuté au moins une fois. public static void afficher (char c) {……} }
Boucle for Ø Syntaxe : for ( initialisation; condition; modification) {. . . } üCondition est de type booléen ü Dans l'initialisation, on peut déclarer Ø Exemple : class Test { public static void main(String args[]) { int i; for (i=0 ; i <=5 ; i++) { System. out. println (i); …… } une variable qui servira d'index et qui sera dans ce cas locale à la boucle üIl est possible d'inclure plusieurs traitements dans l'initialisation et la modification de la boucle : chacun des traitements doit être séparé par une virgule. for (int j=0 ; j <=5 , j++) { System. out. println (i); …… } // i est accessible // j n’est pas accessible } }
Les débranchements Ø break : permet de quitter immédiatement une boucle ou un branchement (switch …case). Ø continue : s'utilise dans une boucle pour passer directement à l'itération suivante Ø break et continue peuvent s'exécuter avec des blocs nommés. Il est possible de préciser une étiquette pour indiquer le point de retour lors de la fin du traitement déclenché par le break. Ø Une étiquette est un nom suivi d'un deux points qui définit le début d'une instruction.
Exemples int x = 0; while (x < 6){ System. out. println(i); x++; if (x == 4) break; else //faire quelque chose d’autre } Résultat: 0 1 2 3 for ( int x = 0 ; x < 6 ; x++) { if(x == 4) continue; //revient au début de la boucle avec x=6 System. out. println(i); } Résultat: 0 1 2 3 4 5
Les tableaux : description Ø Nombre fixe d’éléments. Taille fixée à la construction Ø Les éléments sont de même type (type de base ou classe) Ø Les tableaux sont alloués dynamiquement par l’opérateur « new » Ø Un tableau est détruit lorsqu’il n’est plus référencé Ø Les tableaux multi-dimensionnels sont des tableaux de tableaux
Les tableaux : déclaration • Les tableaux peuvent être déclarés suivant les syntaxes suivantes : type [] nom ; type nom []; Exemples : int table[]; double [] d 1, d 2 ;
Les tableaux : initialisation Ø L’attribut « length » renvoie la dimension du tableau Ø L’indice des éléments du tableaux varie de 0 à « tableau. length – 1 » Ø Initialisation statique : int[] mon. Tableau = {1, 2, 3}; Ø Initialisation dynamique : int[] param = new int[10]; for (int i = 0; i < param. length ; i++) param[i]= i; 60
Chaines de caractères Ø Les chaînes de caractères sont manipulées par la classe String (ce n’est donc pas un type de données). Ø Exemples : String str = ”exemple de chaine de caractères” ; String chaine = ”Le soleil ” + ”brille” ; // Opérateur de concaténation ØLa valeur initiale d’une variable du type String est null (ainsi que pour toutes les variables dont leur type est une classe d’objets). ØMais attention!! Techniquement, String n’est pas un type primitif. Il s’agit d’une classe du paquetage java. lang.
TP Avant de programmer en Java Le JDK de Sun (Java Development Kit) est l’outil essentiel pour programmer en Java. Il permet la compilation, le débogage et l’exception d’applications et d’applets Java. Après avoir installé le JDK, il faut définir un chemin de recherche des exécutables « PATH » . Pour le faire, Lancer une session DOS et taper : Set Path=C: JDKbin ou bien directement Path=C: JDKbin (Donne la valeur C: JDKbin à la variable d’environnement path) Ou encore Set Path=%Path%; C: JDKbin (Ajoute le chemin C: JDKbin à la valeur de la variable d’environnement path) Ceci ne fonctionne que si C: JDK est le répertoire d’installation du JDK. Si ce n’est pas le cas, remplacer-le par votre vrai répertoire.
Lecture des données à partir du clavier Ø Utilisation de la classe Scanner définie dans le package « java. utils » Ø Etapes : ü inclure le package : import java. util. *; ü créer un objet de la classe scanner (sc) : Scanner sc=new Scanner(System. in); ü lire les données avec la méthode (next. XXX) q lire un entier : int a = sc. next. Int(); q lire un double : double d=sc. next. Double()
Exemple import java. util. *; // inclure le package public class exemple{ public static void main(String[] args) { Scanner sc=new Scanner(System. in); // création d’un //objet de type scanner int a=sc. next. Int(); // lecture d’un entier double d=sc. next. Double(); // lecture d’un double } }
- Slides: 64