View
119
Download
2
Category
Preview:
Citation preview
A propos de java
Sun, fin 1995
C++ nettoyé
semi-interprété
(ou : semi-compilé)
Langages compilés
Autres fichierscompilés(bibliothèques …)
Fichiercode machine
Fichiersource
compilation
Fichierexécutable
Édition de liens
exécutioncode machine lié à l’architecturede la machine
Pascal, ADA, C, C++, ...
Autres fichiers sources chargés à la demande
Fichiersource
Exécutionpar un interpréteur
Langages interprétés
Interprétation : traduction du code source en code machine « à la volée »
Lisp, Prolog, shell Unix,Javascript, php, ...
Et Java?
pseudo-code
Pseudo-code : code pour une machine abstraitepossède des fonctionnalités communes à toutes les architectures
exécution
Interprétation du pseudo-code
compilation
Fichiersource
.javaFichiercode machine
.class
par une "machinevirtuelle"
• Pré-compilation en un code universel (pseudo-code ou byte-code)donc indépendant de toute architecture
• Puis interprétation par une machine virtuelle (propre à chaque architecture de machine)
(toutefois il existe des compilateurs en code natif)
Vieille idée : voir le 1er Pascal
+ portabilité du code compilé
- exécution moins rapide
A propos de java
Sun, fin 1995
C++ nettoyé
semi-interprété
pour des applications distribuées(sur Internet notamment)
Client Serveur
Navigateur Serveur web
Visualisationdu document
Intro.html?
Intro.html
1
2
3
Le succès de Java a d'abord été lié au web
Applet
programme invoqué dans un document HTML et exécuté par un navigateur
<OBJECTclassid="http://www.ici.fr/monApp.class"></OBJECT>
(depuis HTML 4, <OBJECT> remplace <APPLET>)
Trois sortes de programmes Java
• Applet : programme invoqué dans un document HTML et exécuté par un navigateur
• Application : programme "classique"
• Servlet
programme invoqué par un serveur web et exécuté sur la machine du serveur
Java en tant que langage de programmation par objets
Exemple d'application : Shogun
Une application = un ensemble d'objets qui ont chacun leur rôle à jouer et qui interagissent
Composants graphiques
fenêtre
barre de menu
bouton
zones de texte
panneau (sur lequel est affiché le jeu)
Objets autres…
Objets autres :
échiquier
ensemble de pièces 1
ensemble de pièces 2
jeu gère une partie
gère la "grille" elle même
pièces
pièces
une pièce gère sa position sur l'échiquierelle sait se déplacer et s'afficher
Les objets collaborent entre eux, chacun étant responsable des actions qu'il effectue
Ex : afficher le jeu
panneau jeu : "jeu, affiche-toi"
jeu : "echiquier, affiche-toi""ens. pièces 1, affiche-toi"
"ens. pièces 2, affiche-toi"
ens. pièces 1 : à chaque pièce : "pièce, affiche-toi"
ens. pièces 2 : à chaque pièce : "pièce, affiche-toi"
Ex: gérer le début de mouvement du joueur 1
Clic! sur panneau de jeu en (i,j)
jeu est averti
(i,j) c'est quelle case?
c'est (l,c)
as-tu une pièce en (l,c)? pièces
jeu echiquier
pièce, es-tu en (l,c)?
ens pièces 1
Les objets sont des instances de classes
Une classe est un "modèle" qui définit
- la structure d’un objet (ses attributs)
- et son comportement (ses méthodes)
La structure des objets est (+ ou -) encapsulée,ainsi que certaines de leurs méthodes
Partie privée "encapsulée"
attributs
private : accessible seulement dans le corps des méthodes de la classe
public : accessible par toute méthode de toute classe
+ des méthodes de « cuisine interne »
Partie publique
méthodes de « service »
Une classe ordinaire
La classe Piece (simplifiée)
// fichier Piece.java
public class Piece {
// attributsprivate int joueur;private int lig;private int col;private int depl; // méthodes
…
}
0 1
2
3
4
1
6
2
Deux instancesde Piece
// méthodes private int tirage()
{…}
public Piece(int j, int l, int c){…}
public int quelDeplacement(){…}
public void deplacer(int nouvL,int nouvC){…}
public void afficher(…){…}
public String toString(){…}
}Pas besoin de connaître le corpsdes méthodes pour communiqueravec une instance de Piece
Ex: l'objet jeu demande à la pièce p de se déplacer en case (4,3)
p.deplacer(4,3)
D'ailleurs, jeu n'a pas le droit de modifier directement p :
p.lig = 4; p.col = 3;
car col et lig sont encapsulés
C'est p qui modifie son propre état
jeu n'a pas besoin de savoir comment p procède
On dit que les objets communiquent par envoi de message :
jeu envoie à p le message "deplacer(4,3)"
Constructeur : méthode qui sert à initialiser automatiquement un objet lors de sa création
Mais comment crée-t-on un objet?
Intérêt : éviter les oublis d'initialisation
public Piece(int j, int l, int c){joueur = j;
lig = l; col = c;
depl = tirage();}
Commençons par savoir nommer les objets
Il existe des variables appelées références, qui servent à désigner des objets
Piece p1;
// déclaration d'une référence
Piece p1 = null;
// déclaration + initialisation
@
new Piece(0,2,3)
3. Retourne l'adresse @ de l'objet … … reste à récupérer cette adresse
1. Crée une instance de la classe Piece réservation d'une place en mémoire
2. Appelle un constructeur sur cet objet Initialisation de l'objet
0
2
3
4
Création d'un objet
p @
0
2
3
2
@
Piece p;
p = new Piece (0,2,3);
Equivalent Delphi de ces actions
var p : Piece ;
p := Piece.create(0,2,3);
Piece p ;
p = new Piece (0,2,3);
Objets et références ne sont pas liés "à vie"
Un objet peut avoir plusieurs noms, aucun nom, ou changer de nom
Piece p1 = new Piece (0,2,3);
Piece p2 = p1;
p1 = new Piece(0,1,1);
p2 = null;
Structure d'une application Java
• un ensemble de classes, dont l’une comporte une méthode main
public class Hello{ public static void main (String args[])
{ System.out.println("Bonjour, monde!");
}}
public class MonAppliTest{ public static void main (String args[]) {
Piece p = new Piece(0,1,1);String etat = p.toString();System.out.println("état de p :" + etat);int d = p.quelDeplacement();p.deplace(1+d,1);etat = p.toString();System.out.println("état de p :"+ etat);
}}
Bibliographie
• Java 2 : notions fondamentales (vol I), Sun microsystems, 1999Très orienté "pratique"
• Programmer en Java (2ème éd), Claude Delannoy, Eyrolles, 2002 Précis, couvre en détails beaucoup d’aspects de Java
• Le langage Java, concepts et pratique, Irène Charon, Hermès, 2000
• Java La synthèse (2ème éd), InterEditions, 1998Bien pour concepts de programmation,en retard sur classes graphiques
A la bibliothèque de l'IUT
Autre
http://java.sun.com/docs/books/tutorial/index.htmltutoriaux sur le site de Sun (in english of course)
http://www.developpez.comtout pour les développeurs francophones
Web
Recommended