Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Document Details

TantalizingConsciousness9632

Uploaded by TantalizingConsciousness9632

Tags

java programming software development programming languages

Full Transcript

1. Java est une plateforme de développement logiciel crée par Sun Microsystems. 2. Java est un langage de programmation orienté objet, c’est un langage hybride à la fois interprété et compilé, disant semi-compilé. 3. Java ME (Micro Edition) pour le développement des appareils mobiles et systèmes...

1. Java est une plateforme de développement logiciel crée par Sun Microsystems. 2. Java est un langage de programmation orienté objet, c’est un langage hybride à la fois interprété et compilé, disant semi-compilé. 3. Java ME (Micro Edition) pour le développement des appareils mobiles et systèmes embarquées (microcontrôleur, capteur, passerelle, smartphone, assistant personnel numérique, décodeur TV, imprimante). Elle est composée de : a) KVM (Kilobyte Virtual Machine), une machine virtuelle capable d'exécuter une application Java. b) Un ensemble de bibliothèques, notamment une API donnant accès aux fonctions de base du système ainsi qu'aux fonctions spécifiques de l'écosystème visé. 4. Java SE (Standard Edition) pour le développement et l’exécution des applications du bureau, composée de : a) API de bases. b) API spécialisés dans le poste client. c) API d'usage général comme JAXP (Java API for XML Processing). d) JDBC. 5. Java EE (Entreprise Edition) s'appuie sur Java SE en ajoutant des bibliothèques et des API adaptées à applications au niveau de l'entreprise telles que les services Web, les logiciels basés sur des composants et cloud applications. 6. Java Specification Requests (JSR) est un système normalisé ayant pour but de faire évoluer la plateforme Java. 7. JVM (Java Virtual Machine) est un environnement d'exécution pour applications Java, c’est un programme permettant : a) L'interprétation du bytecode, b) L'interaction avec le système d'exploitation, c) La gestion de sa mémoire grâce au ramasse-miette 8. La machine virtuelle ne connaît pas le langage Java : elle ne connaît que le bytecode qui est issu de la compilation de codes sources écrits en Java.  JVM ⊆ JRE ⊆ JDK  JDK = JRE + outils de développement et API + langage de programmation java. 9. Pour exécuter un programme Java il est nécessaire, entre autre, d'installer et utiliser une JVM. 10. API (Application Programming Interface) Java est un ensemble de bibliothèques contenant des classes et interfaces organisées en Packages. 11. Javac (Java Compiler) est un programme pour compiler le code source (fichier texte avec extension.java), ce qui crée un fichier avec extension.class. 12. Le bytecode obtenu par compilation ne peut être exécuté qu’à l’aide de l’interpréteur. L’exécution d’un programme se fait par l’intermédiaire de la machine virtuelle en utilisant la commande java suivie du nom de la classe sans extension. 13. En Java, l'exécution d'un programme peut se faire d'autant de façons différentes qu'il existe de méthode main dans les classes du programme 14. Afin de lancer la compilation d’un programme Java à partir de n’importe quel dossier il faut indiquer au système d’exploitation où se trouve le compilateur. Cela se fait grâce à la variable d’environnement PATH. 15. Lorsqu’un programme Java a besoin d’une bibliothèque particulière, il faut ajouter la variable ClassPath, cette variable doit pointer vers la bibliothèque(s) ou la classe(s) requise par le programme Java. 16. Une instruction java peut tenir sur plusieurs lignes. 1 17. Chaque objet, classe, programme ou variable est associé à un nom : un identificateur. Un identificateur peut se composer de tous les caractères alphanumériques et des caractères _et $, le premier caractère doit être une lettre, _ ou $. 18. Un commentaire est sauté par le compilateur (pas de ; à la fin), il existe trois types : a) // Mono ligne, b) c) 19. Une variable possède un nom, un type et une valeur. Pour utiliser une variable, il faut la définir pour lui réserver de la mémoire avant de lui affecter une valeur. 20. La déclaration spécifie le nom et le type du variable, fonction, classe, etc. cela ne produit pas une allocation de mémoire. Elle est utilisée pour rendre l’élément visible pour le compilateur. 21. La définition d’une variable détermine la valeur à stockée dans une variable, fonction ou une classe, c’est une déclaration qui alloue de la mémoire. 22. Les types élémentaires ont une taille identique quel que soit la plate-forme d'exécution ce qui permet à Java d'être indépendant de la plate-forme sur lequel le code s'exécute. a) Les entiers : byte (octet signé – 8 bits), short (entier court signé – 16 bits), int (entier signé – 32 bits), long (entier long – 64 bits) doit être suffixé par l ou L. b) Les réels : float (virgule flottante simple précision IEEE754 – 32 bits), double (virgule flottante double précision IEEE754 – 64 bits). Ils doivent posséder soit un point, un exposant ou l'un des suffixes f, F, d, D, par défaut un littéral est de type double. c) Valeur logique : boolean – 1 bit, pas de conversion possible vers un autre type. d) Caractère Unicode : char – 16 bits, sert à représenter des caractères isolés, entouré de simples quotas dans le code Java. Une valeur de type char peut être considérée comme un entier non négatif de 0 à 65535, les caractères 0 à 255 correspondent à ASCII. La conversion implicite par affectation n'est pas possible. 23. Une chaîne de caractères stocke une séquence de caractères alphanumériques. Le compilateur Java remplace les constantes chaînes par des objets de type String. 24. La classe String, est immuable, c.-à-d. que son contenu ne peut pas être modifié une fois créé. Pour toute modification une autre chaine doit être créée. 25. Méthodes de la classe String : - indexOf (String) - length () - replace ("charSource", "charReplacement") - substring (indexDebut, indexFin) - toLowerCase () and toUpperCase () - contains ("charRechercher") - isEmpty () - concat ("ch") 26. Pour modifier le contenu d’une chaine de caractère sans créer une nouvelle, utilisez la classe StringBuider. 27. L'opération d'affectation = est associatif de droite à gauche. 2 28. Les opérateurs de comparaison == et != tests les valeurs des variables :  Pour les types primitifs, on test leurs valeurs.  Pour les types objets, on test les valeurs de leurs références. 29. Priorités des opérateurs du plus au moins prioritaire : 1) les parenthèses ( ) 2) les opérateurs d'incrémentation : ++, -- 3) les opérateurs de multiplication, division, et modulo *, /, % 4) les opérateurs d'addition et soustraction : +, - 5) les opérateurs de décalage : > 6) les opérateurs de comparaison : = 7) les opérateurs d'égalité : ==, != 8) l'opérateur OU exclusif ^ 9) l'opérateur ET binaire & 10) l'opérateur OU exclusif binaire | 11) l'opérateur ET logique && 12) l'opérateur OU logique || 13) les opérateurs d'assignement : =, +=, -= 30. Les entiers sont convertis implicitement vers le type int (promotion entière) pour renforcer la sécurité du code. 31. La division par zéro pour les types entiers lève l'exception ArithmeticException. 32. La division par zéro pour les réels produit 3 valeurs :  NaN (Not a Number) nombre non défini. Float.NaN ou Double.NaN  Infinity (+) Float.POSITIVE_INFINITY  Infinity (-) Float.NEGATIVE_INFINITY 33. Switch permet d’effectuer des tests pour des valeurs constantes de type (byte, short, int, char, String), il est possible d’imbriquer des switch.  Assigner directement le résultat de chaque cas à une variable String x= switch (n) {}  Utilisation d’une flèche « -> » et suppression du «break» : case 1 ->"Janvier";  Utilisation de la virgule en cas de plusieurs valeurs  Renvoi de valeur automatique dans le cas d’une seule instruction  Renvoi du résultat avec le mot clé « yield » dans le cas de plusieurs instructions case valeur -> {instructions;…; yield resulat;} 34. Les tableaux sont des structures de données regroupant plusieurs valeurs de même type. Une fois fixée, la taille d’un tableau ne peut changer. 35. Pour redimensionner un tableau, il faut : 1) Créer un nouveau tableau d'une nouvelle dimension. 2) Copier les éléments de l'ancien tableau vers le nouveau System.arraycopy(source, position, destination, position, nombreElements); 36. Un tableau peut contenir des éléments de type primitif et des références d'objet. 37. Les tableaux à deux dimensions sont déclarés comme étant un tableau de tableaux. La taille des tableaux de la seconde dimension peut ne pas être identique pour chaque occurrence. 38. Conversion d’une chaine de caractère en int, long, float ou double : avec la méthode parseType(chaine-à-convertir). L’instruction de conversion doit être obligatoirement être mise dans un bloc try/catch. String ch = "10"; try { 3 int x=Integer.parseInt(ch); } catch (Exception e) { System.out.println("erreur :" + e.getMessage()); } 39. Conversion des types simples en chaîne de caractère : 1) Concaténation avec une chaîne vide : String ch=""+10 ; 2) La méthode valueOf() : int x = 10; String n = new String(); n = n.valueOf(x); 40. Une méthode est un sous-programme qui permet d'effectuer une tâche, composée d’une signature (visibilité, type de retour, nom, paramètres) et un corps. 41. La méthode main constitue le point d’entrée pour l’exécution, c’est une méthode de classe, le tableau args permet de recueillir des arguments en ligne de commande. public static void main (String[] args) 42. Une énumération est un ensemble fini de constantes numériques, le nom de l'énumération précède toujours ses constantes sauf dans Switch. 43. Une classe est une collection composée des attributs (membres données) et des méthodes (membres fonctions). Une classe peut être considérée comme un plan à partir duquel on crée une ou plusieurs maisons qui sont des objets. 44. Pour pouvoir utiliser une classe il faut créer un objet, appelée instance. Il est caractérisé par un état (champs) et un ensemble d’opérations décrivant son comportement (fonctionnalités). 45. Un objet est une instance (anglicisme signifiant « cas » ou « exemple ») d’une classe et est référencé par une variable ayant un état (ou valeur). 46. Pour créer un objet, il est nécessaire de déclarer une variable dont le type est la classe à instancier, puis de faire appel à un constructeur de cette classe. 47. Toute variable désignant un objet est un pointeur. 48. Le passage d’objets comme paramètres d’une méthode est toujours un passage par référence. Le passage de variables primitives comme paramètres est toujours un passage par valeur. 49. Chaque type primitif possède une classe qui encapsule un attribut du type primitif.  Par exemple, la classe Integer encapsule un attribut de type int et permet ainsi d’effectuer des opérations de traitement et des manipulations qui seraient impossibles sur une simple variable de type int. 50. Un constructeur est une méthode spéciale qui sert à initialiser les attributs (après réservation de la mémoire) d’un objet lors de sa création. 51. Le mot clé this n’a pas besoin d’être instancié et s’utilise comme une variable désignant l’objet courant, il est également utilisé pour faire appel à un constructeur de l’objet courant. 52. S’il n’y a pas de constructeur, Java génère un constructeur vide sans paramètre qui initialise les champs à 0, +0.0, false, null. 53. La première instruction exécutée par tout constructeur est le constructeur (sans paramètre) de la classe Object. 54. Un destructeur est une méthode qui libère la mémoire allouée par les constructeurs. En java, cette fonction est prise en charge automatiquement par le Garbage Collector. Pour les traitements avancés on utilise la méthode finalize () de la classe Object. 55. La classe Object est l’ancêtre de toutes les autres classes, elle n’a pas de classe mère. Toute méthode ayant un paramètre de type Object accepte lors de l’appel un paramètre de n’importe quelle classe. Ses méthodes (à redéfinir) : - toString () : représente un objet sous forme d'une chaîne de caractères. 4 - equals (Object) : compare les références de deux objets, pour les comparer structurellement il faut redéfinir la méthode. - getClass () : retourne un objet, instance d’une classe particulière Class. - getName() : retourne le nom de la classe. - clone () : méthode déclarée native. - hashCode () - finalize () 56. Il existe une classe appelée Objects composée de la plupart des méthodes que nous retrouvons dans la classe Object mais statiques. 57. La programmation orientée objet permet de concevoir une application en terme d’objets qui interagissent, on s’intéresse à la fonctionnalité d’un objet avant de s’intéresser à sa mise en œuvre. C’est une méthodologie centrée sur les données. 58. La programmation impérative permet de concevoir une application en termes de structures de données et de méthodes. 59. L’encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d’une structure en cachant l’implémentation de l’objet, c’est la possibilité de ne montrer de l’objet que ce qui est nécessaire à son utilisation. 60. Les avantages de l’encapsulation sont :  Simplification de l’utilisation des objets,  Meilleure robustesse du programme,  Simplification de la maintenance globale de l’application. 61. Il est interdit de connaître l'état interne d'un objet les méthodes garantissent que l'objet est dans un état valide jamais le « monde » extérieur. 62. Principe de David Parnas : Une classe doit rendre visible ce qui est nécessaire pour manipuler ses instances et rien d'autre. L'implémentation d'une méthode doit utiliser ce qui est nécessaire au traitement qu'elle réalise et rien d'autre. 63. Chaque entité (classe, champ, méthode ou constructeur) possède un niveau d’encapsulation, définit à partir d’où dans le programme une entité est visible. 64. Un champ de classe est un champ précédé du static, c’est une variable globale indépendante d’une instance. 65. En Java, il existe deux périmètres de visibilité : les classes et les paquetages. 66. La redéfinition d'une méthode doit avoir une visibilité au moins égale à celle de la méthode de la super-classe. Cette contrainte est due à la liaison dynamique. 67. Une méthode abstraite ne peut être privée car elle doit être implémentée dans une sous-classe. Elle peut être implémentée par une méthode ayant une visibilité plus large qu'elle-même. 68. La surcharge (overloading) est un mécanisme qui permet de réutiliser le nom et le type de retour d’une méthode déjà définie, pour une autre méthode qui en différera par ses paramètres. 69. L’héritage est le fait d’organiser les classes de manière hiérarchique. Dans Java, la relation d’héritage est unidirectionnelle et unique. 70. L’héritage introduit la notion de substituabilité entre la classe enfant et la classe parente. Une classe enfant a son propre type mais partage également le même type que sa classe parente. 71. L'emploi de l'héritage conduit à un style de programmation par raffinements successifs et permet une programmation incrémentielle effective. 72. Dans un constructeur en héritage, il est possible d’initialiser un attribut par appel d’une méthode. Il faut donc bloquer la redéfinition de la méthode appelée pour ne pas avoir un comportement anormal : rendre la classe final, la méthode final ou privée ou static. 5 73. Dans un constructeur en héritage, il n'est pas possible d'utiliser à la fois un autre constructeur de la classe this () et un constructeur de la classe mère super (). 74. La redéfinition (overriding), appelée polymorphisme par substitution, est le fait de pouvoir redéfinir une méthode d'une classe mère dans une classe enfant.  En la précédant par l’annotation @Override,  Avec la même signature et différent contenu. 75. L’appel au constructeur d’une classe mère doit toujours se situer dans un constructeur et toujours en tant que première instruction. 76. Si aucun appel à un constructeur d’une classe mère n’est fait, le constructeur fait appel implicitement à un constructeur vide de la classe mère (comme si la ligne super () était présente). 77. Si aucun constructeur vide n’est accessible dans la classe mère, une erreur se produit lors de la compilation. 78. Le polymorphisme se réfère à la capacité des objets d'une classe à prendre plusieurs formes c’est la faculté attribuée à un objet d’être une instance de plusieurs classes. 79. Le polymorphisme permet d’utiliser l’héritage comme un mécanisme d’extension en adaptant le comportement des objets. 80. En Java, le polymorphisme est réalisé grâce à la redéfinition de méthode et à l'utilisation d'une référence de type de classe parente pour faire référence à une classe fille. 81. Le mécanisme de la recherche dynamique (Late Binding ou Dynamic Binding) sert à la mise en œuvre du polymorphisme. C’est le fait que seulement à l’exécution que la machine virtuelle détermine la méthode à invoquer selon le type effectif de l’objet référencié à ce moment-là. 82. Si le type d’arrivée correspond à un type parent, on parle de sur classement ou upcasting (transtypage vers le haut). En java, cette opération est implicite et constitue la base du polymorphisme. 83. Si le type d’arrivée correspond à un type enfant, on parle de déclassement ou downcasting (transtypage vers le bas). C’est le fait de convertir une référence surclassée pour libérer certaines fonctionnalités cachées par le sur classement. En java, cette conversion n'est explicite, elle doit être forcée par l'opérateur de cast : (nomClasse). 84. Le concept de classe abstraite se situe entre celui de classe et celui d’interface. C’est une classe que n’est qu’une généralisation et non pas une classe métier, elle ne peut pas être directement instanciée (par appel à new plus constructeur). 85. Une classe abstraite peut contenir des variables, des méthodes implémentées et des signatures de méthode à implémenter (méthodes abstraites, sans corps). Comme une interface ne peut contenir de variables, on utilise une classe abstraite. 86. Une classe abstraite peut implémenter (partiellement ou totalement) des interfaces et peut hériter d’une classe ou d’une classe abstraite. 87. Si une classe non abstraite hérite d’une classe abstraite, elle doit forcément redéfinir les méthodes abstraites de la classe mère. Si non elle doit être abstraite si au moins une des méthodes abstraites héritées reste abstraite. 88. Une interface décrit un ensemble de signatures de méthodes, sans implémentation, qui doivent être implémentées dans toutes les classes qui implémentent l’interface. Ce sont des services (méthodes abstraites). 89. Une interface ne contient que des membres publics ou sans modificateur de visibilité. Elle peut contenir des constates (sans final), des méthodes abstraites (sans abstract), des méthodes par défaut (default) et des méthodes statiques (static). 6 90. Une interface peut hériter d’une autre interface, l’instanciation est impossible pour une interface, elle est abstraite. 91. Une classe est obligée de redéfinir toutes les méthodes abstraites de l’interface implémentée sauf si elle est une classe abstraite. 92. L'interface Cloneable est ce qu'on appelle une « interface de marqueur », elle n'a aucune méthode et est utilisée pour marquer certaines classes. 93. Pour cloner un objet il faut : 1) Redéfinir la méthode clone (). 2) Implémenter l’interface Cloneable pour éviter CloneNotSupportedException. 94. Une classe générique est une classe qui admet de plusieurs paramètres, elle peut être utilisée pour des objets de différents types. 95. Pour utiliser une classe générique, il faut l’instancier : Exemple entier = new Exemple < > (4) ; 96. Une exception est une erreur qui se produit lors de l’exécution d’un programme, c’est un objet qui peut être émis par une méthode si un événement d’ordre “exceptionnel” (les erreurs rentrent dans cette catégorie) se produit. 97. Le langage Java offre un mécanisme qui permet de : 1) Isoler la partie du code générant l'erreur. 2) Dissocier la détection et le traitement de cette erreur. 98. Lorsqu’une erreur est détectée, un objet Exception est créé, on dit qu'une exception est levée. La détection d’une erreur est faite grâce au code suivant : throw new ClasseDeLexception () 99. Lorsqu’une exception est traitée, on dit qu’elle est capturée. On capture une exception avec le bloc try {} catch (Exception e) {} ; 100. Dans catch multiples il faut commencer par les exceptions les plus précises en premier sinon un message d'erreur est émis par le compilateur. 101. Pour forcer le compilateur à exécuter certaines instructions, qu’il y ait exception ou non, ils doivent être placées dans un bloc finally. Il est exécuté avant que l’exception soit capturée. 102. Un objet Exception fournit une description de l’erreur qui s’est produite, son rôle est :  Signaler une erreur s’est produite.  Fournir un message décrivant l’erreur.  Fournir le numéro de ligne où l’erreur s’est produite.  Fournir l’enchaînement des appels des fonctions où l’erreur s’est produite (pile des appels ou Stack Trace). 103. Java dispose d’un ensemble d’exceptions prédéfinies, la plupart appartiennet au package java.lang et héritent de la classe RuntimeException (Unchecked Exceptions), par exemple : ArithmeticException, ArrayIndexOutOfBoundsException, FileNotFoundException, AWTException (lors d’opérations de type graphique), IOException (lors d’opérations d’e/s), NullPointerException, ClassCastException. 104. Pour gérer des erreurs personnalisées, il faut définir une classe qui hérite de la classe Exception. 105. La déclaration try avec ressources ou try-with-ressources permet de simplifier la gestion des ressources en fermant automatiquement les ressources qui implémentent l’interface AutoCloseable ou Closeable. Syntaxe : try (TypeDeRessource ressource1 = new TypeDeRessource(); TypeDeRessource ressource2 = new TypeDeRessource()) { 7 // Code utilisant les ressources } catch (TypeException e) { // Code pour gérer les exceptions } Exemple : try (Scanner scanner = new Scanner(System.in)) { System.out.print ("Entrez votre nom: "); String nom=scanner.next (); System.out.println ("Bonjour: " + nom); } catch (Exception e) { System.err.println ("Erreur : " + e.getMessage()); } 106. Il y a deux façons de chaîner deux exceptions : 1) Utiliser le constructeur de Throwable qui attend un paramètre Throwable représentant la cause. catch (Exception1 e1) { …. throw new Exception2(e1); } 2) Utiliser la méthode initCause () d’une instance de Throwable. catch (Exception1 e1) { throw (Exception2) new Exception2().initCause(e1); } 107. Une collection est un objet qui contient un ensemble d’éléments de type Objet. 108. Une collection normale stocke des objets de différentes classes :  Lors du stockage ils sont transformés en type Object.  Lors de la récupération, ils doivent être caster à leurs classes d’origine. 109. Une collection générique permet le stockage que des objets de la même classe, elle n’accepte pas les types primitifs :  Lors du stockage, ils conservent leurs types d’origine.  Lors de la récupération, pas besoin de cast. 110. Méthodes de l’interface Collection : - int size () - Object[] toArray () - boolean add (Object) boolean addAll (Collection) - boolean remove (Object) boolean removeAll (Collection) - boolean contains (Object) boolean isEmpty () 111. L’interface Collection se compose de trois sous-familles : 1) Interface Set : implémentée par sous-famille des ensembles, n’accepte pas les doublons même le null. Parmi ses classes connues :  HashSet : utilise un algorithme de hachage pour accéder à ses éléments sans ordre. Set n = new HashSet () ;  TreeSet : tri ses éléments pendant l’ajout, ne permet que des types hétérogènes. Set n = new TreeSet < > () ; 2) Interface List : implémentée par implémentée par la sous-famille des listes, collection ordonnée des éléments où chaque élément est indexé par un indice. Accepte les doublons et les nulls. Parmi ses classes connues :  ArrayList List liste = new ArrayList(); List liste = new ArrayList (); 8  Stack Stack pile= new Stack(); Stack pile= new Stack ();  SortedList 3) Interface Queue : sous-famille des files. Parmi ses connues :  LinkedList : implémentée sous forme d’une liste chaînée. Queue file = new LinkedList (); 112. Un Map représente une relation binaire surjective : chaque élément d’un Map est une paire qui met en relation une clé à une valeur. 113. Un objet Map décrit des mapping des clés (keys) aux valeurs (values), chaque clé est unique, mais on peut avoir des doublons pour les valeurs. 114. Map n’est pas une sous interface de Iterable, donc on ne peut pas parcourir un Map avec une boucle for each. Parmi ses classes connues :  HashTable : utilise une table de hachage pour lier les clés aux valeurs.  HashMap : équivalente à HashTable sauf qu'elle n'est pas synchronisée.  Properties : les clés et les valeurs sont de type String Map générique Map n = new HashMap (); 115. L’interface Enumeration permet le parcours séquentiel de collections, définit deux méthodes : 1) Boolean hasMoreElements () 2) Object nextElement () : retourne l'objet suivant de l'énumération. 116. L’interface Iterator définies trois méthodes : Iterator it = collectionNom.iterator (); 1) Boolean hasNext () 2) Object next () 3) Void remove () 117. L’interface ListIterator définies huit méthodes : ListIterator litr = nom.listIterator (); 1) Boolean hasNext () / hasPrevious () 2) Object next () / previous () 3) Int nextIndex () / previousIndex () 4) Void add (Object) 5) Void set (Object) : remplace le dernier élément retourné par l’objet en paramètre. 118. La boucle For des collections permet d’itérer sur un tableau ou une collection par leur contenu. for (type variable : table/collection) 119. Certaines collections permettent le tri de leurs éléments. Pour cela les interfaces Comparable et Comparator peuvent être utilisées. 120. L’interface Comparable impose l’ordre naturel aux classes qui l’implémente, elle est composée de la méthode : @Override Public int compareTo (Object o) {} 121. Les classes String, Date, et Integer implémentent l’interface Comparable. 122. L’interface Comparator permet de spécifier un ordre externe (un ordre valable juste à un moment donné), elle est utilisée pour les objets qui n’implémentent pas l’interface Comparable. Elle est composée de la méthode : @Override Public int compare (Object o1, Object o2) {} Les objets à trier n’implémentent pas cette interface, c’est des classes externes destinées de comparaison qui le font. 123. La classe ArrayList dispose d’une méthode sort, elle prend en paramètre un objet Comparator, si on lui passe null elle utilise plutôt l’interface Comparable. list.sort (); 9 124. Une collection générique d'objets fille ne peut pas être affectée à une collection d'objets mère. 125. JDBC (Java DataBase Connector) est un API chargée de communiquer avec la base de données. 126. JDBC travaille avec toutes les bases de données de la même façon quel que soit leur fournisseur. Il suffit de télécharger la bibliothèque qui assure la communication entre Java et la base de donnée, cette biblio s’appelle : Driver ou Pilote ou Connecteur. 127. Les classes et interfaces les plus usuelles sont les suivantes: 1) DriverManager : classe, charge et configure le driver. 2) Connection : interface, établie la connexion et l’authentification à la base de données. 3) Statement : interface, contient la requête SQL et la transmet à la base de données. Possède deux méthodes : ResultSet rs = st.executeQuery ("sélection"); int n = st.executeUpdate ("insertion/suppression/maj") ; L’entier n représente le nombre d’occurrences impactés par la mise à jour. 4) PreparedStatement : interface, statement paramétré. Les paramètres sont représentés par (?) et doivent être spécifiés avant l'exécution. 5) ReseultSet : interface, résultat d’une requête de sélection. C’est un ensemble d'enregistrements constitués de colonnes (dont la numérotation commence à 1) contenant les données. Durant l’exécution, l’objet ResultSet ne se positionne pas sur le premier enregistrement mais juste avant dans une zone nommée GAP. Principales méthodes : a) Next () : le curseur se place initialement juste avant le premier enregistrement. rs.next () b) getString (int/string) : retourne le contenu de la colonne, dont le num/nom est passé en paramètre, sous forme d’une chaîne de caractères. c) getInt (int/string) : sous forme d’entier. d) getFloat (int/string) e) getDate (int/string) f) close () : rs.close () ; 128. Etapes d’interaction avec une base de données : 1) Chargement du pilote MySQL : Class.forName (com.mysql.cj.jdbc.Driver); 2) Etablissement de la connexion avec un objet Connection créé grâce au DriverManager Connection con = DriverManager.getConnection (url, login, password); 3) Création des objets encapsulant les requêtes. 4) Execution des requêtes : Statement st = con.createStatement(); PreparedStatement p = con.prepareStatement (rqt); 5) Parcours des résultats dans le cas d’une requête de sélection. 6) Fermeture des objets résultats, requêtes et connexion : rs.close () ; st.close () ; con.close () ; 129. Une transaction est un ensemble de requêtes qui doivent s'exécuter d'un seul bloc. Si une requête de cet ensemble échoue alors toutes les autres sont annulées. 130. La validation automatique peut être désactivée grâce à la méthode setAutoCommit () con.setAutoCommit (false) ; 131. Un point de sauvegarde, est un point de restauration logique dans une transaction. 1) SavePoint point = con.setSavePoint ("Point") 10 2) con.releaseSvaePoint (point) 132. Accès aux métadonnées : 1) ResultSetMetaData : informations sur les types de données d’un ResultSet. ResultSetMetaData meta = rs.getMetaData (); Nombre de colonnes : int nbCl = meta.getColumnCount (); Nom d’une colonne : String nomCl = meta.getColumnName (numDeCol); Nom de la table : String nomTbl = meta.getTbleName (numDeCol); Si une colonne est nulle : isNullable (); 2) DatabaseMetaData : informations à propos de la base de données en utilisant un objet Connection. DatabaseMetaData meta = con.getMetaData (); 133. Une interface fonctionnelle est une interface qui ne comporte qu’une seule méthode abstraite. Lors de la création, on peut ajouter l’annotation @FunctionalInterface. 134. Interface Function : interface fonctionnelle unitaire représente une fonction à un seul argument. Fonction n = arg -> traitement ; Méthodes : 1) typeRetour apply (typeArg arg) : méthode abstraite. 2) Identity () : méthode statique, retourne une fonction Function qui renvoie son argument d’entrée. 3) andThen (Function

Use Quizgecko on...
Browser
Browser