Université Laval Formation Java Novembre 2001 Jour 1 Jour 1 2 Plan Pourquoi Java? Types de données Structures de contrôle Passage de paramètres Héritage Visibilité Jour 1 3 1
Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé par Sun Déclaration officielle en Mai 1995 Jour 1 4 Origines de Java Développé à partir de C et C++ Pallier aux problèmes de C++ Pointeurs (sécurité) Gestion de la mémoire Affectations... Jour 1 5 JDK JDK: Java Development Kit Environnement de développement Java Version 1.3 http://www.sun.com Jour 1 6 2
Pourquoi Java? Indépendant de la plate-forme Langage objet Programmation concurrente Programmation Internet Jour 1 7 Indépendant de la plate-forme Code compilé vs. code exécutable Jour 1 8 Compiler (Pentium) Binary File (Pentium) Your Code Compiler (PowerPC) Binary File (PowerPC) Compiler (SPARC) Binary File (SPARC) Jour 1 9 3
Java Compiler (Pentium) Java Interpreter (Pentium) Your Code Java Compiler (PowerPC) Java Bytecode (Platform- Independent) Java Interpreter (PowerPC) Java Compiler (SPARC) Java Interpreter (SPARC) Jour 1 10 Java source code Across the Internet using HTML Java compiler Java bytecode Java interpreter Local computer Bytecode interpreter Machine code Web browser Java interpreter Remote computer Jour 1 11 Types La taille des types est fixe dans Java Tous les types sont signed Jour 1 12 4
Types Java C++ boolean 1 bit 8 bits char 16 bits 8 bits byte 8 bits short 16 bits 16 bits Jour 1 13 Types Java C++ int 32 bits 16 bits* long 64 bits 32 bits float 32 bits 32 bits double 64 bits 64 bits Long Double 80 bits Jour 1 14 Types Java est fortement typé en C++: int i; short j; i = j; en Java, il faut caster: inti; Short j; i = (int) j; Jour 1 15 5
Déclarations Variables (similaires): int entier; Constantes: java: final intentier = 0; C++: const intentier = 0; Jour 1 16 Structures de contrôle Conditionnelles: If switch Boucles: For while do while Pas d instruction goto en Java Jour 1 17 Structure if if (condition) {bloc1} else {bloc2} condition: expression logique Exemple: If (vosventes >= 2*cible { performance = excellent ; bonus = 1000; } Jour 1 18 6
Structure switch switch (choix) { case variable1 : instructions break; case variable2 : instructions break;. } Jour 1 19 Boucle for for (expression1; expression2; expression3) { instructions } for (int i = 10; i > 0; i --) { n = n + i; } Jour 1 20 Boucle while while (condition) { instructions } while (I > 0) { n = n + i i --; } Jour 1 21 7
Boucle do while do { instructions } while (condition); do { n = n + i i --; } while (i > 0); Jour 1 22 Classes Mot clé: class Constructeur mais pas de destructeur Figure int périmètre; int surface; float calculper( ); float calculsur( ); Jour 1 23 Héritage Java: l héritage est public class Exemple extends Exercise C++: class Exemple: public Exercise Classe final: final class Exemple on ne peut instancier la classe Jour 1 24 8
Héritage Pas d héritage avec des classes final C++: public, protected ou private Java: public Jour 1 25 Classe Object Classe racine class Exemple = class Exemple extends Object Référence un objet de n importe quel type Jour 1 26 Classe Object Monster FlyingMonster WalkingMonster Jour 1 27 9
Paramètres C++ : pointeurs références Java: valeurs références valeurs Jour 1 28 Paramètres Valeur: void calculersomme (int x, int y) Référence: void parsefile (File f) Pointeurs: void remplirchaine(element *q) Jour 1 29 Surcharge Surcharge de n importe quelle méthode Pas de surcharge des opérateurs En C++ et Java: fonctions homonymes: respecter la valeur de retour Jour 1 30 10
Visibilité Modifier Classes et interfaces Methodes et variables Default Visible dans un package Héritées dans le même package Accessibles dans le même package Public Visible Partout Accessibles partout Protected N/A Héritées par les sous classes Accessibles dans le même package Private N/A Non héritées Non accessibles Jour 1 31 Visibilité package One class p public a() protected b() c () private d() P x = new P(); C2 y = new C1(); C2 z = new C2(); class Another1 package Two class C1 class C2 class Another2 Jour 1 32 Classes abstraites Fonctions non toutes implantées Mot clé: abstract C++ : pure virtual methods Jour 1 33 11
Classe Abstraite Tree Class (Abstract) Tree Tree Tree Tree Jour 1 34 Polymorphisme C++ : méthodes virtuelles pures Par défaut en Java liaison dynamique (late binding) Jour 1 35 Plan XML XML vs HTML Objectifs de XML Applications de XML Structure d un document XML Les éléments d une DTD Jour 1 36 12
XML vs HTML XML : décrit des langages de balisage XML est un méta-langage XML : moyen pour définir des tags et leurs relations XML : documents structurés sur le Web Jour 1 37 XML vs HTML <table> <tr><td>empno</td><td>ename</td><td>job</td></tr> <tr><td>7654</td><td>martin</td><td>salesman</td></tr> <tr><td>7788</td><td>scott</td><td>analyst</td></tr> </table> Jour 1 38 XML vs HTML <?xml version="1.0"?> <EMPLIST> <EMP> <EMPNO>7654</EMPNO> <ENAME>MARTIN</ENAME> <JOB>SALESMAN</JOB> </EMP> <EMP> <EMPNO>7788</EMPNO> <ENAME>SCOTT</ENAME> <JOB>ANALYST</JOB> </EMP> </EMPLIST> Jour 1 39 13
XML vs HTML XML Contenue de l information Tags définis par le user Balises de début et de fin Attributs avec quote ou double quote Noms d éléments et d attributs sont case sensitive HTML Présentation du contenu Tags fixes <P> et <B> non pas de balises de fin Navigateurs n ont pas cette contrainte Noms d éléments et d attributs ne sont pas case sensitive Jour 1 40 Objectifs de XML XML : utilisation sans difficulté sur le net XML : soutenir une grande variété d applications XML : compatible avec SGML Jour 1 41 Objectifs de XML Documents facile à traiter (des programmes) Le nombre d options doit être réduit au minimum Les documents devraient être lisibles par l homme Les documents raisonnablement clairs Jour 1 42 14
Objectifs de XML Un document XML devrait être conçu rapidement La conception doit être formelle et concise Création facile de documents XML Jour 1 43 Applications de XML Navigation et applications hétérogènes Distribution des traitements Différentes vues pour différents utilisateurs Communication entre agents Jour 1 44 Applications de XML Intégration d applications Définition d ontologies Commerce électronique Jour 1 45 15
Applications de XML CML (Chemical Markup Langage) MathML (Mathematical Markup Langage) Traitement automatique de données Jour 1 46 Structure d un document XML <?xml version="1.0"?> <note> <to>tove</to> <from>jani</from> <heading>reminder</heading> <body>don't forget me this weekend!</body> </note> Jour 1 47 Structure d un document XML <?xml version="1.0"?> : la version de XML utilisée <note> : la racine du document Les autres éléments sont les enfants de la racine Jour 1 48 16
Structure d un document XML HTML : <p>c est un paragraphe paragraphe <p>voici un autre XML: <p>this is a paragraph</p> paragraph</p> <p>this is another Jour 1 49 Structure d un document XML Les tags sont case sensitive: <Message>This is incorrect</message> : non correcte <message>this is correct</message>: correcte Les tags doivent être correctement imbriqués: HTML: <b><i>ce texte est en gras et italique</b></i> XML: <b><i> Ce texte est en gras et italique </i></b> Jour 1 50 Structure d un document XML Tout document XML doit avoir une racine: <racine> <fils> <sousfils> </sousfils> </fils> </racine> Jour 1 51 17
Structure d un document XML Les attributs d un tag doivent être entre quôtes: <?xml version="1.0"?> <note date="12/11/99"> <to>tove</to> <from>jani</from> <heading>reminder</heading> <body>don't forget me this weekend!</body> </note> Jour 1 52 Structure d un document XML Eléments vs Attributs: Avec attributs: <person sex="female "> <firstname >Anna</firstname> <lastname>smith</lastname> </person> Sans attributs: <person> <sex>female </sex> <firstname >Anna</firstname> <lastname>smith</lastname> </person> Jour 1 53 Structure d un document XML Les attributs ne peuvent pas avoir plusieurs valeurs Les attributs ne décrivent pas une structure Les attributs sont plus difficiles à manipuler par les programmes Jour 1 54 18
Structure d un document XML Pour valider un document XML, il faut une DTD DTD: Definition Type Document Elle doit être référencée dans le document XML: <?xml version="1.0"?> <!DOCTYPE note SYSTEM "InternalNote.dtd"> Jour 1 55 Constituants d une DTD Définir la structure d un document XML DTD interne DTD externe Jour 1 56 DTD interne <?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> </note> Jour 1 57 19
Interprétation de la DTD <!DOCTYPE note : Défini la racine du document <!ELEMENT note (to,from,heading,body)> : défini une balise n Les fils de note sont: to, from, heading, body <!ELEMENT to (#PCDATA)> : déclarer l élément to et informe qu il renferme du texte (#PCDATA) Jour 1 58 DTD externe Déclaration : <?xml version="1.0"?> <!DOCTYPE note SYSTEM "InternalNote.dtd"> <note>.. <note> <!DOCTYPE note SYSTEM "InternalNote.dtd"> : note: est la racine du document InternalNote.dtd: le fichier qui contient la DTD externe Jour 1 59 DTD externe Structure : <?xml version="1.0"?> <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> Jour 1 60 20
Les constituants d u document XML Eléments Tags Attributs Entités PCDATA CDATA Jour 1 61 Eléments Block principal d un document XML Exemple: note, body Il peut contenir d autres éléments, texte ou être vide (br) Jour 1 62 Tags Délimiteurs d éléments Tag de début et Tag de fin pour délimiter le contenu d un éléme <body> corps de texte </body> Jour 1 63 21
Attributs Des informations extra concernant l élément Ils sont placés dans le Tag de début d un élément <img src="computer.gif"> Élément: img Attribut: src, valeur: computer.gif Jour 1 64 PCDATA PCDATA: Parsed Character Data le texte sera parsé Les tags à l intérieur du texte seront parsés Jour 1 65 CDATA CDATA: Character Data Le texte ne sera pas parsé Les tags à l intérieur du texte ne seront pas parsés Jour 1 66 22
Déclaration d éléments <!ELEMENT element-name (element-content)> Un élément déclaré vide: <!ELEMENT element-name (EMPTY)> exemple: <!ELEMENT img (EMPTY)> Jour 1 67 Déclaration d éléments Élément avec des données: <!ELEMENT element-name (#CDATA)> ou <!ELEMENT element-name (#PCDATA)> ou <!ELEMENT element-name (ANY)> exemple:<!element note (#PCDATA)> Jour 1 68 Déclaration d éléments Élément avec des sous éléments: <!ELEMENT element-name (child -element-name,...)> exemple: <!ELEMENT note (to,from,heading,body)> Les sous éléments doivent apparaître dans le même ordre Jour 1 69 23
Déclaration d éléments <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#CDATA)> <!ELEMENT from (#CDATA)> <!ELEMENT heading (#CDATA)> <!ELEMENT body (#CDATA)> Jour 1 70 Déclaration d éléments Une seule occurrence d un sous élément: <!ELEMENT element-name (child -name)> Exemple: <!ELEMENT note (body)> Au minimum une occurrence: <!ELEMENT element-name (child -name+)> exemple<!element note (body+)> Jour 1 71 Déclaration d éléments Zéro ou plusieurs occurrences d un sous élément: <!ELEMENT element-name (child -name*)> Exemple: <!ELEMENT note (body*)> Zéro ou une occurrence: <!ELEMENT element-name (child -name?)> exemple<!element note (body?)> Jour 1 72 24
Déclaration d éléments <!ELEMENT note (to+,from,header,body*,#pcdata)> Au moins un to Un seul header Zéro ou plusieurs body et du texte qu on peut parser Jour 1 73 Déclaration d attributs Un attribut est déclaré avec la déclaration ATTLIST <!ATTLIST element-name attribute-name attribute-type default-va Type: CDATA, ID, énumération, etc Valeur par défaut: #REQUIRED, #FIXED value, etc Jour 1 74 Déclaration d attributs DTD exemple: <!ELEMENT square EMPTY> <!ATTLIST square width CDATA "0"> XML exemple: <square width="100"></square> Jour 1 75 25
Déclaration d attributs Valeur par défaut: Syntaxe: <!ATTLIST element-name attribute-name CDATA "default-value DTD exemple : <!ATTLIST payment type CDATA "check"> XML exemple : <payment type="check"> Jour 1 76 Déclaration d attributs Attribut obligatoire: Syntaxe: <!ATTLIST element-name attribute_name attribute-type #REQUIR DTD exemple : <!ATTLIST person number CDATA #REQUIRED> XML exemple : <person number="5677"> Jour 1 77 Déclaration d attributs Attribut énumératif: Syntaxe: <!ATTLIST element-name attribute-name (eval eval..) default-value> DTD exemple : <!ATTLIST payment type (check cash) "cash"> XML exemple : <payment type="check"> or <payment type="cash"> Jour 1 78 26
Les entités Remplacer un texte qui se répète Entités internes Entités externes Jour 1 79 Les entités internes Syntaxe: <!ENTITY entity-name "entity-value"> DTD Exemple : <!ENTITY writer"jan Egil Refsnes."> <!ENTITY copyright "Copyright XML101."> XML exemple: <author>&writer;©right;</author> Jour 1 80 Les entités externes Syntaxe: <!ENTITY entity-name SYSTEM "URI/URL"> DTD Example : <!ENTITY writer SYSTEM "http://www.xml101.com/entities/entities.xml"> <!ENTITY copyright SYSTEM "http://www.xml101.com/entities/entities.dtd"> XML exemple: <author>&writer;©right;</author> Jour 1 81 27