Source: http://docplayer.fr/2811123-Introduction-au-langage-de-programmation-java.html
Timestamp: 2018-02-19 15:03:03+00:00

Document:
Introduction au langage de programmation Java - PDF
Introduction au langage de programmation Java
Download "Introduction au langage de programmation Java"
Chrystelle Soucy
1 Introduction au langage de programmation Java Christian Bac, Denis Conan CSC 4002 Octobre 2014 Revision : 996
2 Introduction au langage de programmation Java Sommaire du cours 1 Introduction à Java Concepts de bases de Java Classes et objets en Java Généralisation spécialisation en Java Organisation des sources Java API Java Exceptions en Java Concepts objets avancés en Java Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
3 Introduction au langage de programmation Java 1 Introduction à Java 1.1 Vous avez dit Java? Que recouvre le mot Java? Caractéristiques Historique de l API Environnements de développement En savoir plus Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
4 Introduction au langage de programmation Java 1.1 Vous avez dit Java? 1 Introduction à Java À quoi cela sert-il? Pourquoi nous? Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
5 1 Introduction à Java 1.1 Vous avez dit Java? Android Android : Java est le logiciel prépondérant des applications. Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
6 1 Introduction à Java 1.1 Vous avez dit Java? CAS Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
7 1 Introduction à Java 1.1 Vous avez dit Java? Java partout! Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
8 1 Introduction à Java 1.1 Vous avez dit Java? Pourquoi nous? Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
9 Introduction au langage de programmation Java 1.2 Que recouvre le mot Java? 1 Introduction à Java Un projet et des évolutions sur + de 20 ans Un langage objet Une architecture basée sur une machine virtuelle Des interfaces de programmation objet Des outils (Java Development Kit) Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
10 1 Introduction à Java 1.2 Que recouvre le mot Java? Héros Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
11 1 Introduction à Java 1.2 Que recouvre le mot Java? Projet et Historique 1990 : équipe autour de James Gosling et sous l impulsion de Bill Joy 1993 : projet de langage pour l électronique grand public 1995 : Java Development Kit (JDK) 1.0 b1 + support dans le navigateur Netscape 1998 : mise en place du Java Community Process 1999 : Java 2 Standard Edition (J2SE) 1.2 (Java DataBase Connector amélioré, interface graphique Swing, collections) 2005 : J2SE 1.5, alors renommé J2SE 5 (types paramétrés, annotations, collections revues) : J2SE6 et libération du code passage sous licence General Public License, alias GNU/GPL 2009 : rachat de SUN microsystems par ORACLE 2011 : J2SE 7 Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
12 Introduction au langage de programmation Java 1.3 Caractéristiques 1 Introduction à Java Objet Exécuté par une machine virtuelle Permettant d écrire des programmes robustes Simple : C comme syntaxe de base Sûr, multi-activité, réparti Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
13 1 Introduction à Java 1.3 Caractéristiques Java un langage Objet Tout est classe sauf les types primitifs (int, float, double, etc.) Tout objet est manipulé à travers une référence La spécialisation est simple entre les classes Toutes les classes dérivent de java.lang.object Les tableaux sont construits à partir d une classe particulière L API (en anglais, Application Programming Interface) est un ensemble de classes Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
14 1 Introduction à Java 1.3 Caractéristiques Machine Virtuelle Java Les compilateurs génèrent du code intermédiaire (en anglais, bytecode) Ce code intermédiaire est interprété par les «Java Virtual Machines» (JVM) Modèle «compile once execute everywhere» Java Virtual Machine (JVM) : s exécutent sur les systèmes d exploitation (par exemple avec la commande java) ou sont intégrées dans les navigateurs Web Sémantique du langage plus stricte que celle du langage C Taille et domaine de valeur des types primitifs identiques sur toutes les plate-formes Code source Unicode (accents et autres glyphes) Bibliothèques standards riches Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
15 1 Introduction à Java 1.3 Caractéristiques Robustesse Conçu pour du logiciel embarqué Gestion de la mémoire avec ramasse miettes (en anglais, garbage collector) Pas d accès à la mémoire physique Gestion des erreurs par exception (voir section ) Contrôle des types à l exécution Compilateurs stricts et prévenants par exemple : Avertissement lorsqu une variable est affectée et non utilisée Erreur à l utilisation de variables non initialisées Erreur lorsque les exceptions ne sont pas gérées Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
16 Introduction au langage de programmation Java 1.4 Historique de l API 1 Introduction à Java Années de réalisation, et nombre de classes et d interfaces des versions de Java Java SE : Java SE : J2SE : J2SE : J2SE : J2SE : JDK : 477 JDK : 211 Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
17 Introduction au langage de programmation Java 1.5 Environnements de développement 1 Introduction à Java Java Development Kit : compilateur, JVM, Appletviewer... Eclipse, NetBeans, Jbuilder, Visual J++... Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
18 1 Introduction à Java 1.5 Environnements de développement Java Standard Development Kit javac : compilateur java : JVM interpréteur de bytecode javadoc : générateur de documentation appletviewer : environnement pour applet javah : générateur d entêtes pour mélange avec code natif en C (JNI) javap : désassembleur de code intermédiaire jdb : dévermineur javakey : générateur de clés pour signer le code Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
19 Introduction au langage de programmation Java 1.6 En savoir plus 1 Introduction à Java Java Series : The Java Tutorial, Campione, Walrath, 5th edition, 2013, The Java Programming Language, Arnold, Gosling, Holmes, 5th edition, 2013, The Java Language Specification, J. Gosling, B. Joy, G. Steele, G. Bracha, A. Bukley, 4th edition, 2013, The Java Virtual Machine Specification, T. Lindholm, F. Yellin, G. Bracha, A. Bukley, 3rd edition, 2013 Livres D. Flanagan, «Java in a Nutshell : A Desktop Quick Reference, 5th Edition», O Reilly, 2005 D. Flanagan, «Java Examples in a nutshell : A Tutorial Companion to Java in a Nutshell», 3rd Edition, 2004 P. Niemeyer and J. Knudsen, «Learning Java», O Reilly, 2005 J. Bloch, «Effective Java, 2nd Edition», Addison Wesley, 2008 Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
20 1 Introduction à Java 1.6 En savoir plus Sites Web Oracle Java(tm) Technology Home Page Infos Infos Liens Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
21 Introduction au langage de programmation Java Questions sur les concepts Java 1 Introduction à Java En Java tout est-il objet? La machine virtuelle Java : garantit-elle l uniformité des variables de type primitif? met-elle en œuvre la gestion mémoire et en particulier le ramasse miettes? Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
22 Introduction au langage de programmation Java 2 Concepts de bases de Java 2.1 Syntaxe de base Types Primitifs Tableaux Méthodes Exemple de passage d arguments Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
23 Introduction au langage de programmation Java 2.1 Syntaxe de base 2 Concepts de bases de Java Syntaxe de base C Instructions de contrôle : if, switch, for, while, do while Opérateurs : tous les opérateurs du C par exemple, + - / *, Blocs, instructions simples : {}, «;» Quelques différences final remplace const espaces de nommage plus nombreux : classe, fichier, groupe de classes private remplace static static prend un sens associé au concept de classe Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
24 2 Concepts de bases de Java 2.1 Syntaxe de base 1 #i n c l u d e < s t d l i b. h> 2 #i n c l u d e <s t d i o. h> 3 t y p e d e f enum { FAUX=0, VRAI=1 } Booleen ; 4 5 s t a t i c Booleen e s t P r e m i e r ( i n t nombre ) { 6 i n t borne=nombre / 2 ; 7 8 i f ( nombre==1) r e t u r n FAUX ; 9 f o r ( i n t pred =2; pred<=borne ; pred++) { 10 i f ( nombre%pred==0) { 11 r e t u r n FAUX ; 12 } 13 } 14 r e t u r n VRAI ; 15 } i n t main ( ) { 18 i n t nb ; 19 p r i n t f ( " S a i s i r une v a l e u r > 0 : " ) ; 20 s c a n f ( "%d ", &nb ) ; i f ( nb<=0) { Premier en C Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
25 2 Concepts de bases de Java 2.1 Syntaxe de base 23 p r i n t f ( " E r r e u r de s a i s i e \n " ) ; 24 r e t u r n EXIT_FAILURE ; 25 } 26 p r i n t f ( " Le nombre %d ", nb ) ; 27 i f ( e s t P r e m i e r ( nb ) ) { 28 p r i n t f ( " e s t p r e m i e r \n " ) ; 29 } e l s e { 30 p r i n t f ( " n e s t pas p r e m i e r \n " ) ; 31 } 32 r e t u r n EXIT_SUCCESS ; 33 } Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
26 2 Concepts de bases de Java 2.1 Syntaxe de base Premier en Java 1 package complements. commeenc ; 2 p u b l i c c l a s s P r e m i e r { 3 p r i v a t e s t a t i c boolean e s t P r e m i e r ( f i n a l i n t nb ) { 4 i f ( nb == 1) { r e t u r n f a l s e ; } 5 f o r ( i n t i =2; i <= nb / 2 ; i ++) { 6 i f ( nb%i == 0) { 7 r e t u r n f a l s e ; 8 } 9 } 10 r e t u r n t r u e ; 11 } 12 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 13 i n t nombre = C o n s o l e. r e a d I n t ( " E n t r e z un nombre e n t i e r " ) ; 14 System. out. p r i n t l n ( " Le nombre " + nombre + " e s t i l p r e m i e r? " ) ; 15 System. out. p r i n t ( " Le nombre " + nombre ) ; 16 i f ( e s t P r e m i e r ( nombre ) ) { 17 System. out. p r i n t l n ( " e s t p r e m i e r " ) ; 18 } e l s e { 19 System. out. p r i n t l n ( " n e s t pas p r e m i e r " ) ; 20 } 21 } 22 } Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
27 Introduction au langage de programmation Java 2.2 Types Primitifs 2 Concepts de bases de Java pas des classes short(2 octets), int (4 octets), long (8 octets) float (4 octets), double (8 octets) boolean (true/false), byte (1 octet), char (2 octets) Variables déclarées n importe où dans un bloc Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
28 2 Concepts de bases de Java 2.2 Types Primitifs Conversions de type Conversions sur les types primitifs : Conversions sûres OK (d un type vers un type plus complexe) Conversions non sûres (d un type vers un type plus pauvre) nécessitent un transtypage (en anglais, cast) explicite Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
29 2 Concepts de bases de Java 2.2 Types Primitifs Exemple de conversions 1 p u b l i c c l a s s CastExampleFixed { 2 p u b l i c s t a t i c v o i d main ( f i n a l S t r i n g [ ] a r g s ) { 3 i n t i = ; // 0 x002075a8 4 l o n g m; 5 s h o r t s ; 6 byte b ; 7 m = i ; // promotion OK 8 // E x p l i c i t c a s t needed 9 i = ( i n t ) m; 10 s = ( s h o r t ) i ; // 0x75A8 11 b = ( byte ) i ; // 0xA8 12 System. out. p r i n t l n ( "m= " + m + " ; s= " + s + " ; b= " + b ) ; 13 } 14 } Résultat de l exécution : m= ; s= 30120; b= -88; Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
30 2 Concepts de bases de Java 2.2 Types Primitifs Tableaux Les tableaux sont des objets Leur taille est fixe Leur taille est allouée dynamiquement par l utilisation du mot réservé new L accès aux entrées est identique à celle en langage C une fois l allocation faite Erreur d accès en cas de dépassement de taille Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
31 2 Concepts de bases de Java 2.2 Types Primitifs Exemple avec un tableau 1 p u b l i c c l a s s ArrayExample { 2 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 3 i n t [ ] a r r a y O f I n t ; // o r i n t a r r a y O f I n t [ ] ; // d e c l a r a t i o n de l a v a r i a b l e a r r a y 4 a r r a y O f I n t = new i n t [ 4 2 ] ; // c r e a t i o n du t a b l e a u e t a s s o c i a t i o n a a r r a y O f I n t 5 a r r a y O f I n t [ 0 ] = 3 ; // a f f e c t a t i o n d un e l e m e n t du t a b l e a u 6 7 System. out. p r i n t l n ( " A r r a y l e n g t h "+ a r r a y O f I n t. l e n g t h ) ; // o b t e n t i o n de l a t a i l 8 System. out. p r i n t l n ( a r r a y O f I n t [ 4 2 ] ) ; // i m p o s s i b l e l e v e e d un e x c e p t i o n 9 } 10 } Résultat de l exécution : Array length 42 Exception in thread "main" java.lang.arrayindexoutofboundsexception: 42 at ArrayExample.main(ArrayExample.java:8) Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
32 Introduction au langage de programmation Java 2.3 Tableaux 2 Concepts de bases de Java Déclaration de la référence int[] arrayofint; // or int arrayofint[]; Création avec association de taille arrayofint = new int[42]; Taille int t = arrayofint.length; Compatibilité avec C : int[] primes = {1, 2, 3, 5, 7, 7+4}; Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
33 Introduction au langage de programmation Java 2.4 Méthodes 2 Concepts de bases de Java Nom donné aux opérations Méthodes associées aux classes (pas de méthode sans classe) Surcharge (en anglais, overloading) des méthodes possible Méthode d instance Méthode de classe avec mot réservé static Prototype de la méthode public static void main(final String []) Passage d arguments Par valeur pour les types primitifs Par référence pour les objets et les tableaux Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
34 Introduction au langage de programmation Java 2 Concepts de bases de Java 2.5 Exemple de passage d arguments 1 p u b l i c c l a s s EssParm { 2 p r i v a t e s t a t i c v o i d add ( i n t c, f i n a l i n t [ ] as ) { 3 c++; 4 as [ 0 ] ++; 5 System. out. p r i n t l n ( " add : c=" + c + ", as [0]= " + as [ 0 ] ) ; 6 } 7 p u b l i c s t a t i c v o i d main ( f i n a l S t r i n g a r g v [ ] ) { 8 i n t i = 0 ; 9 i n t s [ ] = new i n t [ 1 0 ] ; 10 s [ 0 ] = 0 ; 11 add ( i, s ) ; 12 System. out. p r i n t l n ( " main : i=" + i + ", s [0]= " + s [ 0 ] ) ; 13 } 14 } Résultat de l exécution : add : c=1, as[0]=1 main : i=0, s[0]=1 Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
35 Introduction au langage de programmation Java Questions sur la syntaxe de base de Java 2 Concepts de bases de Java En Java un fichier source peut-il contenir des méthodes? Dans un bloc d instructions (partie entre accolades) : la ligne suivante est-elle acceptable en C et en Java? int a = 0, b = 1, c; la ligne suivante est-elle acceptable en C et en Java? if ( a = b ) { c = a; } L accès à un élément de tableau est-il réalisé de manière identique en C et en Java? Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
36 Introduction au langage de programmation Java 3 Classes et objets en Java 3.1 Classe Objet Attributs et méthodes de classe Association entre classes Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
37 Introduction au langage de programmation Java 3.1 Classe 3 Classes et objets en Java Classe Personne en UML Nom de la classe Attributs d instance de la classe Personne Personne Personne nom : String prénom : String nbparticipations : Integer = 0 nborganisations : Integer = 0 Constructeur(String n, String p) voter(bulletin b) consulterresultat(scrutin s) seretirerdunscrutin(scrutin s) nom : String prénom : String nbparticipations : Integer nborganisations : Integer Opérations d instance de la classe voter(bulletin) consulterresultat(scrutin) seretirerdunscrutin(scrutin) Personne Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
38 3 Classes et objets en Java 3.1 Classe Classe Personne en Java 1 package s t u d s ; 2 p u b l i c c l a s s Personne { 3 p r i v a t e S t r i n g nom, prenom ; 4 p r i v a t e i n t n b P a r t i c i p a t i o n s = 0, n b O r g a n i s a t i o n s = 0 ; 5 p u b l i c Personne ( f i n a l S t r i n g n, f i n a l S t r i n g p ) { 6 nom = n ; prenom = p ; 7 } 8 p u b l i c v o i d v o t e r ( f i n a l B u l l e t i n b ){ } 9 p u b l i c v o i d c o n s u l t e r R e s u l t a t ( f i n a l S c r u t i n s ) { } 10 p u b l i c v o i d s e R e t i r e r D U n S c r u t i n ( f i n a l S c r u t i n s ) { } 11 } Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
39 3 Classes et objets en Java 3.1 Classe Instance de classe en UML Nom de la classe Identifiant de l objet Personne j:personne nom : String prénom : String nbparticipations : Integer = 0 nborganisations : Integer =0 nom = "Dupont" prénom = "Julien" nbparticipations = 7 nborganisations = 3 Constructeur(String n,string p) voter(bulletin b) consulterresultat(scrutin s) seretirerdunscrutin(scrutin s) Type de l attribut Valeur de l attribut Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
40 3 Classes et objets en Java 3.1 Classe Instance de classe en Java 1 import s t u d s. Personne ; 2 c l a s s I n i t P e r s o n n e { 3 p u b l i c s t a t i c v o i d main ( f i n a l S t r i n g [ ] a r g s ) { 4 Personne j ; // r e f e r e n c e 5 j = new Personne ( " Dupont ", " J u l i e n " ) ; // i n s t a n c e c r e a t i o n 6 System. out. p r i n t l n ( j ) ; 7 } 8 } Résultat de l exécution : Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
41 Introduction au langage de programmation Java 3 Classes et objets en Java 3.2 Objet Création d un objet Disposer d une référence : Personne p; Créer l objet : new + appel à un constructeur p = new Personne("Dupont", "Julien"); Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
42 3 Classes et objets en Java 3.2 Objet Constructeurs en Java Méthode particulière : Nom identique à la classe Aucun type de retour Appelé directement à travers new Si aucun constructeur n est spécifié, le compilateur en fabrique un par défaut qui initialise les attributs à 0 (correspondant à leur type) La surcharge des méthodes (overloading) permet à une classe d avoir plusieurs constructeurs qui diffèrent par le nombre et le type de leurs arguments Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
43 3 Classes et objets en Java 3.2 Objet Exemples de constructeurs 1 package s t u d s c t r s ; 2 import s t u d s. B u l l e t i n ; 3 import s t u d s. S c r u t i n ; 4 p u b l i c c l a s s Personne { 5 p r i v a t e S t r i n g nom, prenom ; 6 p r i v a t e i n t n b P a r t i c i p a t i o n s = 0, n b O r g a n i s a t i o n s = 0 ; 7 p u b l i c Personne ( f i n a l S t r i n g n, f i n a l S t r i n g p ) { 8 nom = n ; prenom = p ; 9 } 10 p u b l i c Personne ( f i n a l S t r i n g n, f i n a l S t r i n g p, 11 f i n a l i n t nbp, f i n a l i n t nbo ) { 12 nom = n ; prenom = p ; 13 n b P a r t i c i p a t i o n s = nbp ; n b O r g a n i s a t i o n s = nbo ; 14 } 15 p u b l i c v o i d v o t e r ( f i n a l B u l l e t i n b ) { } 16 p u b l i c v o i d c o n s u l t e r R e s u l t a t ( f i n a l S c r u t i n s ) { } 17 p u b l i c v o i d s e R e t i r e r D U n S c r u t i n ( f i n a l S c r u t i n s ) { } 18 } Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
44 3 Classes et objets en Java 3.2 Objet this this permet de référencer l instance courante ; Est associé au concept d auto-référence de l objet this permet de décrire un attribut ou une méthode de l instance courante sans ambiguïté this(...) en tant que méthode fait appel à un constructeur Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
45 3 Classes et objets en Java 3.2 Objet Exemples d utilisation de this 1 package s t u d s t h i s ; 2 import s t u d s. B u l l e t i n ; 3 import s t u d s. S c r u t i n ; 4 p u b l i c c l a s s Personne { 5 p r i v a t e S t r i n g nom, prenom ; 6 p r i v a t e i n t n b P a r t i c i p a t i o n s = 0, n b O r g a n i s a t i o n s = 0 ; 7 8 p u b l i c Personne ( f i n a l S t r i n g nom, f i n a l S t r i n g prenom ) { 9 t h i s. nom = nom ; t h i s. prenom = prenom ; 10 } 11 p u b l i c Personne ( f i n a l S t r i n g n, f i n a l S t r i n g p, 12 f i n a l i n t nbp, f i n a l i n t nbo ) { 13 t h i s ( n, p ) ; 14 n b P a r t i c i p a t i o n s = nbp ; n b O r g a n i s a t i o n s = nbo ; 15 } 16 v o i d v o t e r ( f i n a l B u l l e t i n b ){ } 17 v o i d c o n s u l t e r R e s u l t a t ( f i n a l S c r u t i n s ) { } 18 v o i d s e R e t i r e r D U n S c r u t i n ( f i n a l S c r u t i n s ) { } 19 } Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
46 3 Classes et objets en Java 3.2 Objet Destruction des objets Pas de technique particulière pour détruire un objet Objet détruit lorsqu il n est plus référencé Utilisation d un ramasse miettes Le Garbage Collector détruit les objets non référencés La destruction est asynchrone Il n y a pas de garantie sur la destruction (le programme peut se terminer avant que l objet ne soit détruit) Si la classe décrit une méthode appelée finalize, cette méthode est appelée avant la libération de la mémoire de l objet Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
47 3 Classes et objets en Java 3.2 Objet Abstraction et encapsulation Une classe correspond aux concepts d abstraction et d encapsulation C est une abstraction car elle présente une interface (ensemble de méthodes) qui permettent d interagir avec les objets Une classe encapsule des données (ensemble d attributs) Pour garantir sa robustesse et son indépendance du reste du code, une classe doit masquer son implantation En particulier, elle ne doit pas permettre la modification de ses attributs sans contrôle Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
48 3 Classes et objets en Java 3.2 Objet Visibilité des méthodes Les méthodes publiques (public) d une classe définissent son interface publique Les méthodes privées (private), ne sont accessibles que depuis l intérieur de la classe Les méthodes protégées (protected), sont accessibles depuis l intérieur de la classe et de l intérieur de ses classes dérivées Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
49 Introduction au langage de programmation Java 3.3 Attributs et méthodes de classe 3 Classes et objets en Java Attribut d instance Attribut de classe Opération d instance Opération de classe Personne nom : String prénom : String nbparticipations : Integer nborganisation : Integer nbtotalparticipations : Integer Constructeur(String n, String p) voter(bulletin) consulterresultat() seretirerdunscrutin() getnbtotalparticipations() j:personne nom = Dupont prénom = Julien nbparticipations = 7 nborganisation = 3 nbtotalparticipations = 12 nom = Martin prénom = Marie nbparticipations = 5 nborganisation = 1 m:personne Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
50 3 Classes et objets en Java 3.3 Attributs et méthodes de classe Attributs et méthodes de classe Java 1 package s t u d s s t a t ; 2 p u b l i c c l a s s Personne { 3 p r i v a t e S t r i n g nom, prenom ; 4 p r i v a t e i n t n b P a r t i c i p a t i o n s = 0, n b O r g a n i s a t i o n s = 0 ; 5 p r i v a t e s t a t i c i n t n b T o t a l P a r t i c i p a t i o n s = 0 ; 6 p u b l i c Personne ( f i n a l S t r i n g nom, f i n a l S t r i n g prenom ){ 7 t h i s. nom = nom ; t h i s. prenom = prenom ; 8 } 9 p u b l i c Personne ( f i n a l S t r i n g nom, f i n a l S t r i n g prenom, 10 f i n a l i n t nbp, f i n a l i n t nbo ) { 11 t h i s (nom, prenom ) ; 12 n b P a r t i c i p a t i o n s = nbp ; 13 n b T o t a l P a r t i c i p a t i o n s += nbp ; 14 n b O r g a n i s a t i o n s = nbo ; 15 } 16 p u b l i c s t a t i c i n t g e t N b T o t a l P a r t i c i p a t i o n s ( ) { 17 r e t u r n n b T o t a l P a r t i c i p a t i o n s ; 18 } 19 p u b l i c S t r i n g t o S t r i n g ( ) { 20 r e t u r n nom + " " + prenom + " nbp " + n b P a r t i c i p a t i o n s 21 + " nbo " + n b O r g a n i s a t i o n s + " nbt " 22 + n b T o t a l P a r t i c i p a t i o n s ; Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
51 3 Classes et objets en Java 3.3 Attributs et méthodes de classe 23 } 24 } 1 import s t u d s s t a t. Personne ; 2 p u b l i c c l a s s T e s t S t a t i c P e r s o n n e { 3 p u b l i c s t a t i c v o i d main ( f i n a l S t r i n g [ ] a r g s ) { 4 Personne j = new Personne ( " Dupont ", " J u l i e n ", 7, 3 ) ; 5 Personne m = new Personne ( " Martin ", " Marie ", 5, 1 ) ; 6 System. out. p r i n t l n ( j ) ; 7 System. out. p r i n t l n (m) ; 8 } 9 } Affichage : Dupont Julien nbp 7 nbo 3 nbt 12 Martin Marie nbp 5 nbo 1 nbt 12 Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
52 3 Classes et objets en Java 3.3 Attributs et méthodes de classe Attributs et méthodes de classe Les attributs statiques sont partagés par toutes les instances de la classe Les méthodes statiques ne peuvent accéder qu aux attributs statiques Il n est pas nécessaire d instancier la classe pour accéder à ses membres statiques Les instances peuvent accéder aux attributs statiques Les instances peuvent invoquer les méthodes statiques Les méthodes statiques ne sont jamais associées à l auto référence de l objet (this) Quelques exemples avec la classe java.lang.math : pi = Math.PI; // static attribute PI b = Math.sqrt(2.0);// method call of static sqrt Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
53 Introduction au langage de programmation Java 3.4 Association entre classes 3 Classes et objets en Java Association Nom de l association Sens de lecture de l association Personne organise * Scrutin m:personne organise listebde:scrutin Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
54 3 Classes et objets en Java 3.4 Association entre classes Exemple d association 1 package s t u d s o r g ; 2 p u b l i c c l a s s Personne { 3 p r i v a t e S t r i n g nom, prenom ; 4 p r i v a t e i n t n b P a r t i c i p a t i o n s = 0, n b O r g a n i s a t i o n s = 0 ; 5 p r i v a t e S c r u t i n [ ] s c r u t i n s O r g a n i s e s ; 6 p u b l i c Personne ( f i n a l S t r i n g nom, f i n a l S t r i n g prenom ) { 7 t h i s. nom = nom ; t h i s. prenom = prenom ; 8 s c r u t i n s O r g a n i s e s = new S c r u t i n [ 1 0 ] ; 9 } 10 p u b l i c S c r u t i n o r g a n i s e r S c r u t i n ( f i n a l S t r i n g nom){ 11 S c r u t i n s = new S c r u t i n (nom ) ; 12 s c r u t i n s O r g a n i s e s [ n b O r g a n i s a t i o n s ] = s ; 13 n b O r g a n i s a t i o n s ++; 14 r e t u r n s ; 15 } 16 p u b l i c S t r i n g t o S t r i n g ( ) { 17 r e t u r n g e t C l a s s ( ). getname ( ) + " "+nom+" "+prenom+" nbp " 18 + n b P a r t i c i p a t i o n s + " nbo " + n b O r g a n i s a t i o n s ; 19 } 20 } 1 package s t u d s o r g ; Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
55 3 Classes et objets en Java 3.4 Association entre classes 2 p u b l i c c l a s s S c r u t i n { 3 p r i v a t e S t r i n g nomscrutin ; 4 p u b l i c S c r u t i n ( f i n a l S t r i n g nom) { 5 nomscrutin = nom ; 6 } 7 j a v a. l a n g. O b j e c t#t o S t r i n g ( ) / O v e r r i d e 9 p u b l i c S t r i n g t o S t r i n g ( ) { 10 r e t u r n " S c r u t i n [ nomscrutin=" + nomscrutin + " ] " ; 11 } } 1 import s t u d s o r g. ; 2 p u b l i c c l a s s I n i t S c r u t i n { 3 p u b l i c s t a t i c v o i d main ( f i n a l S t r i n g [ ] a r g s ) { 4 Personne p ; // r e f e r e n c e 5 p = new Personne ( " Dupont ", " J u l i e n " ) ; // i n s t a n c e c r e a t i o n 6 S c r u t i n bde = p. o r g a n i s e r S c r u t i n ( " E l e c t i o n bde 2010 " ) ; 7 } 8 } Télécom SudParis Christian Bac, Denis Conan Octobre 2014 CSC /169
3 ElementsdeprogrammationJava 15 3.1 Premierspas... 15
Tabledesmatières 1 IntroductionaulangageJava 1 1.1 EnvironnementJava... 1 1.1.1 Compilation... 2 1.1.2 Interprétation... 2 1.2 Programmationorientée-objet... 2 1.2.1 Classe... 3 1.2.2 Objet... 4 2 Syntaxedulangage
Java 1.5 : principales nouveautés
Cours 6 - TEP - M2 STL - UPMC - 2006/2007 p. 1/30 Java 1.5 : principales nouveautés classes paramétrées : generics encapsulation des valeurs de types primitifs : auto[un]boxing itération sur les boucles

References: CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC