Home

LE LANGAGE JAVA Petit mémento de syntaxe

image

Contents

1. Exemple de r f rence la classe StaticNestedClass OuterClass StaticNestedClass Quel int r t peut il y avoir d clarer des classes imbriqu es Potentiellement un regroupement logique une encapsulation accrue un code plus lisible et plus facilement maintenable En pratique la plupart des classes imbriqu es sont des classes internes Quant aux classes anonymes elles peuvent rendre le code difficile lire et doivent donc tre limit es des classes tr s petites d une ou deux m thodes voir exemple typique en section 11 4 2 3 6 Contr le d acces par les modificateurs Le contr le d acc s un membre d une classe peut tre pr cis dans leur d claration par des mots cl s appel s modificateurs Ces modificateurs permettent de sp cifier la visibilit du champ ou de la m thode private protected ou public le lieu de stockage dans la classe modificateur static ou dans l objet par d faut le caract re modifiable par d faut ou non modificateur final Modificateur Commentaires et exemple private Un membre d clar private n est accessible qu l int rieur de sa classe de d finition Modificateur d acc s recommand pour les champs protected Un membre d clar protected n est accessible que depuis sa classe de d claration une sous classe ou une classe du m me paquetage Modificateur d acc s recommand pour les m thodes des s
2. METHODS UTILITIES Return the greatest common divisor of the two integers x and y Wi private int greatestCommonDivisor int x int y int divisor impl menter return divisor end class RationalNumber 3 2 Classes abstraites et sous classes Une classe qui poss de au moins une m thode abstraite i e sans corps est abstraite et doit tre d clar e avec le modificateur abstract Les classes abstraites ne peuvent pas tre instanci es Pour pouvoir cr er des objets il faut cr er une sous classe dans laquelle toutes les m thodes abstraites seront d finies cette sous classe non abstraite pourra alors tre instanci e 3 2 1 Classes abstraites Syntaxe public abstract class ClassName Fields Constructors Methods Exemple Abstract Class Progression Represents a real linear progression of order 1 with constant coefficients author AM version 1 0 ESIEE AM Poly Java v 3 7 Mai 2010 Page 13 85 public abstract class Progression FIELDS private double u0 the first term of the progression CONSTRUCTORS Define a progression the first term of which is u0 public Progression double u0 this u0 u0 METHODS Get the first term of this progression public double getu0 return u0 Given a current term u n return the next term u n 1 public abstract double nextTerm double un Return
3. Java permet de cr er deux types de programmes des applications qui s ex cutent directement sous le contr le de la machine virtuelle Java des appliquettes ou applettes en anglais applets destin es tre ex cut es par un navigateur Web Pour r aliser une applette le minimum consiste Un paradigme est une vision du monde qui repose sur un mod le ESIEE AM Poly Java v 3 7 Mai 2010 Page 61 85 cr er une sous classe de la classe JApplet voir section 11 2 y cr er la m thode initQ qui sera lanc e par le navigateur r f rencer cette classe dans la balise lt APPLET CODE gt d un fichier HTML Syntaxe import javax swing JApplet public class AppletClassName extends JApplet Fields public void init ES Syntaxe lt APPLET CODE AppletClassName class WIDTH anInt HEIGHT anInt gt lt APPLET gt Page 62 85 ESIEE AM Poly Java v 3 7 Mai 2010 12 ANNEXE 2 THREADS R f rences Mary CAMPIONE amp al The Java Tutorial 3 ed Addison Wesley Programmation concurrente processus threads java sun com docs books tutorial essential concurrency procthread html Les threads permettent de programmer des t ches qui l int rieur d un m me programme s ex cuteront concurremment Ce sont des processus l gers La t che ex cuter par un thread doit tre impl ment e dans une m thode run Il existe deux fa
4. chaque interface Listener une classe adaptateur Adapter Si cet adaptateur existe c est avec lui que l on travaille Page 58 85 ESIEE AM Poly Java v 3 7 Mai 2010 Exemple d interface Listener Classe Adapter associ e ActionListener None WindowListener WindowAdapter MouseListener MouseAdapter KeyListener KeyAdapter 11 4 2 R aliser un gestionnaire d v nement R aliser un gestionnaire d v nement event handler requiert trois l ments de code d clarer une classe gestionnaire d v nement cette classe doit impl menter une interface Listener ou tendre une classe Adapter Exemple import java awt event public class MyClass implements ActionListener d finir dans cette classe gestionnaire d v nement les m thodes de l interface Listener Exemple public void actionPerformed ActionEvent e d finir une instance de cette classe gestionnaire d v nement et l enregistrer sur le s composant s concern s Exemple someComponent addActionListener instanceOfMyClass Le type ActionListener permet de d finir les gestionnaires d v nement les plus simples et les plus communs Lorsqu un v nement de ce type est g n r clic d un bouton graphique ou enfoncement de la touche return lors d une saisie dans un champ texte un message actionPerformed est envoy tous les couteurs d v nements qui sont enregistr s sur le compo
5. eee eeeeeseeseeeeeeeeeeeeeeeneeee 10 2 5 Paquetages nn nnrnnnnnnnnannnnnnnennenennnnvennnneanneneanennanennnannnnnnnnnnns 10 E OU TEE 10 2 5 2 Affectation d une classe un paquetage cece eee eeesceetseeecetseescsesseseeeesseeaeeees 10 2 5 3 Importation d une classe d un paquetage esseseiesssiseseseseseserererenesessessressenesesssness 11 3 CLASSES ET INTERFACES see resersnnnnonense 12 3 1 Classes standatd pi rente entente 12 3 2 Classes abstraites et SOUS CIASSES ui irrnrarrsreeneasnesreennnsnnnnnnnnse 13 3 2 1 Classes Abstraites ee EE ege EE 13 E EE 14 3 3 Interfaces S E E T 15 2 E e Te R E E EEN 16 3 3 2 Classe implantant une interface ss 16 3 4 En m rali n s E A A N 16 3 5 Classes imbriqu es Nested classes 2 cecccseceseeseeeeeeeeeeeeeseeeeeeeeeeeneeeneeeeseeeees 17 3 6 Contr le d acc s par les modificateurs sssssusssesussunenuenunnurnunnunnnnnnnnnnnnnnnnnnnn nnen 18 4 INSTANCE DE CLASSE 0 2 ccccccsseeeseeectecsnseeeecessersensereesenerseneeceeeess 20 D TYPES DE DONNEES eae nein ees 21 5 1 Types primitifs us ssssssransrannnnnnvannnnnnnennnnenareennnnaanneeeannneannnnnanannnnnnntannanens 21 5 2 Types objet ou types r f rence sens 22 52 l GG 22 5 2 2 Cha ne de caract res non modifiable String 23 5 2 3 Cha ne de caract res modifiable StringBuffer 23 SE KEE 23 5 2 5 Collections ss are ed re toads tr a e a t
6. public SimpleThread String threadName this threadName threadName The task of this thread is to print 10 times its name at a random rate public void run for Cint i 0 i lt 10 i System out printin i try Thread sleepCClong Math random 1000 catch InterruptedException e threadName System out printInC DONE threadName end class SimpleThread Example of running two threads concurrently C Jamaica and Fiji Will be printed randomly 10 times public static void main String args new Thread new SimpleThread Jamaica startQ new Thread new SimpleThread Fiji startQ 12 3 Synchronisation et communication entre threads 12 3 1 Sections critiques et synchronisation Dans un programme des segments de code qui acc dent une m me donn e depuis des threads concurrents sont appel s sections critiques Lorsque deux threads concurrents invoquent des m thodes qui op rent sur une m me donn e partag e m thodes critiques il est n cessaire que Java puisse synchroniser ces m thodes afin de garantir un acc s s r l information A cette fin chacune de ces m thodes doit tre d clar e avec le modificateur synchronized A l ex cution l acc s la donn e partag e sera ainsi automatiquement verrouill tant qu elle sera utilis e par une m thode critique Exemple get et put sont suppos es deux m thodes critiques de l
7. AM Poly Java v 3 7 Mai 2010 10 2 Classes d exception standard 10 2 1 La hi rarchie Error La classe Error est la super classe d une hi rarchie d erreurs graves non contr l es Cette hi rarchie est habituellement r serv e aux erreurs d ex cution syst me Exemples de sous classes pr d finies NoSuchMethodError StackOverFlowError OutOfMemoryError IllegalAccessError 10 2 2 La hi rarchie Exception La classe Exception est la super classe d une hi rarchie d exceptions exclusion faite de la sous hi rarchie RuntimeException contr l es Exemples de sous classes d exceptions contr l es pr d finies DataFormatException IOException EOFException Fi leNotFoundException 10 2 3 La hi rarchie RuntimeException La classe RuntimeException est la super classe d une hi rarchie d exceptions non contr l es Exemples de sous classes pr d finies ArithmeticException IllegalArgumentException NumberFormatException IllegalStateException IndexOutOfBoundsException NullPointerException 10 3 Lancement d une exception L instruction throw permet de lancer une exception Il est recommand de ne l appliquer qu des exceptions non contr l es Syntaxe throw new ClassOfException diagnostic message to print Exemple if key null throw new Nul1lPointerException null key found in method x Exemple if key 0 throw new IllegalArgumentExcept
8. Depuis la plate forme 5 0 voir chapitre 16 Il est conseill d utiliser l annotation ou m ta donn e Override pour marquer toute m thode qui est suppos e red finir une m thode h rit e d une classe parent Cela permet au compilateur de signaler imm diatement une erreur si jamais la red finition n est pas av r e cause par exemple d une faute de frappe dans le nom de la m thode En outre en signalant les m thodes red finies l annotation Override permet d accro tre la lisibilit du code La covariance des types de retour est autoris e une m thode d une sous classe peut retourner un objet dont le type est une sous classe du type retourn par la m thode de m me signature dans la super classe Cette caract ristique supprime le besoin de tests et de conversions de types excessifs Exemple Override public String toString ff Exemple Soit une classe Point poss dant deux attributs x et y soit une classe ColoredPoint h ritant de Point et poss dant un attribut sp cifique color O et comment crire la m thode equals sans duplication de code Page 44 85 ESIEE AM Poly Java v 3 7 Mai 2010 In the class Point Override public boolean equals Object o if C o null return false case null if this o return true reflexivity if C this getClassQ o getClass return false symmetry Now this and o having the same class compare
9. ou instance de classe doit tre 1 d clar ClassName objectName 2 cr puis initialis objectName new constructorCall Exemples GregorianCalendar cal cal GregorianCalendar Timer myTimer new Timer La d claration d un objet ne cr e pas l objet mais uniquement une variable pointeur destin e m moriser l adresse future de l objet La cr ation de l objet en lui m me i e l instance proprement dite est r alis e par l op rateur new L appel au constructeur qui suit l op rateur new a pour r le d initialiser proprement l objet ainsi cr In fine l adresse de l objet ainsi cr et initialis adresse renvoy e par l op rateur new est stock e gr ce l op rateur d affectation dans la variable pr alablement d clar e Quelques pr cisions importantes e D claration La d claration ClassName objectName cr e une variable de nom objectName de type r f rence i e un pointeur et l initialise automatiquement nu11 null est une constante litt rale pr d finie de Java qui peut tre assign e toute variable de type r f rence et qui identifie un pointeur nul Une variable de valeur nu11 ne pointe vers aucun objet Toute tentative de r f rer un objet partir d un pointeur null engendre une erreur de compilation ou d ex cution selon le contexte Gestion dynamique de la m moire L op rateur new cr e l instance de classe da
10. A tout tableau est automatiquement associ e une classe d riv e d Object et partag e par tous les tableaux ayant le m me type d l ments L attribut d instance length qui est un champ public et non une m thode contient le nombre d l ments du tableau Les l ments d un tableau array sont indic s de 0 array length 1 ESIEE AM Poly Java v 3 7 Mai 2010 Page 23 85 Quand on tente d acc der un l ment dont l indice est hors de la plage permise une exception de type IndexOutOfBoundsException est lev e Il est noter qu un tableau de caract res n est pas un objet de type String et r ciproquement Syntaxe pour le cas d un tableau mono dimensionnel Declaring an array variable TypeOfElements arrayVariable Creating an array object arrayVariable new TypeOfElements numberOfElements Referring to an element arrayVariable integerIndex Exemple Declaring an array variable private double marks Creating an array object static final int NB_OF_STUDENTS 48 marks new double NB_OF_STUDENTS Using an array object for Cint i 0 i lt marks length i marks i Math random 20 0 System out printInC marks 1 marks i Exemple static final int NROW 10 static final int NCOL 20 String matrix new String NROW NCOL Il est possible de cr er et d initialiser un tableau la d claratio
11. II OU logique conditionnel i OU logique exclusif D A d Avec ces op rateurs l valuation de l expression logique s arr te d s qu il est possible d inf rer la valeur finale de l expression tous les op randes ne sont donc pas n cessairement valu s Op rateur bool en unaire Op rateur Fonction N gation logique 6 3 Op rateurs relationnels Quelques op rateurs relationnels ou de comparaison Op rateur Fonction gal I non gal a lt inf rieur a lt inf rieur ou gal a gt sup rieur a gt sup rieur ou gal a Page 30 85 ESIEE AM Poly Java v 3 7 Mai 2010 7 METHODES 7 1 D finition et appel d une m thode ordinaire D finition d une proc dure D finition d une fonction public void procName formalParams declarations statements public fctType fctName formalParams declarations statements return expression Appel d une proc dure Appel d une fonction Appel interne la classe de d finition procName actualParams Appel externe la classe de d finition m thode d instance objectName procName actualParams m thode de classe ClassName procName actualParams Appel interne la classe de d finition variable fctName actualParams Appel externe la classe de d finition m thode d instance variable o
12. dures d entr e sortie tant en mode texte que graphique Nous nous limitons dans cette section aux principales instructions d entr es sorties en mode texte pour des entr es sorties en mode graphique voir chapitre 11 Les m thodes d entr e sortie primaires appartiennent aux classes du paquetage java io Depuis la plate forme 5 0 voir chapitre 16 la classe Scanner du paquetage java util offre des fonctionnalit s de base pour lire facilement des donn es depuis tout flux d entr e des sorties format es comme en C En compl ment la classe java util Formatter permet de sp cifier des formats d entr e ou de sortie 8 3 1 Notion de flux Les flux ou flots streams en anglais g n ralisent la notion de p riph rique d entr e sortie Un flux peut tre vu comme une interface intelligente unidirectionnelle reliant la machine Java et le p riph rique et qui permet en lecture aussi bien qu en criture de s affranchir des sp cificit s du p riph rique concern R aliser une entr e sortie consiste ainsi 1 cr er un flux du type appropri sauf s il existe d j ou est pr d fini System in System out ou System err 2 lire ou crire selon le cas dans ce flux 3 et souvent dans le cas d une lecture convertir la donn e lue dans le type cible souhait Pour une premi re approche nous nous limiterons des flux acc s s quentiel 8 3 2 Entr e sortie terminal Les solut
13. ment de type entier attribut contents Y noter en particulier la s curisation apport e par usage d un while et non d un if afin de pr venir de faux r veils ventuels public class CubbyHole private int contents private boolean available false public synchronized int get called by Consumer while available false try waitQ wait for Producer to put value catch InterruptedException ei O available false notifyA110 return contents public synchronized void put int x called by Producer while available true try waitQ wait for Consumer to get value catch InterruptedException e contents X available true notifyA110 ESIEE AM Poly Java v 3 7 Mai 2010 Page 65 85 13 ANNEXE 3 CONCEPTION ET DEVELOPPEMENT EN JAVA R f rences Conseils g n raux pour une bonne conception David J BARNES Micka l KOLLING Objects First With Java 4 ed Chap 7 Prentice Hall Pearson Education 2008 ISBN 0136060862 www bluej org objects first www bluej org objects first chapters objects first ch7 pdf Architecture Mod le Vue Contr leur java sun com blueprints guidelines designing_enterprise_applications_2e app arch app arch2 html D veloppement de tests unitaires avec le cadre d applications JUnit junit sourceforge net doc cookbook cookbook htm JavaBeans java sun com products javabeans java sun
14. thodes get int etadd int E suppression d un l ment d indice donn m thode remove int consultation du nombre d l ments m thode size Les l ments d un objet collection de type ArrayList lt E gt sont indic s de 0 Collection size 1 La classe ArrayList lt E gt doit tre import e du paquetage java util par import java util ArrayList Exemple ArrayList lt Integer gt myCollectionOfIntegers myCollectionOfIntegers new ArrayList lt Integer gt for Cint i 0 i lt 10 i listOfIntegers add i 0 Page 26 85 ESIEE AM Poly Java v 3 7 Mai 2010 5 2 5 3 Parcours d une collection It rateur Le parcours d une collection est l op ration qui consiste explorer cette collection l ment par l ment Deux fa ons de faire pour parcourir une collection Sot utiliser un it rateur Un it rateur est un objet de type Iterator lt E gt Les trois fonctionnalit s les plus utiles pour cr er et g rer un it rateur sont les m thodes iterator de la classe Collection hasNext et next de la classe Iterator A noter que la suppression d l ments de la collection en cours de parcours rel ve de la m thode remove de l it rateur et non de celle de la collection La classe Iterator lt E gt doit tre import e du paquetage java util par import java util Iterator Les it rateurs sont la fagon de faire historique pour parcourir une collecti
15. 8 2 1 Instructions de s lection 8 2 1 1 if else Premi re forme Deuxi me forme if expression if expression statements statements else statements Exemple if field sizeQ 0 System out println The field is empty Exemple if number lt 0 reportError else processNumber number Page 34 85 ESIEE AM Poly Java v 3 7 Mai 2010 Exemple if n lt 0O handleNegative else if n 0 handlezero else handlePositive 8 2 1 2 switch Premi re forme Deuxi me forme switch expression switch expression case valuel case valuel statements falls through break case value2 case value2 falls through statements case value3 break statements default break statements case value4 break falls through case values statements break default statements break Une instruction switch peut avoir un nombre quelconque de labels case L instruction break met fin l instruction switch A d faut d instruction break l ex cution se poursuit sur les instructions des labels suivants La deuxi me forme ci dessus exploite ce comportement chacune des trois premi res valeurs conduira l ex cution de la partie statements associ e value3 chacune des deux valeurs suivantes conduira l ex cution de la partie statements associ e values La clause default est
16. 85 ESIEE AM Poly Java v 3 7 Mai 2010 public class Picture public static void main String args Vector lt Shape gt v new Vector lt Shape gt v add new CircleQ v add new Square for Shapes v System out prinlin es draw polymorphism La m thode main affichera circle drawQO square drawQ 9 6 Classes et m thodes particuli res Une classe d clar e final ne peut pas tre sous class e Une m thode d clar e final ne peut pas tre red finie dans une sous classe Une classe d clar e abstract repr sente un concept abstrait elle ne peut pas tre instanci e et ne peut tre que sous class e Une m thode d clar e abstract est une m thode dont le corps n est pas sp cifi Une classe abstraite peut contenir des m thodes non abstraites mais toute classe contenant une m thode abstraite doit tre d clar e abstract Si une sous classe n impl mente pas toutes les m thodes abstraites de sa super classe elle doit tre d clar e abstract 9 7 Interfaces Une interface au sens du langage Java cf section 3 3 est un protocole de comportement qui peut tre implant par toute classe Une interface est en dehors de la hi rarchie des classes Une interface se diff rencie principalement d une classe abstraite par ces caract ristiques aucune m thode concr te par opposition abstraite ne peut tre d finie dans une interface une classe peut impl me
17. Commentaires Le modificateur native indique qu il s agit d une proc dure externe non crite en java Le nom de la proc dure est arbitraire La m thode loadLibrary va charger la biblioth que 71bMyRoutines s0 le mot cl static qui encapsule le bloc d instructions dans lequel l appel est r alis Page 80 85 ESIEE AM Poly Java v 3 7 Mai 2010 permet d ex cuter ce bloc d s le chargement de la classe MyClass sans avoir besoin de passer par l appel d une m thode interm diaire 15 1 2 Prototype C Le fichier MyClass h produit par javah cf tape 2 pr c dente sp cifie les prototypes que devront respecter les sous programmes C crire Contenu expurg du fichier MyClass h produit par javah DO NOT EDIT THIS FILE it is machine generated Header for class MYClass JNIEXPORT void JNICALL Java_MyClass_procedurel CINIEnv jclass JNIEXPORT void JNICALL Java_MyClass_procedure2 CINIEnv jobject Commentaires JNIEXPORT et JNICALL sont deux macros pr d finies par JNI pour faire communiquer java et C void sp cifie qu il s agit d une proc dure Java_MyClass_procedurel est le nom impos que devra porter la proc dure C correspondant la m thode de nom procedure d clar e dans le programme java idem pour procedure2 Deux param tres sont syst matiquement introduits en t te de la liste des param tres o le premier de type JNIEnv est un pointeur ver
18. beans 13 5 Design patterns Cette section n est qu une toute premi re introduction aux mod les de conception design 1 patterns Le d veloppement orient objet d applications professionnelles conduit g n ralement rencontrer des probl mes de conception types qui sont familiers la communaut des d veloppeurs confirm s et pour lesquels des solutions prouv es existent Il ne s agit pas ici de solutions th oriques algorithmes mais de solutions orient es objet empiriques dont la solidit et l efficacit ont fait leur preuve en pratique Ces solutions sont appel es mod les de conception design patterns Un d veloppeur exp riment se doit de les conna tre et de disposer d un panier de mod les de conception qu il appliquera aussi syst matiquement que possible Les mod les de conception sont des strat gies de r solution de grands types de probl mes de conception orient e objet Ils d crivent des formes g n riques d organisation de classes Ils sont ind pendants du langage de programmation objet mis en uvre A titre illustratif l architecture MVC d crite la section 13 2 est un exemple de mod le de conception d architecture logicielle architectural design pattern Les plus connus des mod les de conception de base sont les 23 mod les fondamentaux d crits par les quatre auteurs qui furent appel s collectivement The Gang of Four La bande des quatre ou tout simp
19. de la programmation en Java Il contient de nombreux exemples pratiques Il focalise sur les APIs n cessaires a la plupart des programmeurs d butants ou de niveau interm diaire SITES DE REFERENCE Le site officiel de Java est java sun com On peut notamment y consulter avec int r t des tutoriels java sun com docs books tutorial une grande collection de petits exemples de programmes java sun com developer codesamples examplets des recommandations de style java sun com docs codeconv html CodeConvTOC doc html le descriptif de tous les paquetages classes et m thodes standard java sun com javase 6 docs api le mode d emploi du g n rateur de documentation javadoc java sun com j2se javadoc index jsp une pr paration la certification de programmeur Java java sun com docs books tutorial extra certification Page 2 85 ESIEE AM Poly Java v 3 7 Mai 2010 SOMMAIRE 1 LANGAGE ET PROGRAMMATION ORIENTES OBJETS 7 2 PROGRAMME JAVA eine estate 8 2 1 Style de programmation csscssecssecseecsseesseesseeeseeseesseesneeesseeeeneseneseeesaeeeseesseeesenes 8 2 2 Identificat urs tu s EENEG EE ENEE EEGEN 8 2 3 Commentate S sararan nanara Seege Eed a 8 2 3 1 Commentaires de documentation 8 2 3 2 Commentaires d impl mentation ss 9 2 4 Fichier JAVA E 9 2 4 1 Nom et contenu d un fichier java ses 9 2 4 2 Compilation ex cution g n ration de la documentation
20. es sur une instance de classe Il existe aussi des m thodes de classe qui peuvent tre invoqu es sans instance On sp cifie une m thode de classe en la d clarant static La signature d une m thode est constitu e de son nom et de la liste des types des param tres Dans une m me classe deux m thodes ne peuvent pas avoir la m me signature elles peuvent toutefois porter le m me nom cela s appelle la surcharge Dans toute m thode d instance ou constructeur on peut r f rer l objet courant i e l objet dont la m thode ou le constructeur est en cours d appel par le mot cl this On peut ainsi r f rer tout membre champ ou m thode de l objet courant par un identifiant de la forme this membre 7 2 Constructeur Un constructeur est une m thode particuli re dont l invocation est explicitement associ e la cr ation d une instance de classe et dont la finalit est d initialiser proprement l tat de cet objet lors de sa cr ation La d finition d un constructeur suit des r gles syntaxiques sp cifiques le nom d un constructeur est obligatoirement le nom de sa classe d appartenance l en t te de sa d finition ne lui sp cifie pas de type Syntaxe de d finition d un constructeur d une classe de nom ClassName public ClassName formalParameters Fields initializations Un constructeur est typiquement utilis en association avec l op rateur new Exemple d
21. form e du nom de sa classe et de son code de hachage mais cette m thode peut tre red finie dans toute classe Si la m thode red finie dans la sous classe a simplement besoin d ajouter quelques fonctionnalit s compl mentaires a celles de la m thode de la super classe il n est pas besoin de la r crire compl tement car elle peut appeler la m thode de la super classe par super superclassMethodName actualParameters Quelques r gles une m thode d instance ne peut pas red finir une m thode de classe et r ciproquement une m thode d instance d une sous classe ayant les m mes signature et type qu une m thode d instance dans la super classe red finit la m thode de la super classe la version de la m thode invoqu e sur une instance de la sous classe type dynamique car liaison dynamique des m thodes d instance est celle de la sous classe une m thode de classe d une sous classe ayant les m mes signature et type qu une m thode de classe dans la super classe masque la m thode de la super classe la version de la m thode invoqu e d pend de si elle est appel e sur la super classe ou sur la sous classe car liaison statique des m thodes de classe une sous classe ne peut pas red finir les m thodes d clar es final de sa super classe une sous classe doit red finir les m thodes d clar es abstract dans la super classe moins que la sous classe soit elle m me d clar e abstract
22. garde bien videmment tout au long de sa vie le type avec lequel il a t cr L op ration de transtypage est purement syntaxique et ne fait qu indiquer au compilateur le point de vue depuis lequel il doit voir l objet Le transtypage vers un sur type est dit ascendant Le transtypage ascendant est implicite Page 46 85 ESIEE AM Poly Java v 3 7 Mai 2010 Le transtypage vers un sous type est dit descendant Un transtypage descendant doit tre explicite Il permet de forcer la compilation mais ne garantit pas n cessairement l absence d erreur d ex cution Un transtypage n est garanti correct que s il respecte la r gle suivante Soient T1 et T2 deux types d finis Soit o un objet de type dynamique T3 Consid rons la d claration T1 obj T2 o Ce transtypage est garanti possible tant la compilation qu l ex cution si et seulement si T3 est un sous type de T2 et T2 un sous type de T1 L op rateur instanceof permet de tester si un objet est d un type dynamique donn ou de tout sous type de ce type donn Il peut donc permettre v rifier la compatibilit des types avant d op rer un transtypage Exemple Supposons d finies public class Shape2D public class Circle extends Shape2D public class Triangle extends Shape2D public class Date Les d clarations suivantes g n reraient une erreur pour incompatibilit de types Shape2D s Shap
23. l utilitaire javadoc pour en constituer un fichier de documentation en HTML La documentation d une classe devrait inclure a minima le nom de la classe sa fonctionnalit et ses grandes caract ristiques son auteur sa version une documentation pour chaque constructeur et chaque m thode La documentation d une m thode devrait inclure a minima le nom de la m thode sa fonctionnalit une description de chaque param tre et de la valeur retourn e les exceptions susceptibles d tre lanc es par cette m thode Page 8 85 ESIEE AM Poly Java v 3 7 Mai 2010 Syntaxe K xy commentaire commentaires Principales balises de commentaires pr d finies author version param return see throws 2 3 2 Commentaires d impl mentation Les commentaires d impl mentation visent expliciter sans paraphraser le code et les choix d impl mentation Le choix des identificateurs et la clart de la programmation devrait permettre de minimiser le nombre de tels commentaires Syntaxe commentaires 7 commentaire commentaire 2 4 Fichier JAVA 2 4 1 Nom et contenu d un fichier java Chaque fichier source java contient une seule classe publique L organisation recommand e est la suivante 1 Les commentaires de d but C est un commentaire de documentation comprenant typiquement l intitul de la classe et un descriptif sommaire de sa fonc
24. longtemps que la valeur d une expression donn e est true L expression est test e apr s chaque ex cution du corps de boucle si bien que le corps de boucle est toujours ex cut au moins fois Syntaxe do statements while expression Exemple do input readInput if Gnput null System out print1 Try again while input null 8 2 2 3 for La boucle for s ex cute aussi longtemps qu une condition s value true Avant que la boucle ne d marre une instruction d initialisation est ex cut e exactement 1 fois La condition est valu e avant chaque ex cution du corps de boucle comme pour une boucle while Une instruction de mise jour des variables est ex cut e apr s chaque ex cution du corps de boucle Syntaxe for Cinitialization condition update statements Exemple for Cint i 0 i lt text sizeQ i System out printin text get 8 2 2 4 foreach Depuis la plate forme 5 0 voir chapitre 16 Java offre une boucle for am lior e pour parcourir les l ments d un tableau ou d une collection se reporter aux sections respectives Syntaxe for each element of the collection process element for TypeOfElements element collectionOfElements process element ESIEE AM Poly Java v 3 7 Mai 2010 Page 37 85 8 3 Instructions d entr e sortie Java offre un nombre consid rable de fonctions et proc
25. optionnelle mais recommand e A d faut il se peut ou aucun cas ne conduise une ex cution Exemple switch day case 1 dayString Monday break case 2 dayString Tuesday break case 3 dayString break case 4 dayString Thursday break Wednesday ESIEE AM Poly Java v 3 7 Mai 2010 Page 35 85 case 5 dayString Friday break case 6 dayString Saturday break case 7 dayString Sunday break default error break 1 Exemple switch winterMonth case 11 numberOfDays 30 break case 12 falls through case 1 numberOfDays 31 break case 2 if GisLeapYearO numberOfDays 29 else numberOfDays 28 break default error break 8 2 2 Instructions de boucle 8 2 2 1 while La boucle while ex cute un bloc d instructions aussi longtemps que la valeur d une expression donn e est true L expression est test e avant chaque ex cution du corps de boucle si bien que le corps de boucle peut tre ex cut 0 fois Syntaxe while expression statements Exemple int i 0 while i lt text sizeQ System out printl text get i Page 36 85 ESIEE AM Poly Java v 3 7 Mai 2010 Exemple while Citer hasNextQ processObject iter nextQ 8 2 2 2 do while La boucle do whi le ex cute un bloc d instructions aussi
26. sentation machine des donn es identique mais ce n est pas le cas pour les types objets La transmission d une chaine de caract res d un tableau a fortiori d une instance quelconque de classe n est pas directe et n cessite des conversions de type Un param tre java de type objet est ainsi transmis au sous programme C sous forme d un pointeur sur une structure de donn es interne la machine virtuelle Java L organisation interne de cette structure est masqu e au programmeur mais celui ci peut n anmoins acc der aux composantes sous jacentes via les fonctions utilitaires offertes par le JNI dans l environnement JNIEnv Type primitif Java Type primitif c t C Description boolean jboolean unsigned 8 bits byte jbyte Signed 8 bits char jchar unsigned 16 bits short jshort Signed 16 bits int jint signed 32 bits long jlong Signed 64 bits float jfloat 32 bits double jdouble 64 bits Par la suite on consid rera de bout en bout le m me exemple 15 2 1 D claration et appel java Exemple de classe java public class MyClass Declaration of an extern instance function native public String getMessage int id String prompt Test procedure public static void main String argv MyClass o new MyClasse System out printin o getMessage 10 Name Load the library 1ibMyRoutines static System loadLibrary 1libMyRoutines Page 82 85 ESIEE AM Poly Java v 3 7 M
27. some input String inputValue JOptionPane showInputDialog Value use method showMessageDialog to display a message JOptionPane showMessageDialog null A message ESIEE AM Poly Java v 3 7 Mai 2010 Page 55 85 11 2 Conteneurs et composants Tout objet graphique est compos de diff rents objets des conteneurs containers et des composants atomiques ces diff rents constituants tant organis s en une hi rarchie d inclusion Principales cat gories de conteneurs et composants les conteneurs de plus haut niveau Pour qu un objet graphique puisse tre affich l cran la hi rarchie de ses constituants doit n cessairement avoir pour racine l un des trois conteneurs suivants gt Frame classe JFrame conteneur le plus g n ral il fournit la fen tre principale dans laquelle les autres composants Swing pourront se dessiner Dialog classe JDialog plus limit qu un Frame il fournit une fen tre de dialogue la classe J0ptionPane permet de cr er des fen tres de dialogue simples et standard la classe JDialog permet de cr er des fen tres de dialogue personnalis es Applet classe JApplet sp cialis pour des interfaces web il fournit une fen tre qui sera affich e par un navigateur web les conteneurs interm diaires notamment gt Panel classe JPanel simplifie le positionnement des objets graphiques atomiques Tout conteneur de haut niveau conti
28. thode est trop longue si elle fait plus d une tache logique Ne pas tout mettre dans une seule classe une classe est trop complexe si elle repr sente plus d une entit logique CHERCHER A FACILITER DES CHANGEMENTS LOCALISES R aliser des changements dans une classe ne devrait avoir qu un minimum d impact sur les autres classes La localisation des changements est l un des buts recherch s d une bonne conception de classe Elle est le produit d un couplage faible et d une coh sion forte 13 2 Architecture d une application interactive le modele MVC L architecture Mod le Vue Contr leur Model View Controller MVC est un mod le d architecture logicielle recommand et largement utilis pour la conception d applications interactives Ce mod le vise minimiser le degr de couplage entre les objets de l application en d couplant structurellement entr es traitements et sorties Le point essentiel consiste s parer les objets relevant de l interface utilisateur des objets m tier afin de pouvoir les faire voluer ind pendamment et les r utiliser MVC organise une application interactive en trois grandes composantes le Mod le la Vue et le Contr leur et d couple leurs responsabilit s respectives Le MODELE encapsule la fonctionnalit et les donn es c ur de l application Il est ind pendant de repr sentations de sortie sp cifiques ou d un comportement d entr e Il a cha
29. 159 Convert primitive type gt String type Double pi new Double 3 14159 String s pi toString Autoboxing unboxing Depuis la plate forme 5 0 voir chapitre 16 les valeurs de type primitif sont en cas de besoin implicitement converties en l objet de la classe enveloppe correspondante autoboxing et r ciproquement unboxing Auparavant la conversion devait tre explicite Page 28 85 ESIEE AM Poly Java v 3 7 Mai 2010 6 OPERATEURS ET EXPRESSIONS Java poss de un nombre consid rable d op rateurs arithm tiques et logiques Les expressions sont constitu es d op randes et d op rateurs Les op randes peuvent tre de diff rentes natures variable constante appel de fonction Dans une expression tous les op rateurs doivent tre explicites Quand plus d un op rateur apparait dans une seule expression alors des r gles de pr c dence sont utilis es pour d terminer l ordre d application S il est n cessaire d alt rer l ordre normal d valuation des parenth ses peuvent tre utilis es A pr c dences gales l expression est valu e de gauche droite Recommandations de style Utiliser les parenth ses pour isoler les sous expressions afin d viter les probl mes de pr c dence d op rateur et rendre le code plus lisible pour tout programmeur Ins rer un espace avant et apr s chaque op rateur autre que le point 6 1 Op rateurs et expressio
30. 58 11 4 2 R aliser un gestionnaire d v nemenmt 59 Page 4 85 ESIEE AM Poly Java v 3 7 Mai 2010 11 5 Affichage fermeture d une fen tre graphique ceccseseeeeseeeseeseeneeeseeeeneeeeeees 60 11 6 Architecture des composants Swing 60 11 7 UE CET 61 12 ANNEXE 2 THREADS 8 0 eee necses es toutes 63 12 1 Cr er un thread par extension de la classe Thread 63 12 2 Cr er un thread par impl mentation de l interface Runnable 64 12 3 Synchronisation et communication entre threads scsssssessesseesseeseeseeeeees 64 12 3 1 Sections critiques et synchronisation ss 64 12 3 2 Communication entre threads ss 65 13 ANNEXE 3 CONCEPTION ET DEVELOPPEMENT EN JAVA 66 13 1 Conseils g n raux pour une bonne conception des classes 66 13 2 Architecture d une application interactive le mod le MVC 67 13 3 Tests unitaires ii rssrrrrssnrrrsnnnessnnnesnnnesanemeeneeesnnensnnensnnnenss 70 ES OR D finitons ss arches eel teen Re MORE Rsk teenth A sent eon RS ha al hy 70 Ee E ss eteccoecanas sauce eiii oa EEEE A ERE rennes nn Tennis Pate 71 13 4 Jaya ET 72 13 5 Design patterns cece cc eesseeeesneeesseeeesneeenseeeseneeseaeeeeaeesesaesesaeesesneussaeeeseneeneneenaes 74 13 5 1 Exemple le mod le Singleton ss 75 13 5 2 Exemple le mod le Decorator neina a a ee EN 75 14 ANNEXE 4 MACHINE VIRTUELLE JAVA JVM 0 csssseseeteeeeeeees 77 15 ANNEXE 5 COMMUNICATION ENTRE
31. Classes standard Syntaxe public class ClassName Exemple Fields Constructors Methods accessor methods mutator methods ER Class RationalNumber Represents a rational number num den author AM version 1 0 Wi public class RationalNumber Page 12 85 FIELDS private int numerator private int denominator private boolean reduced CONSTRUCTORS Construct a rational number initialized to 0 1 public RationalNumber numerator 0 denominator 1 reduced true METHODS ACCESSORS Get the numerator of this rational number public int getNumerator return numerator Get the denominator of this rational number public int getDenominator return denominator Return true iff the numerator denominator form is irreducible x public boolean isReduced return reduced ESIEE AM Poly Java v 3 7 Mai 2010 METHODS MUTATORS Set this rational number to _numerator _denominator public void setNumber int _numerator int _denominator numerator _numerator denominator _denominator reduced false Set this rational number to a irreducible numerator denominator form Wi public void reduce int divisor greatestCommonDivisor numerator denominator numerator numerator divisor denominator denominator divisor reduced true
32. Decorator new SimpleWindow Page 76 85 ESIEE AM Poly Java v 3 7 Mai 2010 14 ANNEXE 4 MACHINE VIRTUELLE JAVA JVM Les objectifs premiers de ce chapitre sont comprendre comment s op re le chargement dynamique des classes en m moire lors de l ex cution d un programme Java comprendre le traitement des champs et blocs static au chargement de la classe Une machine virtuelle Java JVM est un interpr teur de code Java compil bytecode permettant d ex cuter un programme Java sur une machine cible L espace m moire de la JVM comporte plusieurs zones notamment la zone des m thodes contient le code des m thodes et constructeurs ainsi que des informations sur la structure de chaque classe notamment sa table des symboles la pile espace propre chaque thread m morise dynamiquement les contextes d ex cution variables locales notamment des m thodes en cours d ex cution letas contient les objets cr s par new instances de classe et tableaux cf chapitre 4 C est la demande d ex cution d un programme Java qui lance la machine virtuelle Java La JVM r alise alors les grandes tapes suivantes chargement de la classe principale sp cifi e main class et des classes dont elle d pend imm diatement au premier rang desquelles toutes ses sur classes o cr ation des champs static cr ation de la table des m thodes o traitement des champs initia
33. EST public class Test private Direction dir public setDir Direction d dir d public boolean isNorthSouth return dir Direction NORTH dir Direction SOUTH Sous leur forme la plus simple les classes enum sont souvent utilis es sous la forme d une classe interne inner class Exemple public class MyClass private Direction dir private enum Direction NORTH SOUTH EAST WEST public void setNorth dir Direction NORTH Nota il est possible d associer chaque constante num r e une valeur d un type quelconque il est possible d utiliser un type num r dans une instruction switch 3 5 Classes imbriqu es Nested classes Ce concept n est pas vital pour un d butant Une classe peut tre d finie l int rieur d une autre classe On parle alors de classe imbriqu e On en distingue quatre cat gories ESIEE AM Poly Java v 3 7 Mai 2010 Page 17 85 les classes membres d clar es static static nested classes membres statiques de la classe englobante les classes internes inner classes membres non statiques de la classe englobante les classes locales local classes classes d finies l int rieur d une m thode les classes anonymes anonymous classes classes locales sans nom Exemple public class OuterClass public static class StaticNestedClass private class InnerClass
34. Exemples de codes de formatage Champ d affichage sp cifi pour le param tre du type consid r 6d Champ de 6 caract res Champ de 6 caract res avec justification nee gauche Champ de 8 caract res dont 2 droite de la 8 2f virgule 8 3 2 3 Lecture clavier Exemple Scanner input new Scanner System in String sl input nextQ read a string a word String s2 input nextLine read the rest of the line int n input nextIntQ read an integer double r input nextDouble read a double input close 8 3 3 Entr e sortie fichier Op rer sur un fichier consiste 1 cr er un flux appropri aux op rations souhait es 2 lire ou crire dans le fichier 3 fermer le fichier Les solutions suivantes ne s affranchissent pas des erreurs d entr e sortie Pour g rer ce type d erreur se reporter au chapitre Exceptions chapitre 10 8 3 3 1 Ecriture fichier Depuis la plate forme 5 0 Java offre galement une m thode printf permettant des sorties format es comme en C voir classe java util Formatter pour la sp cification des formats Exemple d criture dans un fichier texte ESIEE AM Poly Java v 3 7 Mai 2010 Page 39 85 PrintWriter out new PrintWriter outputFileName for Cint i 0 i lt 10 i out printfC c d t i out close 8 3 3 2 Lecture fichier Exemple de lecture d un fichier texte mot mot Scanner in new Scan
35. IEE AM Poly Java v 3 7 Mai 2010 Page 27 85 Mais certaines classes offrent des m thodes sp cifiques plus ad quates notamment e pour les conversions r el gt entier la m thode Math round realValue permet de convertir un r el en l entier le plus proche la m thode Math floor realValue associ e une conversion en entier fournit le plus grand entier inf rieur ou gal l argument Exemple Cint Math floor 15 7 vaut 15 la m thode Math ceil realValue associ e une conversion en entier fournit le plus petit entier sup rieur ou gal l argument Exemple Cint Math ceil 15 7 vaut 16 e pour les conversions en ou partir de String la m thode toStringQ dont h rite tout objet permet de convertir un objet en String la m thode valueOf primitiveTypeExpression de la classe String renvoie la repr sentation String de la valeur de son argument la m thode value0f string dont dispose toute classe enveloppe renvoie une instance de cette classe enveloppe contenant la valeur repr sent e par l argument de type String Exemples Convert String type gt primitive type double x Double parseDouble 3 14159 Convert String type gt wrapped type Double pi Double valueOf 3 14159 Convert wrapped type gt primitive type int k Integer valueOf 1789 intValue Convert primitive type gt String type String piStr String valueOf 3 14
36. JAVA ET C OUNI seen 79 15 1 Appel d une proc dure GC sinnnen neenennenrenenentesneninnenneistentes 80 UO KE ENT E E EE 80 UR EE 81 15 1 3 Impl mentation Cned ae ur see et nl enseignent 81 15 2 Echange de donn es entre Java et Css 82 15 2 1 D claration et appel java sisi 82 152 2 PLOLOLY EE 83 15 23 Impl mentation Ciryam a nds Orne a i li drabetsss 83 16 ANNEXE 6 PLATES FORMES JAVA nn rrssnsnerrrerennse 84 17 ANNEXE 7 GLOSSAIRE ne Eege 85 ESIEE AM Poly Java v 3 7 Mai 2010 Page 5 85 Page 6 85 ESIEE AM Poly Java v 3 7 Mai 2010 1 LANGAGE ET PROGRAMMATION ORIENTES OBJETS Java est un langage de programmation orient objets Un objet est une repr sentation simplifi e d une entit du monde r el entit concr te ex ma voiture ou non ex la date d aujourd hui Un objet se caract rise par son tat et son comportement Un objet stocke son tat dans des variables appel es champs ou attributs et pr sente son comportement au travers de fonctionnalit s appel es m thodes Exemple d objet maVoiture valeur des attributs Fiat grise 6 100km m thodes d marrer arr ter acc l rer Typiquement l tat est encapsul au c ur de l objet et n est accessible depuis l ext rieur de l objet en consultation ou modification que via les m thodes offertes par cet objet Exemple l objet maVoiture getCouleur setCouleur JOLIEU9P On interagi
37. LE LANGAGE JAVA Petit m mento de syntaxe amp l ments de programmation Albin MORELLE Esiee 2010 Tous mes remerciements mon coll gue Denis Bureau pour ses relectures attentives et suggestions pertinentes ESIEE AM Poly Java v 3 7 Mai 2010 Page 1 85 BIBLIOGRAPHIE ET SITES DE REFERENCE Le pr sent document emprunte aux principales r f rences bibliographiques suivantes 1 2 3 BARNES David J KOLLING Michael Objects First with Java A Practical Introduction using BlueJ 4 ed Prentice Hall Pearson Education 2008 560 p ISBN 0136060862 Ce livre est un manuel d apprentissage de la programmation objet en Java avec l environnement BlueJ Il est destin a des d butants en programmation Il est tr s p dagogique mais ne prend v ritablement toute sa force qu utilis en interactif dans l excellent environnement de d veloppement BlueJ fourni L environnement BlueJ est t l chargeable depuis www blue org GOSLING James amp al The Java Language Specification 3rd ed Addison Wesley 2005 688 p ISBN 0321246780 Ce livre est le manuel de r f rence du langage Java Il est crit par les cr ateurs du langage Il est consultable sous forme lectronique sur java sun com docs books jls CAMPIONE Mary amp al The Java Tutorial A short course on the basics 4 ed Addison Wesley 2006 672 p ISBN 0321334205 Ce livre est un manuel d apprentissage
38. La m thode main affichera false true Pourquoi Le type statique de a est A et son type dynamique B C est donc le m1 de B qui est ex cut e Quant la m thode m2 elle n est pas d finie dans B mais dans sa super classe A B h rite donc normalement de m2 et m2 est ex cut e La derni re instruction System out prinln a m3 a provoquerait une erreur la compilation Pourquoi Parce que le compilateur ne conna t que le type statique i e le type d clar la m thode m3 n tant pas d finie dans la classe A ni dans une de ses super classes le compilateur ne trouve pas la d finition de m3 bien que dans B et g n re une erreur La solution serait le transtypage descendant pr alable de a System out prinin B a m3 a Ce transtypage serait correct car a poss de d ja par cr ation tous les attributs d une instance de B Polymorphisme Un m me appel de m thode peut invoquer des m thodes diff rentes car la liaison est r alis e dynamiquement i e l ex cution et non la compilation l identification du type de l objet associ l appel tant dynamique Exemple de polymorphisme d h ritage public class Shape public void draw System out printin this drawQ public class Circle extends Shape Override public String toString return circle public class Square extends Shape Override public String toString return square Page 48
39. Ss Error Exception mS MyCheckedException RunTimeException e MyUncheckedException Java divise les classes d exception en deux cat gories Les exceptions non contr l es unchecked Ces exceptions concernent les cas impr vus c est a dire les situations ot il ne devrait pas y avoir de d faillance en fonctionnement normal Elles concernent des situations qui pourraient tre raisonnablement vit es exemple un indice de tableau hors limite Ces exceptions indiquent g n ralement une erreur de programme Elles ont normalement vocation conduire un arr t imm diat et d finitif du programme Les exceptions contr l es checked Ces exceptions concernent les cas pr vus c est dire les situations o le programmeur devrait s attendre ce qu une op ration puisse chouer Elles concernent des situations de d faillance qui sont au del du contr le du programmeur exemple un disque devenu plein rendant impossible une criture dans un fichier Ces exceptions ont normalement vocation tre r cup r es pour permettre au programme de se poursuivre normalement La gestion d une exception contr l e impose l utilisation de la clause throws et de l instruction de contr le try catch Les exceptions non contr l es sont les classes RuntimeException Error et leurs sous classes toutes les autres classes et sous classes sont des exceptions contr l es Page 50 85 ESIEE
40. ai 2010 15 2 2 Prototype C Contenu expurg du fichier MyClass h produit par javah DO NOT EDIT THIS FILE it is machine generated Header for class MYClass JNIEXPORT jstring JNICALL Java_MyClass_getMessage JNIEnv jobject jint jstring 15 2 3 Impl mentation C Exemple de fichier MyRoutines c include lt stdio h gt include MyClass h JNIEXPORT jstring JNICALL Java_MyClass_getMessage CINIEnv penv jobject obj jint jid jstring jprompt const char str char buf 128 Get the C string from the java string str penv gt GetStringUTFChars penv jprompt NULL printf d s jid str Don t forget this line penv gt ReleaseStringUTFChars penv jprompt str Assume the user doesn t type more than 127 char scanf s buf return penv gt NewStringUTF penv buf Commentaires Les repr sentations physiques des cha nes de type jstring et de type char ne sont pas identiques Une conversion doit tre r alis e C est le r le des fonctions GetStringUTFChars et NewStringUTF A noter que dans tous les cas la conversion des caract res non codables en ASCII 7 bits lettres accentu es posera probl me La fonction GetStringUTFChars r alisant une allocation m moire dynamique une d sallocation doit tre obligatoirement r alis e avant la fin du sous programme c est le r le de la fonction ReleaseStrin
41. alue actualValue assertEquals errorMessage doubleExpected doubleActual doubleDelta Pour ex cuter le test cr er une instance de cette classe avec en param tre le nom de la m thode de test Exemple new TestMyClass testMethodX JUnit est int gr dans certains outils de d veloppement De tels outils offrent alors des fonctionnalit s qui permettent de cr er facilement des tests 13 4 Java Beans Un Java Bean grain java est d fini par Sun comme un composant r utilisable Java destin tre manipul par un outil de d veloppement graphique visuel Les Java Beans sont des composants Java i e des classes respectant certains crit res afin de pouvoir tre facilement d velopp s assembl s et r utilis s pour cr er des applications sophistiqu es Par exemple la technologie Java Beans est l architecture des composants dans la plate forme Java SE Les obligations que doit respecter un Java Bean sont nombreuses mais l enjeu est d importance disposer de composants Write One Run Anywhere WORA r utilisables Les Java Beans sont des classes publiques concr tes qui ont pour caract ristiques communes de supporter des propri t s les propri t s sont les attributs discrets nomm s d un Java Bean qui peuvent affecter son apparence ou son comportement Les propri t s sont pour les Java Beans l quivalent des champs pour les objets Par exemple un bouton grap
42. ate forme 5 0 voir chapitre 16 Cette version 5 0 introduit une r vision majeure par rapport la pr c dente notamment en mati re de gestion des collections L apparition de types g n riques en est probablement l volution la plus marquante La g n ricit permet de communiquer au compilateur le type des l ments d une collection au moment de la cr ation de l objet et non pas en le fixant a priori dans la d finition de classe Exemple de classe g n rique Defining a generic collection The formal parameter T is the generic type of the elements public class MyCollection lt T gt implements List lt T gt T can be used here as any type Creating a collection of Integers MyCollection lt Integer gt collectionOfIntegers CollectionOfIntegers new MyCollection lt Integer gt Creating a collection of Strings MyCollection lt String gt collectionOfStrings CollectionOfStrings new MyCollection lt String gt Tout comme les d clarations de type peuvent tre g n riques les d clarations de m thodes peuvent tre aussi g n riques c est dire param tris es par un ou plusieurs param tres Exemple de m thode g n rique Defining public static lt T gt void fromArrayToCollection T a Collection lt T gt c for To a c add o Using it String al data1 data2 data3 data4 data5 Collection lt Object gt cl n
43. bjectName fctName actualParams m thode de classe variable ClassName fctName actualParams D claration d un param tre formel formal parameter Sp cification d un param tre effectif actual parameter Param tre d entr e type primitif ou objet parameterType parameterName Param tre de sortie de type primitif Impossible utiliser une fonction ou passer un param tre de type objet Param tre de sortie de type objet parameterType parameterName Param tre d entr e type primitif ou objet Expression Param tre de sortie de type primitif Impossible Param tre de sortie de type objet objectName Les param tres sp cifi s dans la d finition d une m thode sont appel s param tres formels ils doivent tre pr c d s de leur type Les param tres apparaissant dans la forme d appel sont appel s param tres effectifs S il y a plusieurs param tres ils sont s par s par des virgules Tous les param tres de type primitif sont pass s par valeur c est une copie de cet argument qui est transmise la m thode elle ne dispose pas de l original Tous les param tres de type objet sont pass s par r f rence c est une r f rence i e un pointeur qui est transmis la m thode et pas l objet lui m me ESIEE AM Poly Java v 3 7 Mai 2010 Page 31 85 Par d faut les m thodes sont des m thodes d instance elles sont invoqu
44. com docs books tutorial javabeans index html Design patterns Laurent DEBRAUWER Design Patterns Les 23 mod les de conception descriptions et solutions illustr es en UML 2 et Java Editions ENI 2007 329 p ISBN 2746038870 Cette section va au dela du langage Java pour aborder quelques aspects de la conception et du d veloppement de programmes Java 13 1 Conseils g n raux pour une bonne conception des classes RECHERCHER UN COUPLAGE FAIBLE Le couplage d crit l interconnectivit entre les classes Le couplage est faible quand chaque classe est largement ind pendante des autres et communique avec elles via une interface petite et bien d finie l interface d une classe est la partie visible publique de cette classe elle se d finit typiquement par la liste des membres attributs constructeurs m thodes non priv s associ s leurs commentaires de documentation RECHERCHER UNE COHESION FORTE La coh sion d crit l ad quation entre une unit de code et une entit ou t che logique La coh sion est forte quand chaque unit de code m thode classe module est responsable d une entit ou t che tr s bien d finie UTILISER AU MAXIMUM L ENCAPSULATION L encapsulation est une technique de base pour r duire le couplage Elle contribue s parer le quoi et le comment la vue et l impl mentation la d finition et l utilisation Principe de base rendre les attributs priv s et utiliser de
45. ct res et les identificateurs Chaque caract re Unicode est cod sur 16 bits ce qui permet de repr senter de nombreux alphabets grec cyrillique h breu arabe ainsi que les symboles math matiques et techniques Bien qu Unicode soit utilis par certains syst mes d exploitation Windows NT ou Vista par exemple la plupart des syst mes d exploitation utilisent des syst mes de codage 8 bits de sorte que des transcodages sont n cessaires et des probl mes d incompatibilit peuvent survenir l affichage 5 1 Types primitifs Type Description Exemples de litt raux Nombres entiers Types sign s byte octet entier 8 bits 127 128 short entier court 16 bits 32767 32768 int entier 32 bits 2147483647 2147483648 long entier long 64 bits 5123456789L 55L Nombres r els Types sign s float r el simple pr cision 43 889F 341 159E 2F double r el double pr cision 45 63 2 4E107 Autres types Types non sign s char caract re un seul 16 bits 2 u00F6 boolean valeur bool enne false true Un nombre sans point d cimal est interpr t comme un entier de type int mais imm diatement converti en byte short ou long lors de l affection On peut d clarer un litt ral de type long en l affectant du suffixe L Un nombre avec un point d cimal est interpr t comme un r el de type double On peut d clarer un litt ral de type float en l affectant du
46. ctionnalit s qui permet un programme Java fonctionnant sur la machine virtuelle Java JVM d appeler ou d tre appel par un programme crit dans un autre langage typiquement en C C ou assembleur En permettant l interfa age avec des applications ou biblioth ques natives la mise en uvre de JNI accro t l interop rabilit des applications Java mais videmment au d triment de leur portabilit Une bonne architecture de l application devrait donc minimiser le nombre de classes faisant r f rence une m thode native Par la suite on supposera que le fichier Java appelant le sous programme C se nomme MyClass java et que le fichier C impl mentant ce sous programme se nomme MyRoutines c Le d veloppement de l application compl te comporte 6 tapes 1 Ecrire le programme Java et le compiler javac MyClass java 2 Produire le fichier d en t te MyClass h pour le programme C javah MyClass 3 Ecrire le sous programme C et le compiler gcc o MyRoutines c MyRoutines c pedantic W Wall Idir o dir est le r pertoire d installation par le JDK des fichiers d include du JNI Par exemple ces fichiers tant r partis dans deux r pertoires gcc o MyRoutines c MyRoutines c pedantic W Wall I usr lib jdk1 5 0v11 include Une application ou une biblioth que de sous programmes est dite en code natif si elle est d pendante d un environnement h te syst me d exploitation ou jeu d ins
47. dique la machine virtuelle Java o trouver les classes et biblioth ques de classes dont elle a besoin Hi rarchie partielle des paquetages standard java applet awt 10 lang util event Paquetages les plus imm diatement utiles Paquetage Contenu java io Classes relatives aux entr es sorties ae ee Classes fondamentales types basiques classes enveloppes String Java tang StringBuffer classe Math 5 Classes utilitaires diverses collections ArrayList Vector classe java util Random gestion des dates et des heures 2 5 2 Affectation d une classe un paquetage Pour qu une classe appartienne un paquetage il faut d clarer le paquetage d appartenance en t te de fichier source Syntaxe package packageName Page 10 85 ESIEE AM Poly Java v 3 7 Mai 2010 2 5 3 Importation d une classe d un paquetage Pour utiliser une classe d finie dans un paquetage autre que celui de la classe d utilisation cette classe doit tre import e en t te de fichier source Syntaxe import packageName ClassName import packageName forme d conseill e car peu informative Exemples import java util ArrayList import java util Iterator import java io forme d conseill e car peu informative Le paquetage java lang est import automatiquement ESIEE AM Poly Java v 3 7 Mai 2010 Page 11 85 3 CLASSES et INTERFACES 3 1
48. e fixture Wi private MyClass myObject public TestMyClass String name super name Ki Sets up the test fixture setUpO is called before every test case method Initializes the instance variables Wi protected void setUp myObject new MyCTass Tears down the test fixture tearDown is called after every test case method Releases any permanent resources allocated in setUp Cexample closes files Wi protected void tearDown Once the fixture is in place as many Test Cases as necessary can be written Tests the method methodXQ Wi public void testMethodx ESIEE AM Poly Java v 3 7 Mai 2010 Page 71 85 ArgumentType argument ResponseType expectedResponse String errorMessage assertTrueCerrorMessage expectedResponse equals MethodX argument end class TestMyClass JUnit d termine le succ s o l chec d un test via des instructions d assertion Une assertion est simplement une proc dure de comparaison entre une valeur esp r e et une valeur effective et qui g n re un chec en cas de diff rence Les proc dures d assertion disponibles sont d finies dans la classe junit framework Assert Exemples d instructions d assertion assertTrue errorMessage booleanCondition assertFalse errorMessage booleanCondition assertEquals errorMessage expectedV
49. e exception g n r e par l appel d une m thode Quand une exception est g n r e le contr le est transf r du code qui a g n r l exception la clause catch qui a captur l exception La clause catch doit avoir un seul param tre formel Le type de ce param tre doit tre la classe Throwable ou une de ses sous classes Une instruction try peut contenir plusieurs blocs catch Dans ce cas l exception la plus g n rale doit tre trait e en dernier Syntaxe try protect one or more statement here catch ExceptionClass e report and recover from the exception here finally in fine in any case always execute these statements Page 52 85 ESIEE AM Poly Java v 3 7 Mai 2010 Le bloc finally est optionnel mais il permet souvent d viter la duplication de code Exemple partir de la plate forme 5 0 Read a double from the standard input stream Scanner input new Scanner System in double x try x input nextDoubleQ catch InputMismatchException e System err printInC Error Double waited e input closeQ Exemple partir de la plate forme 5 0 Create a copy of a text file Scanner in null PrintWriter out null try in new Scanner new FileCinputFileName out new PrintWriter outputFileName while in hasNext out printin in nextLine catch Exception e System err printInC Error in reading writing fi
50. e sont pas des crit res de qualit suffisants pour un programme L exp rience de la programmation a ainsi conduit tablir des recommandations de style Les respecter n est pas techniquement obligatoire mais contribue am liorer la lisibilit des programmes Ces conventions visent en fait une finalit conomique contribuer produire des programmes plus facilement maintenables pendant toute leur dur e de vie Dans les chapitres suivants les exemples respectent les conventions de style pr conis es par JaVa sun com 2 2 Identificateurs Quelques r gles et recommandations pour nommer les identificateurs Le caract re minuscule majuscule des caract res est discriminant r gle du langage Java Les identificateurs d objets de champs et de m thodes commencent toujours par une minuscule par convention Les identificateurs de classe et d interface commencent toujours par une majuscule par convention Les identificateurs de constantes sont tout en majuscules par convention Les identificateurs de m thode commencent par un verbe recommandation 2 3 Commentaires 2 3 1 Commentaires de documentation Les commentaires de documentation visent d crire la sp cification du code sans consid ration d impl mentation Ils sont destin s des d veloppeurs et utilisateurs qui n auraient pas n cessairement les codes sources sous la main Ces commentaires peuvent tre automatiquement extraits par
51. e syntaxe d utilisation d un constructeur d une classe de nom ClassName ClassName object new ClassName actualParameters Une m me classe peut comporter plusieurs constructeurs sous condition qu ils n aient pas les m mes param tres Dans ce cas pour viter de la duplication de code un constructeur peut en appeler un autre avec la syntaxe this actualParameters Exemple public class Point private int x y public Point int x int y A first constructor this x x this y y public Point A second constructor this 0 0 If A noter que cette d finition adopt e par Java ne prend pas en consid ration le type de la m thode En ce sens la signature correspond ce qui est parfois appel par ailleurs profil de la m thode Page 32 85 ESIEE AM Poly Java v 3 7 Mai 2010 7 3 M thode main La m thode main comme en C ou C est le point d entr e d une application au lancement de l ex cution Syntaxe public static void main String args L argument args capte les ventuels arguments de la ligne de commande le premier argument de la ligne de commande tant stock dans args 0 et non dans args 1 comme en C C Exemple Consid rons une application dont la classe principale celle contenant la m thode main s appelle Game Supposons que Il application d pende de deux param tres dont les valeurs doivent tre fo
52. e2D new DateQ erreur de compilation Circle c new Shape2DQ erreur de compilation Circle c Circle new Shape2D erreur d ex cution Triangle t new Triangle Circle c Circle t erreur d ex cution Les d clarations suivantes sont saines Shape2D s new Circle Circle c Circle s Shape2D s if obj instanceof Shape2D s Shaped2D obj 9 4 2 Liaison statique dynamique Consid rons l invocation o m o o est un objet de type statique T et de type dynamique T et m un message attribut ou m thode envoy o Si le message m ex cut est celui dont le code est accessible depuis la classe T alors la liaison de l objet au message sera dite statique liaison la compilation sinon elle sera dite dynamique liaison l ex cution En java la liaison d un objet avec ses variables d instance est statique la liaison d un objet avec ses m thodes est dynamique sauf si m thode static ou final Exemple ESIEE AM Poly Java v 3 7 Mai 2010 Page 47 85 9 5 public class A public boolean m1 A a return true public boolean m2 A a return true public class B extends A public boolean m1 A ai return false public boolean m3 A a return false public static void main String args A a new BQ System out prinln a m1 a System out prinln a m2 a System out prinln a m3 a probl me
53. eneur poss de un gestionnaire de mise en page par d faut S il ne convient pas on peut le remplacer Les composants peuvent solliciter une taille et un alignement donn s mais in fine c est le gestionnaires de mise en page du conteneur qui conserve la d cision finale Il existe 6 gestionnaires de mise en page BorderLayout gestionnaire de mise en page par d faut pour tout ContentPane d finit 5 zones de placement NORTH SOUTH EAST WEST CENTER FlowLayout gestionnaire de mise en page par d faut pour tout JPanel positionne simplement les composants de gauche droite passant une nouvelle ligne si n cessaire BoxLayout gestionnaire de mise en page tr s flexible positionne les composants sur une seule ligne ou colonne en respectant les attentes de composants en mati re de taille maximale et d alignement GridLayout gestionnaire de mise en page tr s simple cr e un ensemble de composants de m me taille et les affiche dans le nombre de lignes et de colonnes sp cifi GridBagLayout gestionnaire de mise en page le plus sophistiqu et le plus flexible aligne les composants en les pla ant dans une grille de cellules permettant certains de s tendre sur plusieurs cellules les largeurs des rang es et les hauteurs des colonnes respectivement peuvent tre diff rentes ESIEE AM Poly Java v 3 7 Mai 2010 Page 57 85 CardLayout gestionnaire de mise en page pour usage
54. ent un conteneur interm diaire sp cial appel ContentPane C est le conteneur interm diaire principal Il contient typiquement un ou plusieurs panels les composants atomiques par exemple gt gt gt Button classe JButton Label classe JLabel Text field classe JTextField Sauf pour les conteneurs de plus haut niveau tous les composants conteneur interm diaire ou composant atomique qui commencent par J h ritent de la classe JComponent Pour ajouter un objet un conteneur on utilise une m thode add Cette m thode prend en g n ral un deuxi me argument qui sp cifie la mise en page Exemple import javax swing frame pane button label new JFrame new JPanel new JButton new JLabel pane add button pane add label frame getContentPane add pane BorderLayout CENTER frame packO sizes at or above preferred sizes Page 56 85 ESIEE AM Poly Java v 3 7 Mai 2010 frame setVisible true l objet frame ainsi cr a pour hi rarchie JFrame ContentPane JPanel m JButton JLabel Exemple import javax swing JApplet public class AppletExample extends JApplet public void init JPanel pane new JPanelQ pane add new JLabel Hello World this setContentPane pane 11 3 Gestion de la mise en page La mise en page layout consiste fixer la taille et la position des composants Tout cont
55. er Quand une classe impl mente une interface elle s engage se conformer cette interface Une classe peut impl menter plusieurs interfaces ESIEE AM Poly Java v 3 7 Mai 2010 Page 15 85 Une classe d finit un type et son impl mentation une interface d finit un type sans son impl mentation 3 3 1 Interface Syntaxe public interface InterfaceName constantAttributes abstractMethods Exemple public interface Measurable double size return 1 0 1 if this is lt or gt than x int isLargerThan Measurable x 3 3 2 Classe implantant une interface Syntaxe public class ClassName implements InterfaceNamel InterfaceName2 Exemple public class Square implements Measurable private double width public Square double _width width _width public double size return width width public int isLargerThan Measurable x if this sizeQ lt x sizeQ return 1 if this sizeQ gt x sizeQ return 1 return 0 3 4 Enum ration Une classe enum permet de repr senter un ensemble de constantes nomm es dont le type est la classe elle m me Ces classes contribuent accro tre la lisibilit des programmes Syntaxe Page 16 85 ESIEE AM Poly Java v 3 7 Mai 2010 public enum EnumName List of named constants Possibility of other fields and methods Exemple public enum Direction NORTH SOUTH EAST W
56. erne Sens saccades 25 5 3 LCE DE 27 6 OPERATEURS ET EXPRESSIONS ments 29 6 1 Op rateurs et expressions arith M tiques c cceecceeeceeeeeseeeeeeeeeeeneeeeeeeesneeees 29 6 2 Op rateurs et expressions bool ennes SEENEN EEEEREEEREEER NEEN EEEE REENEN 30 6 3 Op rateurs relationnels sens 30 ESIEE AM Poly Java v 3 7 Mai 2010 Page 3 85 T METHODES eee eege 31 7 1 D finition et appel d une m thode ordinaire 31 7 2 Le E ON Te 32 7 3 Methode POS eege eeh Eege 33 8 INSTRUCTIONS a een e tn emane aaea iae e on ia aaeeea hii 34 8 1 Instruction d atteciation ergeet hehe en ise etn e 34 8 2 E OTTEN Eu re EE 34 8 2 1 Instructions de s lecton sirisser iereorrerissdierdeniineis asine res iras esbddeteinoi ias EEren 34 8 222 OR a TOR E EM D10 Ced IAE EE S E EAE SE A A T een tres 36 8 3 Instructions d entr e sortie cccccseceeeessseeceeenssceesenssceeenseseeeesesseeeessseeeeeeseseees 38 GE Netto ee ee EE A IAE EEE 38 8 3 2 Entr e sSortie E EE 38 8 333 Entree sorie LIGIER 2228 dent nn eege ent rire nee nie scies svete 39 8 3 4 Lecture d une cha ne de caract res format e 0 ccccccccesccccceesssccecesesseeeceesssseecesssseeees 40 H HERITAGE ANNE N NNENEN ENNEN rer man ENNEN rar NEEN NENNEN agen 42 9 1 Notion NC E 42 9 2 Qu h rite une SOUS CIASSE csseceessseeeeessseeeeeensseeeensneneeseesseeeessseeeeesssseeeeeneaes 43 9 3 Red finir une MEthOde ccccccsscecc
57. es interfaces Mod les offertes par les composants Swing Component Model Interface Se Component Model Interface ae JButton ButtonModel GUI JTabbedPane SingleSelectionModel GUI JToggleButton ButtonModel GUI data JList ListModel Data JCheckBox ButtonModel GUI data JList ListSelectionModel GUI JRadioButton ButtonModel GUI data JTable TableModel Data JMenu ButtonModel GUI JTable TableColumnModel GUI JMenultem ButtonModel GUI JTree TreeModel Data JCheckBoxMenultem ButtonModel GUI data JTree TreeSelectionModel GUI JRadioButtonMenultem ButtonModel GUI data JEditorPane Document Data JComboBox ComboBoxModel Data JTextPane Document Data JProgressBar BoundedRangeModel GUl data JTextArea Document Data JScrollBar BoundedRangeModel GUl data JTextField Document Data JSlider BoundedRangeModel GUI data JPasswordField Document Data Les interfaces Mod les fournies par Swing rel vent de deux grandes cat gories les types Etat de l interface graphique GUI qui d finissent le statut visuel des commandes de l interface graphique et les types Donn es d application Data qui repr sentent des donn es quantifiables ayant sens pour l application Certains mod les rel vent de types partag s GUI data Il est recommand d utiliser la cat gorie Donn es d application Data des mod les de Swing car ils renforcent grandement l adaptabilit et la modularit des applications sur le long terme 11 7 Applets
58. essseceeesssseeeeenssceeeensseeeseesssceeeesnseneeseesseeeeesseneeeens 43 9 4 Type statique dynamique Liaison statique dynamique 46 9 4 1 Type statique dynamique Transtypage sseeecsssecseeeeeeeaeeees 46 9 4 2 Liaison statique dynamique ss 47 9 5 POlyMOrPhISME nn nn srrrrsnerrssnrnannmenannmannneasnneesanneesneenaneeesnemesnrensnnensnne nes 48 9 6 Classes et m thodes particuli res es 49 9 7 INTERFACES ed nn EE AE EC 49 107 EXCEPTIONS K ra raa te anaa eaa aa Ara A a aoaea EEEREN 50 10 1 Exceptions contr l es et non contr l es 50 10 2 Classes d exception standard nnenns 51 10 2 l La ugeet dee E EE 51 10 2 2 La hi rarchie EXCEPTION ege ANEN ni ees 51 10 2 3 La hi rarchie Rupnfimetvcepfon ss 51 10 3 Lancement d une exception nee 51 10 4 Capture d une exception ennnnennnnnnnnnnnnnnnnnne 52 TOAST ele EE 52 10 42 Instrucuon My CAC steels iid lee 52 10 5 D finir une nouvelle classe d exception 54 11 ANNEXE 1 PROGRAMMATION GRAPHIQUE cccccssssseeseseees 55 NENT WE 55 11 2 Conteneurs et composants cecceeeceeeeseeeeeeeseeesceeseneeneeeseeeseeeseneseeesseassessnenseeeanees 56 11 3 Gestion de la mise en page neennnnnennenenenennens 57 11 4 Gestion des E EE saine iraa daba ada Vanai nasaia edadia 58 11 4 1 Notion d EVEneMent 5 ccccccecssssesecsessacecaovasetecdssvacaaccsesescaceedecaacesassasuacsavaasdacaceseneeneas
59. ew ArrayList lt String gt fromArrayToCollection al c1 ESIEE AM Poly Java v 3 7 Mai 2010 Page 25 85 Nota Il est signaler que les tableaux et les g n riques ne font pas encore bon m nage Exemple Vector lt Integer gt sheets new Vector lt Integer gt NBOFSHEETS produit l erreur classique Generic array creation Dans cet exemple une solution pourrait consister a passer par une classe interm diaire simplement d finie par class VectorOfIntegers extends Vector lt Integer gt Le type est appel type joker wildcard type Il permet de repr senter tout type Exemple public void printAll Collection lt gt c for Object o c System out printin o Il est possible de borner le type joker Un caract re joker avec une borne sup rieure est sp cifi lt extends Type gt et repr sente tous les sous types de Type Un caract re joker avec une borne inf rieure est sp cifi lt super Type gt et repr sente tous les types qui sont des super types de Type 5 2 5 2 Exemple de collection ArrayList Un objet de type ArrayList lt E gt est une collection de taille variable d l ments de type E Chaque l ment est rep r par son indice qui permet un acc s direct l l ment Une liste tableau supporte les principales fonctionnalit s suivantes ajout d un l ment en fin de tableau m thode add E acc s un l ment d indice donn m
60. gUTFChars ESIEE AM Poly Java v 3 7 Mai 2010 Page 83 85 16 ANNEXE 6 PLATES FORMES JAVA R f rences Java Platform Standard Edition 6 API Specification java sun com javase 6 docs api New features and Enhancements J2SE 5 0 java sun com j2se 1 5 0 docs relnotes features html Java Platform Standard Edition java sun com javase Java Platform Enterprise Edition java sun com javaee Java Platform Micro Edition java sun com javame JDK Tools and Utilities java sun com javase 6 docs technotes tools Sun Microsystems fournit trois plates formes Java permettant le d veloppement et l ex cution de programmes Java Java SE le standard de base Java EE et Java ME A noter que ces noms sont ceux employ s pour les versions sorties depuis 2006 ant rieurement ces plates formes taient nomm es respectivement J2SE J2EE et J2ME Java Platform Standard Edition Java SE Cette plate forme est le framework Java de base permettant de d velopper ou et ex cuter des programmes Java La derni re version nomm e J2SE est la version 5 0 et porte le nom J2SE 5 0 il est souligner que cette version apportait une mise jour majeure par rapport la pr c dente La version actuelle la plus r cente date de d cembre 2006 c est la version 6 et elle porte le nom Java SE 6 La version 7 Java SE 7 est annonc e comme nouvelle mise jour majeure mais mi 2010 est toujours attendue La p
61. hie d h ritage Exemple de hi rarchie d h ritage Astre Etoile Plan te SC D Exoplan te Plan teSolaire P gaside Chtonienne Tellurique Habitable Le constructeur d une sous classe doit toujours invoquer le constructeur de la super classe en premi re instruction d faut Java essaiera d ins rer un appel automatique La forme d appel est la suivante super actualParameters Page 42 85 ESIEE AM Poly Java v 3 7 Mai 2010 Toute classe sans super classe explicite a Object comme super classe Comme pour la hi rarchie de classes les types forment une hi rarchie de types Le type d fini par la d finition d une sous classe est un sous type du type d fini par la super classe Exemple Etoile est un sous type du type Astre Une variable peut contenir un objet du type d clar de la variable ou un objet de tout sous type de ce type d clar Exemple Astre al new Astre correct Astre a2 new Etoile correct transtypage ascendant Astre a3 new Planete correct transtypage ascendant Etoile el new Astre erreur Etoile e3 Etoile a2 correct Cun transtypage descendant doit tre explicite Un objet d un sous type peut tre utilis partout o un objet d un super type est attendu Ceci s appelle la substitution Java ne permet pas l h ritage multiple une sous classe ne peut h riter directement que d une seule s
62. hique pourrait avoir une propri t nomm e label qui repr senterait le texte affich dans le bouton Page 72 85 ESIEE AM Poly Java v 3 7 Mai 2010 Les m thodes d acc s aux propri t s doivent respecter des conventions de nommage particuli res par exemple pour les propri t s simples il en existe d autres li es contraintes index es Lt PropertyType getPropertyName simple getter void setPropertyName PropertyType simple setter pour les propri t s bool ennes on utilise typiquement is au lieu de get communiquer entre eux par v nements en pratique on utilise la technique Swing des listeners voir section 11 4 supporter l introspection l ex cution et dans l environnement de d veloppement on doit tre capable de d terminer et d analyser les propri t s les v nements et les m thodes que supporte un Java Bean A noter que cette propri t d introspection est d j pr sente dans les objets Java puisqu un objet peut tre analys grace aux classes Class Method Field supporter la personnalisation customization les outils de d veloppement doivent permettre de modifier l apparence et le comportement d un Java Bean en phase de conception supporter la persistance la persistance d un objet est la capacit de le sauvegarder sur un support de stockage et de le restaurer l identique afin que le programme puis
63. hode main affichera the normal method in MotherClass the normal method in MotherClass the hide method in DaugterClass the hide method in MotherClass the override method in DaugterClass the override method in DaugterClass 9 4 Type statique dynamique Liaison statique dynamique Cette section reprend et formalise quelques uns des importants concepts introduits dans les sections pr c dentes 9 4 1 Type statique dynamique Transtypage Le type statique d un objet est le type sp cifi par sa d claration C est le type d clar C est le type la compilation Le type dynamique d un objet est le type i e la classe d appartenance de l objet instanci C est le type constat C est le type effectif l ex cution Le type dynamique d un objet est toujours soit son type statique soit un sous type de son type statique sauf exceptions dues aux transtypages Exemple Soient une classe et une classe B sous classe de Consid rons le code suivant Aa if myClass booleanRandom a new AQ else a new BQ transtypage ascendant implicite Le type statique de a est A le type dynamique de a sera A ou B mais ne pourra tre constat qu apr s que la condition aura t valu e Le transtypage casting appliqu a une r f rence n est que la possibilit d avoir une vue sp cifique de l objet point Il ne change en rien le type de l objet sous jacent qui
64. ion empty key received ESIEE AM Poly Java v 3 7 Mai 2010 Page 51 85 Exemple dans un constructeur if this name lengthQO 0 throw new IllegalStateException name must be provided object creation aborted Exemple L op ration remove C de l interface Iterator est sp cifi e optionnelle c est dire que son impl mentation pourrait tre dans ce cas public void removed throw new UnsupportedOperationException 10 4 Capture d une exception La capture d une exception n est obligatoire que pour les exceptions que l on veut contr ler Dans le cas des exceptions contr l es le compilateur renforce ses contr les la fois dans la m thode qui lance une telle exception et dans l appelant de cette m thode 10 4 1 Clause throws Une clause throws est une d claration ajout e l en t te d une m thode susceptible de lever une exception contr l e Elle d clare les exceptions contr l es prendre en compte dans le cadre de cette m thode Ceci est n cessaire pour que le compilateur puisse savoir quelles exceptions contr ler Par convention les exceptions non contr l es ne devraient pas tre incluses dans une clause throws Syntaxe throws ExceptionClass1 ExceptionClass2 Exemple public void saveToFile String filename throws IOException 10 4 2 Instruction try catch L instruction try catch permet de capturer un
65. ionPerformed ActionEvent e Process the events public class View extends JPanel implements Observer private Model model Declare here the JPanel components public View Model m ActionListener listener model m makeContentPane listener d public void update Observable o Object arg Automatically called when observer is notified Update the view public void makeContentPane ActionListener listener Create and initialize the JPanel components and when need be attach them the event listener Define the layout public class Model extends Observable Wherever the value of an attribute interesting the View is changed insert these two statements setChanged notifyObservers or notifyObservers arg Chercher d coupler les traitements des entr es sorties est classique en programmation Dans cet esprit on peut noter en particulier que le mod le MVC a une certaine similitude avec la classique architecture trois tiers three tiers des syst mes distribu s Une architecture trois tiers est une architecture logicielle client serveur dans laquelle l interface utilisateur la logique de traitement et les donn es sont trois modules ind pendants l interface utilisateur est stock e dans le client le gros de la logique de l application est stock dans le ou les serveurs d application et les donn es sont stock es dans un serveur de base de donn es Exemp
66. ions suivantes ne s affranchissent pas des erreurs de saisie Pour g rer ce type d erreur se reporter au chapitre Exceptions chapitre 10 8 3 2 1 Affichage cran Syntaxe d un affichage cran en mode texte System out print string System out printIin string System out print primitiveTypeExpression System out printIn primitiveTypeExpression 8 3 2 2 Affichage format Depuis la plate forme 5 0 Java offre galement une m thode printf permettant des sorties format es comme en C voir classe java util Formatter pour la sp cification des formats Exemples System out printIin count count System out printfC s 5d n user total Fonctionnement du printf et codes de formatage Page 38 85 ESIEE AM Poly Java v 3 7 Mai 2010 Un printf r clame une chaine de caract res en premier parametre Cette chaine peut tre suivie de n variables n 0 C est cette cha ne qui peut contenir des codes de formatage qui est imprim e Un code de formatage commence par le caract re A chaque fois qu un code de formatage est rencontr printf imprime la variable suivante dans la liste de ses param tres Principaux codes de formatage Commande l affichage d une valeur de type C Caract re d Entier Ze R el en notation avec exposant F R el S Chaine de caract res Le code de formatage peut inclure une sp cification de format du champ d affichage
67. ions utilisateurs varient selon les types de client L utilisateur interagit avec le syst me uniquement au travers des contr leurs L ensemble Vue Contr leur compose l interface utilisateur Mod le Interrogation d tat Changement d tat l l l l Sek l Notification de changement l l Requ te utilisateur Contr leur S lection de vue Invocation de m thodes Ev nements En pratique ce sch ma de principe laisse place une grande vari t d impl mentations possibles Une des difficult s pour une impl mentation id ale en Java r side notamment dans le fait que les composants graphiques Swing fusionnent les parties Vues et Contr leur cf section 11 6 Pour les petits programmes tout particuli rement la Vue et le Contr leur sont souvent combin s mais dans tous les cas le Mod le doit tre s par Exemple d impl mentation d une architecture MVC import java util Observable import java util Observer import javax swing JApplet import javax swing JPanel import java awt event ActionListener import java awt event ActionEvent public class Controller extends JApplet implements ActionListener private View view private Model model public void initQ model new Model view new View model this model addObserver view this setContentPane view Page 68 85 ESIEE AM Poly Java v 3 7 Mai 2010 public void act
68. late forme Java SE d livre deux produits logiciels principaux Java SE Runtime Environment ou plus commun ment JRE qui fournit les librairies la machine java virtuelle et d autres composantes n cessaires pour ex cuter des programmes Java Java SE Development Kit ou plus commun ment JDK qui inclut le JRE plus des outils de d veloppement tels que compilateur et d bogueur n cessaires ou utiles pour d velopper des programmes Java A noter que le terme JDK bien que tr s populaire est devenu impr cis car d autres plates formes Java Java EE par exemple comportent elles aussi leur propre kit de d veloppement Java Platform Enterprise Edition Java EE Cette plate forme est un framework Java plus particuli rement destin aux applications d entreprises Elle offre un cadre standard pour d velopper des applications distribu es Java Platform Micro Edition Java ME Cette plate forme est un framework Java sp cialis dans les applications mobiles Des plates formes Java compatibles avec J2ME sont embarqu es dans de nombreux t l phones mobiles et PDA De fa on plus sp cifique on pourrait aussi citer les plateformes Java Card qui fournit un environnement pour le d veloppement d applications sur cartes puce et JavaFX pour cr er des Rich Internet Applications Page 84 85 ESIEE AM Poly Java v 3 7 Mai 2010 17 ANNEXE 7 GLOSSAIRE On trouve facilement sur le web d excellentes d finition
69. le e finally if Gin null in closeQ if Cout null out close Exemple partir de la plate forme 5 0 Read and print a text file of doubles Scanner in null Try in new Scanner new FileCinputFileName whileCin hasNextQ System out printIn Double parseDouble in nextO catch FileNotFoundException e System err println Unable to open the input file e catch NumberFormatException e System err println A token is not a double e catch Exception e System err println Problem in reading the file e finally if Cin null try in close catch Exception e System err printInC Error in closing the file ESIEE AM Poly Java v 3 7 Mai 2010 Page 53 85 10 5 D finir une nouvelle classe d exception Une des principales raisons conduisant la d finition d une nouvelle classe d exception est le besoin d inclure des informations compl mentaires dans l objet exception afin de permettre le diagnostic et la r cup ration de l erreur Toute nouvelle classe d exception sera d finie comme sous classe d une classe d exception existante de la hi rarchie Exception Exemple public class WrongValueException extends Exception private String key public WrongValueException String key this key key public String getKey return key public String toStringO ret
70. le Pour des applications web professionnelles reposant sur une solution Java EE voir chapitre 16 le Mod le est assur par des EJB et ou des JavaBeans le Contr leur est assur par des servlets et la Vue par des JSP glossaire en chapitre 17 ESIEE AM Poly Java v 3 7 Mai 2010 Page 69 85 13 3 Tests unitaires 13 3 1 D finitions Le test est une activit qui consiste d terminer si un segment de code m thode classe ou programme produit bien le r sultat attendu On d finit classiquement trois niveaux de tests qui sont mis en ceuvre successivement Le fest unitaire unit testing il s agit de tester chaque composante individuelle m thode classe de l application le test d int gration integration testing il s agit de tester des groupes de classes en interrelations puis toute l application dans son ensemble Les tests appliqu s suivent g n ralement un plan de test i e une approche syst matique et m thodique le test syst me system testing il s agit de tester l application int gr e dans son environnement d utilisation complet Ces tests entrent dans la cat gorie des tests bo tes noires et en tant que tels ne devraient pas n cessiter de connaissance de la conception interne du code ou de sa logique Les consid rations suivantes se limiteront essentiellement aux tests unitaires Un cas de test est un ensemble de conditions ou variables partir desquelles un
71. lement GoF On distingue habituellement 3 grandes familles de mod les de conception L expression design pattern est souvent traduite aussi par patron de conception Erich GAMMA Richard HELM Ralph JOHNSON John VLISSIDES Design Patterns Elements of Reusable Object Oriented Software Addison Wesley 1995 416 p ISBN 0201633612 Page 74 85 ESIEE AM Poly Java v 3 7 Mai 2010 Les mod les de construction ont pour but d organiser la cr ation d objets de fa on gagner en abstraction Exemple pr sent ci apr s le mod le Singleton Les mod les de structuration facilitent l organisation de la hi rarchie des classes et de leurs relations Exemple pr sent ci apr s le mod le Decorator Les mod les de comportement proposent des solutions pour organiser les interactions et pour r partir les traitements entre les objets Ils tentent de r partir les responsabilit s entre chaque classe Exemple le mod le Chain of Responsibility permet de cr er une cha ne d objets tels que si l un d eux ne peut pas r pondre une requ te il puisse la transmettre son successeur jusqu ce que l un d entre eux y r ponde 13 5 1 Exemple le mod le Singleton Le mod le de conception Singleton permet d assurer qu une classe ne poss dera qu une instance au plus et d offrir une m thode unique retournant cette instance Exemple d impl mentation cas o toutes les informations n ces
72. lisation et blocs ex cution static ex cution de la m thode main de la classe principale Durant l ex cution d un code Java les classes leur bytecode sont charg es dans la JVM au fur et mesure des besoins Dans une hi rarchie d h ritage le chargement des classes est op r par ordre hi rarchique descendant i e de la super classe racine vers la classe courante Exemple public class ClassA static System out printin Start loading ClassA public static final int C private static int n 100 static C 29979 static System out printIin C System out printin n n public ClassAQ System out printin Start ClassAQ n n l System out printInC End ClassAQ public int getN return n ESIEE AM Poly Java v 3 7 Mai 2010 Page 77 85 static System out printin End loading ClassA end ClassA public class ClassB extends ClassA static System out printin Start loading ClassB private int x 5 public ClassBQ JI System out printInC Start ClassBQ xX x getN System out printIn x System out printInC End ClassBQ static System out printin End loading ClassB end ClassB public class Classen static System out printin Start loading Class0 private static int y initYO private static int initYQ System out printIn Init y return 256 public static void main Stri
73. lit d ajouter des barres de d filement Cr ons un d corateur qui puisse ajouter dynamiquement cette fonctionnalit a des objets Window existants ESIEE AM Poly Java v 3 7 Mai 2010 Page 75 85 An interface common to the decorator and the decorated public interface Window public void draw The original class the instance of which can be decorated public class SimpleWindow implements Window public void drawQ The abstract decorator public abstract class WindowDecorator implements Window protected Window decoratedWindow public WindowDecorator Window decoratedWindow this decoratedWindow decoratedWindow A first concrete decorator public class VerticalScrollBarDecorator extends WindowDecorator public VerticalScrollBarDecorator Window decoratedWindow super decoratedwindow public void draw drawVerticalScroll1Bar decoratedWindow draw Q public void drawVerticalScrollBar second concrete decorator public class HorizontalScrollBarDecorator extends WindowDecorator public HorizontalScrollBarDecorator Window decoratedWindow super decoratedwindow public void draw drawHorizontalScrollBar decoratedWindow draw Q public void drawHorizontalScrol1Bar Example creation of a fully decorated Window instance Window decoratedWindow new HorizontalScrollBarDecorator new VerticalScrollBar
74. long Short short Exemples convert primitive type gt wrapper type Integer k new Integer 456 convert wrapper type gt primitive type double x k doubleValueC Les classes enveloppes sont utiles quand une m thode n accepte pas les types simples mais requiert des objets Toutefois depuis la plate forme 5 0 voir chapitre 16 les valeurs de type primitif sont en cas de besoin implicitement converties en l objet de la classe enveloppe correspondante autoboxing et r ciproquement unboxing Auparavant la conversion devait tre explicite Les objets de telles classes sont immuables immutable c est dire non modifiables une fois cr s En cons quence une m thode ne peut pas avoir de param tres de sortie de tels types Les classes enveloppes pr sentent surtout int r t d offrir des m thodes de conversion type primitif String ainsi que des utilitaires pour des donn es de type primitif Page 22 85 ESIEE AM Poly Java v 3 7 Mai 2010 Exemple Convert String type gt primitive type double x Double parseDouble 3 14159 5 2 2 Cha ne de caract res non modifiable String Bien que les cha nes de caract res de type String soient des objets il n est pas n cessaire d avoir recours l op rateur new pour les cr er Les caract res d une cha ne de caract res chaine sont indic s de 0 chaine length 1 Une cha ne de caract res litt
75. n Exemple intl t 150 300 40 500 System out printInct 0O t 3 150 500 String JIT s Mr Mrs Ms row 0 Smith Jones row 1 Ek System out print s 0 2 s 1 1 Ms Jones La classe java util Arrays offre diverses m thodes utilitaires applicables a des tableaux comparaison tri Depuis la plate forme 5 0 voir chapitre 16 Java offre une boucle for simplifi e pour parcourir les l ments d un tableau Exemple for each element of my array of doubles print this element for double e myArrayOfDoubles System out printIn e Page 24 85 ESIEE AM Poly Java v 3 7 Mai 2010 5 2 5 Collection Une collection est un objet repr sentant un groupe d objets Une collection est un agr gat qui regroupe des l ments multiples en une seule entit Aucune hypoth se n est faite a priori sur le type des l ments ni sur l ordre des l ments ni sur la possibilit d l ments dupliqu s Plus formellement en Java une collection d l ments de type E est une classe qui impl mente Vinterface Collection lt E gt Le paquetage standard java util offre une vari t de collections collections framework qui r pondent aux besoins les plus fr quents par exemple ArrayList lt E gt Vector lt E gt LinkedList lt E gt Stack lt E gt Hashtable lt K V gt 5 2 5 1 G n ricit Cette notion n existe en Java que depuis la pl
76. ner new FileCinputFileName String s while Cin hasNextQ s in next read a string a word System out printin s in closeQ 8 3 3 3 Contextes particuliers Cas1 Ouverture en lecture d un fichier texte stock dans le fichier jar ex cut import java io InputStream import java util Scanner ClassLoader cl ClassLoader getSystemClassLoader InputStream is cl getResourceAsStream inputFi leName Scanner in new Scanner is Cas2 Ouverture en lecture d un fichier texte distant identifi par une URL import java net URL import java util Scanner URL url new URLC http ww esiee fr inputFileName Scanner in new Scanner url openStream Nota Solution non applicable depuis une applet En outre bien s assurer que toutes les conditions d accessibilit au fichier sont lev es pas d interdiction par le pare feu local notamment Cas3 Ouverture d une nouvelle page html depuis une applet de m me r pertoire import java net URL import javax swing JApplet URL url new URL getDocumentBase myFile html getAppletContext showDocument url _blank repaint 8 3 4 Lecture d une cha ne de caract res format e Il est fr quent d avoir lire une cha ne de caract res dont on conna t le format quel que soit le flux d entr e terminal ou fichier Depuis la plate forme 5 0 la classe Scanner du paquetage java util offre des fonctionnalit s tr s pratiq
77. ng args System out printIin Start main Class0 ClassB b new ClassBQ System out printInC End main Class0 static System out println End loading Class0 end ClassO Apr s compilation de ces trois classes l ex cution de la commande java ClassO affichera commentaires ajout s en marge Start loading ClassO Init Y End loading ClassO Start main Class Start loading ClassA Sur classes de ClassB d abord C 29979 n 100 End loading ClassA Start loading ClassB puis enfin ClassB End loading ClassB Start ClassA Car super d abord End ClassA Start ClassB 106 100 1 ClassAQ 5 ClassB End ClassBO End main ClassO Page 78 85 ESIEE AM Poly Java v 3 7 Mai 2010 15 ANNEXE 5 COMMUNICATION ENTRE JAVA ET C JNI R f rences The Java Native Interface Programmer s Guide and Specification java sun com docs books jni Tutoriel java sun com docs books jni html jniTOC html Java Native Interface Specification v1 5 java sun com j2se 1 5 0 docs guide jni spec jniTOC html javah C Header and Stub File Generator java sun com javase 6 docs technotes tools windows javah html On se pose le probl me d appeler un sous programme C depuis une m thode Java dans un environnement Unix La solution met en uvre l interface de programmation JNI Java Native Interface offert par la plate forme Java JNI est un ensemble de fon
78. ns arithm tiques Quelques op rateurs arithm tiques binaires Op rateur Fonction Champ d application division r elle R els division enti re Entiers modulo reste de la division enti re i Entiers Nota 1 En Java comme dans la plupart des langages de programmation A B est toujours du signe de A alors qu en math matiques le reste de la division euclidienne est toujours positif le quotient se calculant en cons quence Pour Java A B sgn A sen B IAl IBI A B A A B B 71 5 7 5 En java 2 1 En math 3 2 Nota 2 En J ava l op rateur modulo peut aussi tre appliqu sur des r els Le r sultat est alors le reste obtenu apr s soustraction de l op rande droit l op rande gauche un nombre entier de fois Toutefois cause des arrondis de calculs le r sultat n est pas toujours celui qu on attendrait par exemple 64 5 6 45 donne 6 449999999999998 et non 0 0 Grande prudence donc avec cet op rateur appliqu sur des r els Quelques op rateurs arithm tiques unaires Op rateur Fonction Champ d application Incr mentation d cr mentation Entiers ou r els Entiers ou r els ESIEE AM Poly Java v 3 7 Mai 2010 Page 29 85 6 2 Op rateurs et expressions booleennes Quelques op rateurs bool ens binaires Op rateur Fonction amp amp ET logique conditionnel
79. ns une zone m moire g n rale appel e tas qui contient toutes les donn es allou es l ex cution et n ayant pas de port e locale L objet ainsi cr conserve donc une port e globale et reste vivant tant qu on dispose d une r f rence i e un pointeur permettant d y acc der Quand un objet n est plus r f renc il devient d finitivement inaccessible et meurt son espace m moire est automatiquement d sallou la r cup ration automatique de cet espace m moire est r alis e par un processus appel ramasse miettes garbage collector Une fa on de d truire un objet est donc d assigner la valeur nu11 aux variables qui y font r f rence directement ou indirectement Page 20 85 ESIEE AM Poly Java v 3 7 Mai 2010 5 TYPES DE DONNEES Java connait deux types de donn es Les types primitifs Les donn es de type primitif sont stock es directement dans les variables et ont une s mantique de valeur i e c est la valeur qui est copi e quand une variable est affect e une autre variable Les types objet ou types r f rence Les donn es de type objet sont stock es sous forme de r f rence cet objet et non pas en tant qu objet m me Quand une variable de type objet est affect e une autre variable seule la r f rence est copi e pas l objet lui m me Java utilise le syst me Unicode 4 en interne pour coder les caract res les cha nes de cara
80. nt la m thode setDefaultCloseOperation Le comportement est indiqu en argument par une constante d finie dans l interface WindowConstants Exemple d argument DISPOSE_ON_CLOSE 11 6 Architecture des composants Swing Objectif des applications facilement adaptables L architecture des composants Swing est bas e sur une adaptation de la tr s renomm e architecture MVC Mod le Vue Contr leur voir section 13 2 Dans la communaut Swing elle est appel e Architecture mod le s parable Page 60 85 ESIEE AM Poly Java v 3 7 Mai 2010 La partie Mod le d un composant Swing partie qui repr sente les donn es de application est trait e comme un l ment s par tout comme le pr conise la conception MVC mais Swing fusionne les parties Vue qui prend en charge la repr sentation visuelle des donn es et Contr leur qui traite les entr es utilisateur de chaque composant en un seul objet interface utilisateur User Interface Object Il est en g n ral consid r comme une bonne pratique de centrer l architecture d une application autour de ses donn es plut t qu autour de son interface utilisateur Pour supporter ce paradigme Swing d finit une interface Mod le s par e pour chaque composant Cette s paration fournit au programme d application la possibilit de connecter facilement des composants Swing dans son impl mentation mod le propre La table suivante montre l
81. nter plusieurs interfaces Tout comme on peut construire une hi rarchie de classes on peut construire une hi rarchie d interfaces Mais alors qu une classe ne peut tendre directement qu une seule super classe pas d h ritage multiple une interface peut tendre directement plusieurs super interfaces h ritage multiple possible Exemple public interface List lt E gt extends Collection lt E gt Exemple public interface Predator boolean chasePrey Prey p public interface Prey boolean isChasedBy Predator p public interface Venomous public interface VenomousPredator extends Predator Venomous public class Pet public class Cat extends Pet implements Predator public class Frog implements Predator Prey ESIEE AM Poly Java v 3 7 Mai 2010 Page 49 85 10 EXCEPTIONS Une exception est un objet fournissant des informations relatives a une d faillance du programme Une exception est g n r e dans chacune des situations suivantes condition d ex cution anormale comme par exemple tentative de division par z ro m moire insuffisante ex cution d une instruction throw Le paquetage java lang d finit nombre de classes d exception qui couvrent les cas les plus courants 10 1 Exceptions contr l es et non contr l es Toute exception est une instance de la classe Throwable ou une de ses sous classes Object f Throwable e
82. objet partag public synchronized int get public synchronized void put int value Page 64 85 ESIEE AM Poly Java v 3 7 Mai 2010 12 3 2 Communication entre threads Pour que deux threads processus ind pendants qui se d roulent de fagon asynchrone puissent se communiquer des donn es il est n cessaire qu ils sachent se synchroniser autour d un sas de communication Le thread metteur de la donn e est appel producteur le thread destinataire de la donn e est appel consommateur Le thread producteur de la donn e doit tre capable de attendre que l espace de stockage du sas de communication soit libre puis y d poser une nouvelle donn e puis informer les threads consommateurs de la mise disposition de la donn e De fa on sym trique le thread consommateur de la donn e doit tre capable de attendre que la donn e soit mise disposition dans l espace de stockage du sas de communication puis lire cette donn e puis informer les threads producteurs de la disponibilit du sas de communication ou leur accuser r ception C est au sas de communication qu on confie la charge de ces synchronisations La mise en attente se r alise par la m thode wait la notification aux autres threads par les m thodes notify ou notifyAl1Q Ces m thodes sont toutes deux d finies dans la classe ObjectQ Exemple de classe d finissant un sas de communication d un seul l
83. on Depuis la version 5 0 ils sont g n riques Soit utiliser une boucle for g n ralis e Une telle boucle permet de s affranchir des it rateurs et de parcourir tr s simplement une collection quelconque Elle n est offerte que depuis la version 5 0 Exemple de parcours avec it rateur Iterator lt Integer gt it myCollectionOfIntegers iterator while it hasNextQ call it nextQ to get the next object of the collection and do something with that object Exemple de parcours sans it rateur for each element of my collection of Integers print it for Integer v myCollectionOfIntegers System out printIin v 5 3 Transtypage Le transtypage en anglais cast casting est une op ration qui consiste convertir le type d une expression La conversion de type se r alise en faisant pr c der expression par le type cible entre parenth ses Cette proposition s applique certains types primitifs et aux types objets li s par une relation d h ritage Les conversions incorrectes provoquent une erreur la compilation ou ex cution A noter qu un transtypage ne change pas le type des variables concern es le type d une variable est d fini une fois pour toute d s sa cr ation l op ration de transtypage est simplement un changement de point de vue qu on demande au compilateur Syntaxe newType expression Exemple int n 87 char c char n 2 ES
84. ons de fournir la m thode runO d finir une sous classe de la classe Thread et y red finir la m thode run d finir une classe qui impl mente l interface Runnable et y d finir la m thode run 12 1 Cr er un thread par extension de la classe Thread Exemple Example of defining a thread as extending Thread public class SimpleThread extends Thread public SimpleThread String threadName super threadName The task of this thread is to print 10 times its name at a random rate public void run for Cint i 0 i lt 10 i System out printin i try getName sleep Tong Math random 1000 catch InterruptedException e System out printInC DONE getName end class SimpleThread Example of running two threads concurrently Jamaica and Fiji Will be printed randomly 10 times public static void main String args new SimpleThread Jamaica startO new SimpleThread Fiji startO ESIEE AM Poly Java v 3 7 Mai 2010 Page 63 85 12 2 Cr er un thread par impl mentation de l interface Runnable Cette fa on de faire s impose lorsque la classe cr er doit sous classer une classe quelconque le cas typique tant une Applet parce que Java ne supporte pas l h ritage multiple Exemple Example of defining a thread as implementing Runnable public class SimpleThread implements Runnable String threadName
85. rale est not e entre apostrophes L op rateur est l op rateur de concat nation de cha nes Il produit une nouvelle cha ne sans l ments physiquement partag s avec ses op randes La comparaison de deux cha nes caract re par caract re n cessite de faire appel la fonction equals l op rateur ne donnant le r sultat intuitivement attendu que dans un cas particulier Les objets de type String sont immuables immutable c est dire non modifiables une fois cr s En cons quence une m thode ne peut pas avoir de param tres de sortie de type String La classe String appartient au paquetage java lang Exemple String cha ne Exemple n 1 de chaine litt rale System out printInC Longueur de chaine V chaine lengthQ 5 2 3 Cha ne de caract res modifiable StringBuffer Ces cha nes de caract res contrairement aux cha nes de type String peuvent tre modifi es L op rateur new est indispensable pour cr er une cha ne de type StringBuffer La classe StringBuffer appartient au paquetage java lang Exemple StringBuffer chaine chaine new StringBuffer Meeting at 6 pm chaine setCharAt 11 5 meeting at 5 and not 6 System out printIn chaine 5 2 4 Tableau Un tableau est une collection de taille fixe d l ments de m me type Chaque l ment est rep r par son indice qui permet un acc s direct l l ment
86. rge la repr sentation interne des donn es de l application et la logique de gestion de ces donn es Il notifie la composante Vue les changements de donn es et lui permet de l interroger sur son tat Il fournit au contr leur la possibilit d acc der certaines fonctionnalit s applicatives encapsul es dans le Mod le La VUE affiche les informations l utilisateur Elle r cup re du Mod le les donn es pr senter l utilisateur sp cifie leur pr sentation externe et met jour l information affich e Elle relaie aussi au contr leur les entr es utilisateur et l autorise s lectionner les vues La s paration du mod le d une part et de la vue et du contr leur d autre part permet des vues multiples d un m me mod le Quand il y a plusieurs vues du mod le chaque vue a alors un contr leur associ Le CONTROLEUR g re les entr es utilisateur Il re oit les entr es g n ralement sous forme d v nements encodant un mouvement de la souris l activation d un bouton ou une entr e clavier ou bien s il s agit d une application web les requ tes HTTP GET et POST Les v nements sont traduits en requ tes de service pour le Mod le ou la Vue Une application a typiquement un contr leur ESIEE AM Poly Java v 3 7 Mai 2010 Page 67 85 pour chaque ensemble de fonctionnalit s apparent es Une application peut avoir un contr leur s par par type de client si les interact
87. s en anglais des termes sigles et m me produits de r f rence informatiques Parmi les sources possibles citons par exemple parmi les encyclop dies www wikipedia org la version anglaise tant la plus compl te parmi les moteurs sp cialis s dans la recherche dans les encyclop dies dictionnaires et glossaires www answers com Voici un glossaire de quelques termes et sigles g n raux courants Sigle terme D finition Commentaire API Application Programming Interface Biblioth que de fonctionnalit s communes courantes et de bas niveau Constitue une interface entre couches basses et couches applicatives de plus haut niveau Exemple java sun com javase 6 docs api sp cifie les API standard de Java fournies dans le JDK 6 Framework Cadre d applications Ensemble coh rent de classes g n ralement abstraites et d interfaces permettant le d veloppement rapide d applications Fournit suffisamment de briques logicielles pour pouvoir produire une application aboutie Typiquement sp cialis pour un type d application GUI Graphical User Interface Interface homme machine graphique par opposition a interface en ligne de commande IDE Integrated Development Environment Programme regroupant un ensemble d utilitaires logiciels pour le d veloppement de programmes diteur de texte compilateur d bogueur gestionnaire de versions aide la prod
88. s l environnement JNIEnv qui est lui m me un pointeur vers une structure contenant des fonctions d interface avec la machine virtuelle java JVM o le second de type jclass s il s agit d une m thode de classe ou jobject s il s agit d une m thode d instance est un pointeur vers un descripteur de la classe ou de l objet une sorte de this d appel 15 1 3 Impl mentation C Exemple de fichier MyRoutines c include lt stdio h gt include MyClass h JNIEXPORT void JNICALL Java_MyClass_procedurel CINIEnv penv jclass cla printfC Routine procedurel n JNIEXPORT void JNICALL Java_MyClass_procedure2 CINIEnv penv jobject obj printfC Routine procedure2 n ESIEE AM Poly Java v 3 7 Mai 2010 Page 81 85 15 2 Echange de donn es entre Java et C L change de donn es entre l application java et le sous programme C par les param tres ou le r sultat de la fonction suppose une compatibilit des types correspondants Or il n y a pas de correspondance syst matique naturelle entre les types du langage Java et les types du langage C un caract re par exemple est cod sur 16 bits en Java et sur 8 bits en C Le JNI d finit donc un ensemble de types en C de noms j qui correspondent aux types de Java Le JNI traite les types primitifs et les types objets diff remment La correspondance des types primitifs est directe voir tableau ci apr s car elle repose sur une repr
89. s m thodes d acc s DECOUPLER ENTREES TRAITEMENTS ET SORTIES Voir en particulier section 13 2 ADOPTER UNE CONCEPTION DIRIGEE PAR LES RESPONSABILITES L attribution des bonnes responsabilit s aux bonnes classes est l un des probl mes les plus d licats de la conception orient e objet La programmation dirig e par les responsabilit s est un processus de conception de classes par attribution de responsabilit s bien d finies chaque classe Cette Page 66 85 ESIEE AM Poly Java v 3 7 Mai 2010 approche peut tre utilis e pour d terminer quelle classe devrait impl menter telle fonctionnalit Une conception dirig e par les responsabilit s contribue a r duire le couplage EVITER LA DUPLICATION DE CODE Eviter qu un m me segment de code ne se retrouve plus d une fois dans une application UTILISER L HERITAGE A BON ESCIENT L h ritage est une relation est_un pas une relation a_un Dans une hi rarchie d h ritage les objets doivent avoir une relation est_un avec leur classe de base afin que l h ritage de tous les attributs propri t s et m thodes de la classe de base garde sens m me si la sous classe en sp cialise ou les compl te Les objets ne relevant pas strictement d une relation est_un doivent se traduire par des classes ou interfaces sans relation d h ritage entre elles LIMITER LA TAILLE ET COMPLEXITE Ne pas mettre trop de choses dans une m thode une m
90. saires la cr ation du singleton sont disponibles au moment du chargement de la classe en m moire public final class MySingleton Creating at the class loading private static MySingleton singleInstance new MySingleton Private constructor Can t be used outside this class private MySingleton Get a singleton of this class public static MySingleton getInstance return singleInstance Creation of a singleton MySingleton singleton MySingleton getInstanceQ 13 5 2 Exemple le mod le Decorator Le mod le de conception Decorator permet d ajouter dynamiquement des fonctionnalit s a un objet Ceci se r alise en cr ant une nouvelle classe Decorator enveloppant la classe originale Le mod le de conception Decorator est une alternative l approche par cr ation d une sous classe de la classe originale Il s impose notamment une approche par extension de la classe originale dans les cas suivants la classe originale ne peut pas tre tendue par h ritage le nombre de sous classes permettant de d finir toutes les combinaisons possibles de fonctionnalit s est trop important l ajout des fonctionnalit s ne peut pas tre statique i e r alis la compilation mais doit tre dynamique i e r alis l ex cution Exemple Wikipedia Consid rons des fen tres d affichage instances d une classe Window et supposons que cette classe n offre pas la possibi
91. sant concern Une classe gestionnaire d v nement est g n ralement implant e sous la forme d une classe interne inner class au sein d une classe graphique Exemple Ecriture d un MouseListener public class myClass extends JPanel someObject addMouseListener new MyAdapterO class MyAdapter extends MouseAdapter public void mouseClicked MouseEvent e ESIEE AM Poly Java v 3 7 Mai 2010 Page 59 85 Typiquement une classe gestionnaire d v nement est implant e sous la forme d une classe interne anonyme Exemple solution quivalente celle de l exemple pr c dent Ecriture d un MouseListener public class myClass extends JPanel someObject addMouseListener new MouseAdapter public void mouseClicked MouseEvent e Li 11 5 Affichage fermeture d une fen tre graphique L affichage le masquage d une fen tre graphique de type JFrame se commande par la m thode setVisible Quand l utilisateur ferme une fen tre graphique de type JFrame cette fen tre n est en fait par d faut que masqu e Quoiqu invisible l objet graphique existe toujours et le programme peut nouveau le rendre visible Si l on d sire un comportement diff rent il est n cessaire soit d enregistrer sur cet objet graphique un gestionnaire d v nement de type WindowListener et de capter le message windowClosing soit de sp cifier le comportement par d faut en utilisa
92. se se terminer sans que cet objet soit perdu Exemple de persistance qu un objet puisse pr tendre tre un document Excel l int rieur d un document Word Le m canisme qui rend possible la persistance est appel s rialisation serialization A cette fin un Java Bean doit impl menter interface Serializable ou Externalizable Exemple de Java Bean package sunw demo simple import java awt import java io Serializable fe SimpleBean will be displayed with a green centered rectangle but its color may be changed later ef public class SimpleBean extends Canvas implements Serializable private Color color Color green Property getter method public Color getColor return color Property setter method Sets new SimpleBean color and repaints ESIEE AM Poly Java v 3 7 Mai 2010 Page 73 85 public void setColor Color newColor color newColor repaint public void paint Graphics g g setColor color g fillRect 20 5 20 30 Constructor sets inherited properties public SimpleBean setSize 60 40 setBackground Color red end class SimpleBean Pour tre reconnu par un outil de d veloppement un Java Bean doit tre conditionnn dans une fichier d archive au format jar Bien que ce ne soit pas obligatoire il est souhaitable que les Java Beans soient des paquetages vite notamment les conflits en cas d homonymie des
93. sp Servlet Technologie Java offerte par la plateforme Java EE permettant d tendre la fonctionnalit d un serveur Web acc s des bases de donn es transactions d e commerce Dans une architecture MVC utilis pour r aliser le Contr leur java sun com products servlet Page 86 85 ESIEE AM Poly Java v 3 7 Mai 2010
94. sp cial permet d impl menter une zone qui contient diff rents composants a diff rents moments utilis en combinaison avec d autres gestionnaires de mise en page Exemple de changement du gestionnaire de mise en page par d faut JPanel pane new JPanel pane setLayout new BorderLayout La taille et l alignement d un composant peut tre sp cifi par les m thodes suivantes setMinimumSize setPreferredSize setMaximumSize setAlignmentx setAlignmenty 11 4 Gestion des v nements 11 4 1 Notion d v nement A chaque fois que l utilisateur agit sur le clavier ou la souris un v nement survient un objet v nement est g n r Un objet v nement est un objet contenant des informations sur la source et la nature de l v nement survenu Swing offre des interfaces au sens Java appel es couteurs d v nements event listeners qui permettent de capter les v nements de fa on s lective afin de pouvoir les traiter Event listener Event object Event listener Event listener Exemple d v nement Type de Listener Clic d un bouton graphique ou enfoncement de la touche return lors d une saisie dans un champ texte ActionListener Fermeture d une fen tre graphique frame WindowListener Clic de la souris lors du passage du curseur sur un composant MouseListener graphique Afin de faciliter le travail du programmeur Swing associe g n ralement
95. suffixe F Un caract re litt ral peut tre crit sous forme d un unique caract re Unicode entre apostrophes ou d une valeur Unicode pr c d e par wu ESIEE AM Poly Java v 3 7 Mai 2010 Page 21 85 Les deux litt raux bool ens sont true et false Les variables d un type primitif ne r f rant pas des objets elles n ont pas de m thodes associ es 5 2 Types objet ou types r f rence Tous les types autres que les types primitifs sont des types objet Ils incluent les classes non abstraites des biblioth ques standard Java tels que le type String par exemple ainsi que les classes d finies par l utilisateur Une variable d un type objet contient une r f rence ou pointeur sur cet objet Les affectations et passages de param tres ont une s mantique de r f rence 1 e c est la r f rence qui est copi e et non l objet lui m me Apr s l affectation d une variable une autre les deux variables r f rent au m me objet il s agit donc d une copie de surface par opposition une copie profonde qui dupliquerait les objets Les deux variables sont alors dites alias pour le m me objet 5 2 1 Classes enveloppes Les classes enveloppes permettent de transformer un type simple en objet cette op ration est appel e en anglais boxing Classe enveloppe Type primitif Boolean boolean Byte byte Character char Double double Float float Integer int Long
96. t avec un objet en lui envoyant un message de demande d activation d une de ses m thodes Exemple d envoi d un message un objet maVoiture acc l rer Une m thode particuli re appel e constructeur permet d initialiser l tat de l objet sa cr ation Une classe sert regrouper sous une m me cat gorie et un m me nom g n rique les objets partageant le m me type d tat et le m me comportement Une classe est donc un type d objet on dit r ciproquement qu un objet est une instance de classe Exemple de classe Automobile attributs marque couleur consommation m thodes d marrer arr ter acc l rer Les classes peuvent tre organis es en hi rarchies Chaque classe h rite alors des attributs et m thodes des classes situ es sur sa ligne hi rarchique ascendante R aliser un programme dans un langage orient objets c est mod liser par des classes les objets que l on a manipuler crire ces classes dans le langage de programmation orient objets cr er des objets instances de ces classes communiquer avec ces objets en invoquant leurs m thodes Java est n en 1995 dans l entreprise californienne Sun Microsystems Il a t con u par James GOSLING E al ESIEE AM Poly Java v 3 7 Mai 2010 Page 7 85 2 PROGRAMME JAVA 2 1 Style de programmation Il est largement admis que le respect de la syntaxe et un programme qui fonctionne n
97. t une jonction entre deux l ments mat riels ou logiciels permettant l change d information par exemple l interface homme machine au sens programmation objet l interface d une classe est la partie visible publique de cette classe elle se d finit typiquement par la liste des membres attributs constructeurs m thodes non priv s associ s leurs commentaires de documentation au sens sp cifique du Langage Java une interface est une sorte de classe abstraite poss dant des caract ristiques particuli res et qui d finit un protocole de comportement c est le sens qui est d fini dans cette section C est son contexte d utilisation qui donne sens au mot interface Les interfaces au sens du Langage Java sont des sortes de classes abstraites sans aucun d tail d impl mentation et qui poss dent un degr d abstraction sup rieur celui des classes abstraites Les interfaces ont des m thodes qui sont toutes implicitement abstraites elles n ont pas de corps noter qu il n est pas recommand d ajouter le modificateur abstract puisqu il est implicite ne poss dent pas de champs l exception ventuelle de constantes de classe implicitement static final assign es ses membres sont implicitement publics si l interface est publique Une interface sp cifie la signature minimale d une classe qui l impl mente Une interface est donc un contrat respect
98. testeur d terminera si une exigence requise est compl tement ou partiellement satisfaite Un cas de test est caract ris par une entr e connue pr condition et une sortie attendue post condition De nombreux cas de tests peuvent tre n cessaires pour v rifier une exigence donn e On distingue g n ralement deux types de cas de test les cas de test positifs qui consistent tester des cas cens s faire r ussir la fonctionnalit Ces tests doivent nous convaincre que l l ment de code test fonctionne bien comme esp r les cas de test n gatifs qui consistent tester des cas cens s mettre en chec la fonctionnalit Ce sont toutes les situations de valeurs hors limites d erreurs Exemples entrer une valeur hors plage lire un ensemble vide Dans de tels cas nous devons nous attendre ce que le programme traite l erreur d une fa on contr l e et appropri e La simple correction des erreurs d tect es par un test devrait syst matiquement am liorer la qualit du programme Malheureusement l exp rience montre que tout changement dans le programme peut introduire de fa on inattendue d autres erreurs En particulier des erreurs de r gression regression bugs une erreur de r gression survient quand une fonctionnalit qui fonctionnait pr c demment ne fonctionne plus suite une modification du programme Une m thode courante de test de non r gression non regression tes
99. the fields Point p Point o return this x p x amp amp this y p y In the class ColoredPoint extending Point Override public boolean equals Object o Verify if this and o have the same class and if their super fields are equal if C super equals o return false Now compare the specific fields ColoredPoint cp ColoredPoint o return this color equals cp color Exemple public class MotherClass public void normal System out printInC the normal method in MotherClass public static void hide System out printInC the hide method in MotherClass public void override System out println the override method in MotherClass end MotherClass public class DaughterClass extends MotherClass Override public static void hide System out printInC the hide method in DaughterClass Override public void override System out printInC the override method in DaughterClass public static void main String args DaughterClass ol new DaughterClass MotherClass 02 ol ESIEE AM Poly Java v 3 7 Mai 2010 Page 45 85 ol normal call super normal o2 normal call super normal ol hide call this hide o2 hide call super hide Il liaison statique ol override call this override o2 override call this override liaison dynamique end DaughterClass La m t
100. the term of rank n public double termOfRank int n double u u0 u n double v uCn 1 for int i 1 i lt n i v nextTerm u U V return u end class Progression 3 2 2 Sous classe Syntaxe public class SubclassName extends SuperclassName Fields Constructors Methods Exemple KEN Class ArithGeomProgression Ze Represents a real arithmetic geometric progression with constant coefficients u n 1 a u n b author AM ersion 1 0 FT public class ArithGeomProgression extends Progression FIELDS Page 14 85 ESIEE AM Poly Java v 3 7 Mai 2010 private double a multiplying coefficient private double b additive coefficient CONSTRUCTORS Define an arithmetic geometric progression param u0 first term of the progression param a multiplying coefficient param b additive coefficient Wi public ArithGeomProgression double u0 double a double b super u0 this a a this b b METHODS Given a current term u n return the next term u n 1 public double nextTerm double u return a u b end class ArithGeomProgression 3 3 Interfaces Remarque liminaire Le terme interface a une s mantique multiple Dans le cadre de la programmation en Java il peut prendre selon le contexte trois sens distincts m me si conceptuellement apparent s au sens informatique commun une interface es
101. ting consiste r ex cuter les tests r alis s ant rieurement et voir si des d fauts apparaissent voire r apparaissent Les tests devant donc tre appliqu s non pas une seule fois mais chaque modification du logiciel il est souhaitable de disposer d une batterie de tests programm s afin de permettre une automatisation du test Il s agit donc de programmer des cas de test pour chaque m thode non triviale en veillant ce que chaque cas de test soit bien s par des autres Page 70 85 ESIEE AM Poly Java v 3 7 Mai 2010 13 3 2 JUnit JUnit d velopp par la communaut open source offre un cadre d applications framework pour la programmation de tests de r gression Il est utilis pour impl menter des tests unitaires en Java La classe TestCase permet de d finir un cas de test la classe Assert fournit un ensemble de m thodes facilitant la gestion des erreurs d tect es la classe TestSuite permet d ex cuter une suite de tests la classe TestRunner est un outil d exploitation permettant de d finir une suite de tests ex cuter et d afficher les r sultats Exemple de cas de test K 7 A test case for the class MyClass import junit framework public class TestMyClass extends TestCase The tests need to run against the background of a known set of objects This set of objects is called a test fixture Define here an instance Variable for each part of th
102. tion l auteur la version 2 Les instructions de paquetage 3 Les instructions d import 4 Les d clarations des classes Un fichier devrait contenir moins de 2000 lignes et des lignes de moins de 80 caract res voire 70 pour les commentaires de documentation recommandation Un fichier Java porte le nom de la classe publique qu il contient les fichiers source Java ont pour suffixe java les fichiers Java compil s ont pour suffixe class par convention Les suffixes java et class sont impos s par les outils ESIEE AM Poly Java v 3 7 Mai 2010 Page 9 85 2 4 2 Compilation ex cution g n ration de la documentation Depuis la ligne de commande Compilation javac fileName java Ex cution java fileName fichier du main G n ration de la documentation javadoc java Pour avoir une documentation programmeur compl te y compris les membres priv s de toutes les classes et de leur interaction il faut lancer cette commande avec l option private 2 5 Paquetages Un paquetage package en anglais est une biblioth que de classes organis es de fa on hi rarchique Le nom d un paquetage est n cessairement le nom de son r pertoire Le nom d un paquetage est toujours en lettres minuscules par convention Diff rents paquetages peuvent tre rassembl s et compact s dans un fichier d archive zip ou jar 2 5 1 Paquetages standard La variable d environnement CLASSPATH in
103. tructions du processeur particulier Par exemple un programme C compil sur un syst me d exploitation donn est en code natif car il ne fonctionnera pas sur un autre syst me d exploitation ESIEE AM Poly Java v 3 7 Mai 2010 Page 79 85 T usr lib jdk1 5 0v11 include linux 4 Produire une biblioth que partag e 1ib so qui sera chargeable par le programme Java gcc Wall shared o 1ibMyRoutines so MyRoutines o 5 Avant la toute premi re ex cution sp cifier la machine virtuelle Java le chemin d acc s cette biblioth que setenv LD_LIBRARY_PATH path o path d signe le chemin d acc s En supposant que celui ci soit le r pertoire courant la commande sera setenv LD_LIBRARY_PATH 6 Ex cuter le programme Java java MyClass La fa on d crire le programme Java et d impl menter le sous programme C associ est illustr e ci apr s 15 1 Appel d une proc dure C On consid rera de bout en bout le m me exemple 15 1 1 D claration et appel java Exemple de classe java public class MyClass Declaration of an extern class procedure native public static void procedurel Declaration of an extern instance procedure native public void procedure2 Test procedure public static void main String argv MyClass procedure1 MyClass o new MyClasse o procedure2 Load the library 1ibMyRoutines static System loadLibrary MyRoutines
104. uction d interfaces G n ralement d di un seul langage de programmation JDK Java Development Kit voir chapitre 16 JFC Java Foundation Classes Cadre d applications graphiques Ensemble de classes Java permettant de construire des interfaces utilisateur graphiques portables Contient notamment les composants Swing JRE Java Runtime Environment voir chapitre 16 ESIEE AM Poly Java v 3 7 Mai 2010 Page 85 85 J2EE Java 2 Platform Enterprise Edition Java Platform Enterprise voir chapitre 16 E mae Edition J2ME Java 2 Platform Micro voir chapitre 16 Edition Java ME Java Platform Micro Edition JASE Java 2 Platform Standard voir chapitre 16 Edition Java SE Java Platform Standard Edition Et plus sp cifiquement dans le cadre d applications professionnelles Java distribu es Sigle terme D finition Commentaire EJB Enterprise JavaBeans Technologie Java offerte par la plateforme Java EE permettant de cr er des composants distribu s h berg s dans un serveur d applications Dans une architecture MVC utilis pour r aliser le Mod le java sun com products ejb JSP Java Server Pages Technologie Java offerte par la plateforme Java EE permettant de cr er des pages Web dynamiques Dans une architecture MVC utilis pour r aliser la Vue java sun com products j
105. ues Exemple de lecture d une cha ne de caract res format e String str 1 XXX 2 XXX yellow XXX blue XXX Scanner in new Scanner str useDelimiter S XXX s System out printin in nextInt System out printin in nextInt System out printin in next System out printin in next in closeQ will display Page 40 85 ESIEE AM Poly Java v 3 7 Mai 2010 1 L 2 yellow blue ESIEE AM Poly Java v 3 7 Mai 2010 Page 41 85 9 HERITAGE 9 1 Notion d h ritage L h ritage est une technique qui offre de nombreux avantages vite la duplication de code permet la r utilisation de code dans un autre contexte facilite la maintenance des programmes facilite l extension d applications existantes L h ritage inheritance est une relation est_un non pas a_un qui permet de d finir une classe comme l extension d une autre Exemple Classe Astre est t_un Classe Etoile Classe Plan te Une toile est un astre une plan te est un astre La classe Etoile tend la classe Astre la classe Etoile h rite de la classe Astre Une super classe est une classe qui est tendue par d autres classes Une sous classe est une classe qui tend h rite de une autre classe Elle h rite l tat et le comportement de tous ses anc tres mais peut aussi les red finir Les classes qui sont li es par des relations d h ritage forment une hi rarc
106. uper classes Page 18 85 ESIEE AM Poly Java v 3 7 Mai 2010 public Un membre d clar public est accessible depuis n importe quelle classe Modificateur d acc s recommand pour les m thodes static e Un champ d clar static est une variable de classe et n est pas dupliqu dans les diff rentes instances un champ non static est une variable d instance et est dupliqu dans chaque instance e Une m thode d clar e static est une m thode de classe et est invoqu e sans r f rence un objet particulier mais en faisant r f rence sa classe une m thode non static est une m thode d instance et est invoqu e sur un objet particulier Voir galement chapitre 14 final e Une variable d clar e final ne peut plus tre modifi e apr s qu elle a t initialis e Cela permet en particulier de d clarer des champs constants Exemple final int SIZE 10 e Une m thode d clar e final ne peut pas tre red finie dans une sous classe e Une classe d clar e final ne peut pas tre sous class e Nota d faut de modificateur private protected ou public la visibilit est dite package access le membre de la classe est visible depuis toutes les classes du m me paquetage Exemple public static final double GRAVITY 9 81 ESIEE AM Poly Java v 3 7 Mai 2010 Page 19 85 4 INSTANCE DE CLASSE Avant de pouvoir tre utilis un objet
107. uper classe 9 2 Qu h rite une sous classe Une sous classe h rite de tous les membres de sa super classe qui sont accessibles sauf si ce membre attribut ou m thode est red fini dans la sous classe Une sous classe h rite de sa super classe les membres d clar s public ou protected les membres d clar s sans modificateur d acc s si la sous classe est dans le m me paquetage que la super classe Une sous classe n h rite pas de sa super classe les membres qui sont red finis dans la sous classe les constructeurs Attention au choix des identificateurs dans la sous classe ce choix peut involontairement masquer un membre de la super classe C est particuli rement le cas pour les attributs un attribut ayant le m me nom qu un attribut de sa super classe masque attribut de la super classe m me s ils sont de types diff rents 9 3 Red finir une m thode Pour red finir une m thode dans une sous classe il faut qu elle ait la m me signature et le m me type de retour que la m thode de la super classe La m thode red finie peut autoriser un acc s plus large mais pas moins ex une m thode d clar e protected dans la super classe peut tre red finie public dans la sous classe mais pas private ESIEE AM Poly Java v 3 7 Mai 2010 Page 43 85 L exemple typique est la m thode toString de la classe Object appliqu e a un objet elle produit une chaine de caract res
108. urn Wrong value key found Page 54 85 ESIEE AM Poly Java v 3 7 Mai 2010 11 ANNEXE 1 PROGRAMMATION GRAPHIQUE R f rences Kathy WALRATH amp al The JFC Swing Tutorial A guide to Constructing GUIs 2 ed Addison Wesley 2004 Bases de Swing et exemples de programmation d interfaces graphiques java sun com docs books tutorial uiswing mini index html Gestion des v nements et exemples de programmation java sun com docs books tutorial uiswing events api html Swing Architecture Overview java sun com products jfc tsc articles architecture Ce chapitre introduit la programmation graphique avec la biblioth que javax swing 11 1 Swing Il existe deux grands paquetages d utilitaires Java pour r aliser des interfaces graphiques AWT Abstract Window Toolkit le paquetage primitif Les composants de ce paquetage s importent par import java awt Swing le plus r cent et le plus volu construit sur AWT c est le paquetage recommand Les composants de ce paquetage s importent par import javax swing Les deux paquetages Swing les plus commun ment utilis s sont javax swing javax swing event Les classes de javax swing les plus courantes sont JFrame JPanel JLabel JTextField JButton JOPtionPane Exemple de saisie affichage dans une bo te de dialogue import javax swing JOptionPane use method showInputDialog to prompt for
109. urnies au lancement Supposons galement que le fichier source Game java ait t compil en un fichier ex cutable Game class Le lancement de l application par la commande java Game Daniel 20 attribuera args le tableau Daniel 20 ESIEE AM Poly Java v 3 7 Mai 2010 Page 33 85 8 INSTRUCTIONS Sur le plan syntaxique les instructions statements peuvent tre regroup es en 3 grandes cat gories les instructions simples instructions d affectation instructions d entr e sortie instructions d appel a une proc dure Une instruction simple se termine toujours par un point virgule Un point virgule seul d finit une instruction vide les instructions de contr le instructions de s lection instructions de boucle instructions de rupture de s quence les blocs d instructions Un bloc d instructions aussi appel instruction compos e est une s quence d instructions enserr e entre accolades Le bloc d finit une instruction vide 8 1 Instruction d affectation Syntaxe variable expression Le symbole est I op rateur d affectation La valeur de expression situ e en partie droite est affect e la variable sp cifi e en partie gauche Le type de l expression doit s apparier au type de la variable L impact physique est diff rent selon que l expression est de type primitif ou objet voir chapitre 5 8 2 Instructions de contr le

Download Pdf Manuals

image

Related Search

Related Contents

Speakit - Documentación técnica    Fitness Quest 9.5e Home Gym User Manual  Samsung 245T Vartotojo vadovas  Retamor - Disatec, SL  Artic 134 21_IT  Scarica l`allegato  Spectracide HG-95833-2 Instructions / Assembly    ライカDMS1000 取扱説明書 - Leica Microsystems  

Copyright © All rights reserved.
Failed to retrieve file