La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

A propos de java Sun, fin 1995 C++ nettoyé semi-interprété

Présentations similaires


Présentation au sujet: "A propos de java Sun, fin 1995 C++ nettoyé semi-interprété"— Transcription de la présentation:

1 A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
(ou : semi-compilé) Sun a voulu créer un langage simple, que les programmeurs assimilent rapidement. Syntaxe dominante : C++. Donc Java emprunte beaucoup à la syntaxe C++, mais avec des simplifications (suppression de mécanismes complexes, souvent mal compris, donc sources de bugs)

2 Langages compilés Pascal, ADA, C, C++, ... Autres fichiers compilés (bibliothèques …) Fichier source Fichier code machine compilation Fichier exécutable Édition de liens exécution code machine lié à l’architecture de la machine

3 Langages interprétés Lisp, Prolog, shell Unix, Javascript, php, ... Autres fichiers sources chargés à la demande Fichier source Exécution par un interpréteur Interprétation : traduction du code source en code machine « à la volée »

4 Et Java? Fichier source .java Fichier code machine .class compilation exécution Interprétation du pseudo-code pseudo-code par une "machine virtuelle" Pseudo-code : code pour une machine abstraite possède des fonctionnalités communes à toutes les architectures

5 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) Vieille idée : voir le 1er Pascal + portabilité du code compilé - exécution moins rapide (toutefois il existe des compilateurs en code natif)

6 A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
pour des applications distribuées (sur Internet notamment)

7 Le succès de Java a d'abord été lié au web
Client Serveur 1 Intro.html? Navigateur Serveur web 2 Intro.html 3 Visualisation du document

8 Applet programme invoqué dans un document HTML et exécuté par un navigateur <OBJECT classid="http://www.ici.fr/monApp.class"> </OBJECT> (depuis HTML 4, <OBJECT> remplace <APPLET>)

9 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 Applet : ce pour quoi Java a été conçu. Application : de plus en plus utilisé Servlet : plus récent

10 Java en tant que langage de programmation par objets
Exemple d'application : Shogun Pour commencer à voir les concepts de base de la programmation par objets, et comment ils sont mis en œuvre en Java

11 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) On ne se demande pas "quelle est la tâche à accomplir", comment se divise-t-elle en sous-tâches? Mais : quelles sont les entités qui entrent en jeu, entité = objet, Quel est le rôle de chaque entité? De quoi chaque entité est-elle responsable? Objets autres…

12 Objets autres : jeu gère une partie échiquier gère la "grille" elle même ensemble de pièces 1 ensemble de pièces 2 pièces une pièce gère sa position sur l'échiquier elle sait se déplacer et s'afficher

13 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"

14 Ex: gérer le début de mouvement du joueur 1
Clic! sur panneau de jeu en (i,j) jeu est averti jeu echiquier (i,j) c'est quelle case? c'est (l,c) ens pièces 1 as-tu une pièce en (l,c)? Donc : une application est composée d'objets qui collaborent. Ces objets, comment sont-ils définis? pièces pièce, es-tu en (l,c)?

15 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 Structure : de quoi l'objet est composé Méthodes : quelles sont les actions que l'objet peut effectuer

16 Partie privée "encapsulée"
Une classe ordinaire Partie privée "encapsulée" attributs + des méthodes de « cuisine interne » Partie publique méthodes de « service » private : accessible seulement dans le corps des méthodes de la classe public : accessible par toute méthode de toute classe

17 La classe Piece (simplifiée)
// fichier Piece.java public class Piece { // attributs private int joueur; private int lig; private int col; private int depl; // méthodes } 1 2 1 6 3 4 2 Deux instances de Piece La classe Piece (simplifiée)

18 // 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 corps des méthodes pour communiquer avec une instance de Piece

19 Ex: l'objet jeu demande à la pièce p de se déplacer en case (4,3)
p.deplacer(4,3) jeu n'a pas besoin de savoir comment p procède 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

20 On dit que les objets communiquent par envoi de message :
jeu envoie à p le message "deplacer(4,3)" C'est o2 qui exécute la méthode, pas o1 qui ne sait même pas comment o2 procède.

21 Mais comment crée-t-on un objet?
public Piece(int j, int l, int c) {joueur = j; lig = l; col = c; depl = tirage();} Constructeur : méthode qui sert à initialiser automatiquement un objet lors de sa création Intérêt : éviter les oublis d'initialisation Mais comment crée-t-on un objet?

22 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

23 2. Appelle un constructeur sur cet objet Initialisation de l'objet
Création d'un objet new Piece(0,2,3) @ 2 3 4 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 3. Retourne de l'objet … … reste à récupérer cette adresse

24 Piece p; p = new Piece (0,2,3); @ 2 3 @ p

25 Piece p ; p = new Piece (0,2,3); Equivalent Delphi de ces actions var p : Piece ; p := Piece.create(0,2,3);

26 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; Vous êtes maintenant prêts à écrire votre première application Java

27 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!"); }

28 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); }

29 Bibliographie A la bibliothèque de l'IUT Java 2 : notions fondamentales (vol I), Sun microsystems, 1999 Très orienté "pratique" Programmer en Java (2ème éd), Claude Delannoy, Eyrolles, Précis, couvre en détails beaucoup d’aspects de Java Java La synthèse (2ème éd), InterEditions, Bien pour concepts de programmation, en retard sur classes graphiques Autre Le langage Java, concepts et pratique, Irène Charon, Hermès, 2000

30 Web tutoriaux sur le site de Sun (in english of course) tout pour les développeurs francophones


Télécharger ppt "A propos de java Sun, fin 1995 C++ nettoyé semi-interprété"

Présentations similaires


Annonces Google