a propos de java sun, fin 1995 c++ nettoyé semi-interprété (ou : semi-compilé)

Post on 03-Apr-2015

119 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related