Java 1 Lionel Seinturier
Java
Lionel Seinturier
Université des Sciences et Technologies de Lille
6/03/05
Java 2 Lionel Seinturier
Introduction
Objectifs de Java
• un langage simple, OO, portable
• philosophie WORA ("Write Once, Run Anywhere")
1 source s'exécute à l'identique sur +sieurs CPU/OS
(Solaris, Linux, Win xx, MacOS) pourvu d'une machine virtuelle (VM)
Principe
source
.java bytecode
.class
compil. exécution
VM
plate-forme, à partir d'un .java
- .class obtenu par compilation identique
- .class s'exécute à l'identique
Contrepartie
.class - performant code natif (.exe)
mais ...
Java 3 Lionel Seinturier
Introduction
Historique
1991 J. Gosling, B. Joy, A. Van Hoff : OAK (électronique grand public)
1993 JDK 1.0, lien avec Web (applet)
1996 Java Beans
1997 JDK 1.1, Enterprise Java Beans, JavaCard, Java OS
1998 Java 2 (JDK 1.2, 1.3, 1.4)
2004 Java 5 (JDK 1.5) : annotations, types génériques, enum, auto-boxing
En cours de développement
2006 Java 6 (beta 2) : amélioration API, intégration SGBD
2007 ? Java 7 : VM multi-langage Java, JavaScript, PHP, Python, …
Nombreuses technologies pour les applications client/serveur
JSP, servlet, JDBC, JMS, JavaIDL, JavaMail, RMI, JCE, JAAS, JNDI, JTS, JTA,
JavaCard, JMX, JMI, ......
Java 4 Lionel Seinturier
Introduction
Disponibilité
3 éditions
Java SE (Standard Edition) "le" JDK (compilateur + VM + librairies)
Java EE (Enterprise Ed.) serveur pour des applications d'entreprise
client/serveur (nécessite Java SE)
Java ME (Micro Ed.) VM + librairies pour des systèmes embarqués
(PDA, tel., ...)
Outils
- IDE Eclipse, JBuilder, VisualAge, JDeveloper, Forte, NetBeans, ...
- VM Jikes RVM, Kaffe, kissme, LaTTe, SableVM, ...
- compilateur Jikes, GCJ, KJC, Espresso, Manta, …
- manipulation bytecode ASM, BCEL, BAT, CFParse, Jasmin, Javassist, …
- ... nombreux autres
Java 5 Lionel Seinturier
Plan
1. Origines
2. Principes
3. Premiers exemples
4. Eléments syntaxiques de base
5. Classes
6. Héritage
7. Classes abstraites
8. Relation de typage
9. Exceptions
Java 6 Lionel Seinturier
1. Origines
Origines de Java
Influence : Simula, Smalltalk, C++
Analogies
- modèle d'objets à la C++
- instructions à la C++
- typage à la C++
-syntaxe à la C++
Mais
- pas d'héritage multiple
- gestion des erreurs + rigoureuse
- règles de conversion simplifiées
- simple et rigoureux
Java 7 Lionel Seinturier
2. Principes
3 principes
• langage basé sur des classes et objets
• interactions entre objets par échanges de messages
•héritage
Java 8 Lionel Seinturier
2. Principes
Principe 1 : langage basé sur des classes et objets
Classe : données (variables) et traitements (méthodes) manipulant les données
Objet : instance de classe
Programmation procédurale vs programmation objet
Compte p1, p2;
initialiser(p1,15);
initialiser(p2,20);
crediter(p1,5);
debiter(p2,5);
Compte p1, p2;
p1 = new Compte(15);
p2 = new Compte(20);
p1.crediter(5);
p2.debiter(5);
données procédures objets
Java 9 Lionel Seinturier
2. Principes
Principe 2 : interactions par échanges de messages
= invocation de méthodes entre objets
Toutes les méthodes d'une classe sont-elles invocables de l'extérieur ?
Öinterface de la classe (= ens. des méthodes invocables de l'extérieur)
Les interf. définissent seulement des déclarations (nom+param.) de méthodes
pas de code
clavier1
Clavier
uc1
UC
ecran1
Ecran
instance de
ref
Java 10 Lionel Seinturier
2. Principes
Principe 3 : héritage
Construction d'une classe par rapport à une autre
Öcompléter/étendre/spécialiser une classe existante
- ajout de données et/ou de méthodes
- modification de méthodes
Véhicule aérienVéhicule terrestre
Voiture
Véhicule
Véhicule aquatique
Bateau Radeau
Voiture amphibie
Java 11 Lionel Seinturier
3. Premiers exemples
Un programme simple
class Point2D {
private int abs;
private int ord;
public Point2D(int x,int y) { abs=x; ord=y; }
public Point2D() { abs=0; ord=0; }
public void move(int dx,int dy) { abs+=dx; abs+=dy; }
public void where() { System.out.println("x="+x+"; y="+y);
}
public class Test {
public static void main( String[] args ) {
Point2D p1, p2;
p1 = new Point2D();
p2 = new Point2D(10,20);
p1.where();
p1.move(10,10);
p1.where();
}
}
Java 12 Lionel Seinturier
3. Premiers exemples
Un programme simple avec héritage
class Point2DColor extends Point2D {
private int color;
public Point2DColor(int x,int y,int c) { super(x,y); color=c; }
public Point2DColor() { super(0,0); color=0; }
public void paint(int c) { color=c; }
public void whichColor() { System.out.println("c="+c); }
}
Java 13 Lionel Seinturier
3. Premiers exemples
Conventions d'écriture
Règles "communautaire" d'écriture des programmes Java
améliore la lisibilité des programmes
• noms de classe, d'interface
- commence par une majuscule puis minuscules
- majuscule pour chaque partie d'un nom composé (ex. EventListener)
• noms de variables, méthodes
- commence par une minuscule
- puis majuscule pour chaque partie d'un nom composé (ex. baseObject)
• 1 classe par fichier
- nom de fichier identique nom classe
• noms de package en minuscules (ex. javax.transaction)
Java 14 Lionel Seinturier
3. Premiers exemples
Outils du JDK
Compilateur javac javac MaClasse.java
Öautant de fichiers .class qu'il y a de classes définies dans MaClasse.java
VM java MaClasse
Öexécution de la méthode main de la classe MaClasse
Options javac
-d répertoire d'écriture des .class (par défaut répertoire courant)
-classpath lib (.jar) ou rép contenant des .class nécessaires à la compil.
ex Unix -classpath /tmp/foo.jar:/home/classes:../classes
Win -classpath \tmp\foo.jar;\home\classes;..\classes
alternativement var. d'environnement CLASSPATH du shell
Options java
-classpath idem javac
Java 15 Lionel Seinturier
4. Eléments syntaxiques
Méthode
Bloc d'instructions nommé
- [prenant des paramètres en entrée]
- [retournant un paramètre en sortie]
Ödéfini uniquement à l'intérieur d'une classe
Syntaxe
[visibilité] typeRetour nom '(' [listeParamètres] ')' [exceptions] '{' instructions '}'
public boolean estPair( int nb ) { ... }
private double plus( double v1, double v2 ) { ... }
void méthodeSansRetour() { ... }
Instruction return fournit la valeur à retourner
Pas de return si type retour void
Java 16 Lionel Seinturier
4. Eléments syntaxiques
Méthode
Visibilité des méthodes
-public partout
-private uniquement de la classe courante
-protected classe courante + ses sous-classes (héritage)
-rien classe courante + classes package courant (package public)
-static méthode de classe (pas d'accès aux variables d'instance)
1 seule valeur possible parmi les 4 1ères
Cas spécial de la méthode main (point d'entrée du programme)
- toujours la même signature
- récupère les arguments de la ligne de commande
- peut éventuellement lever des exceptions
public static void main( String[] args ) { ... }
Java 17 Lionel Seinturier
4. Eléments syntaxiques
Attribut (field)
Espace mémoire typé pour le stockage de l'information
Ödéfini uniquement à l'intérieur d'une classe
Syntaxe
[visibilité] type nom [ '=' valeurInitiale ] ';'
int i = 1;
public double salaire;
final static protected double tva = 18.6;
[visibilité] type ( nom [ '=' valeurInitiale ] )* ';'
int i,j=10,k;
Java 18 Lionel Seinturier
4. Eléments syntaxiques
Attribut (field)
Visibilité des attributs
-public, private, protected, rien idem méthode
-static attribut propre à une classe partagé par tous les objets de la classe
-final constante initialisation obligatoire
Java 19 Lionel Seinturier
4. Eléments syntaxiques
Tests
if (condition) { instructions; }
else { instructions; }
• else facultatif
• {} facultatives s'il n'y a qu'une seule instruction
• else se rapporte toujours au dernier if
if (cond1) { instructions; }
if (cond2) { instructions; }
else { /*cond2 faux*/ instructions; }
Öok mais à éviter (risque d'erreur trop important)
Java 20 Lionel Seinturier
4. Eléments syntaxiques
Boucles
while (condition) { instructions; }
do { instructions; } while (condition);
• while : instructions peuvent ne pas être exécutées
• do/while : instructions exécutées au moins 1 fois
for ( initialisation ; condition ; incrément )
{ instructions; }
initialisation
while (condition) {
instructions;
incrément;
}
• l'initialisation peut contenir des déclarations de variables
for ( i=0 ; i<10 ; i++ ) { System.out.println(i); }
for ( int i=13, float j=15.7 ; ... ; ... ) { ... }
1 / 16 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !