Jour 1 - Université Laval

publicité
Université Laval
Formation Java
Novembre 2001
Jour 1
Jour 1
2
Jour 1
3
Plan
• Pourquoi Java?
• Types de données
• Structures de contrôle
• Passage de paramètres
• Héritage
• Visibilité
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)
Compiler
(PowerPC)
Binary File
(PowerPC)
Compiler
(SPARC)
Binary File
(SPARC)
Your Code
Jour 1
9
3
Java Compiler
(Pentium)
Your Code
Java Compiler
(PowerPC)
Java Interpreter
(Pentium)
Java Bytecode
(PlatformIndependent)
Java Interpreter
(PowerPC)
Java Interpreter
(SPARC)
Java Compiler
(SPARC)
Jour 1
Java source
code
10
Across the
Internet
using HTML
Java
bytecode
Java compiler
Java
interpreter
Local computer
Web browser
Bytecode
interpreter
Java
interpreter
Machine
code
Remote computer
Jour 1
11
Types
• La taille des types est fixe dans Java
• Tous les types sont signed
Jour 1
12
4
Types
boolean
Java
C++
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
Jour 1
15
Types
• Java est fortement typé
• en C++: int i;
short j;
i = j;
• en Java, il faut caster: int i;
Short j;
i = (int) j;
5
Déclarations
• Variables (similaires):
int entier;
• Constantes:
java: final int entier = 0;
C++: const intentier = 0;
Jour 1
16
Structures de contrôle
• Conditionnelles:
If
switch
• Boucles:
Pas d’instruction goto en Java
For
while
do while
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
• Java: valeurs
références
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
Default
Visible dans un package
Methodes et
variables
•
•
Public
Visible Partout
•
N/A
•
Protected
•
Private
N/A
•
•
Héritées dans le même
package
Accessibles dans le
même package
Accessibles partout
Héritées par les sous
classes
Accessibles dans le
même package
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();
package Two
class Another1
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
HTML
Contenue de l’information
Présentation du contenu
Tags définis par le user
Tags fixes
Balises de début et de fin
<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
Attributs avec quote ou
double quote
Noms d’éléments et
d’attributs sont 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
Jour 1
45
Applications de XML
• Intégration d’applications
• Définition d’ontologies
• Commerce électronique
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
<p>Voici un autre
paragraphe
• XML: <p>This is a paragraph</p>
<p>This is another
Jour 1
49
paragraph</p>
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:
Sans attributs:
<person sex="female ">
<person>
<firstname >Anna</firstname>
<sex>female </sex>
<lastname>Smith</lastname>
<firstname >Anna</firstname>
</person>
<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 note
• 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-value>
• 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 #REQUIRED>
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;&copyright;</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;&copyright;</author>
Jour 1
81
27
Téléchargement