Programmation Java 1 Introduction Le langage Java a été créé en 1995 par Sun M

Programmation Java 1 Introduction Le langage Java a été créé en 1995 par Sun Microsystems C’est un langage généraliste de programmation synthétisant les principaux langages existants lors de sa création Il permet une programmation orientée-objet (à l’instar de SmallTalk et, dans une moindre mesure, C++), modulaire (langage ADA) et reprend une syntaxe très proche de celle du langage C C’est un langage rigoureux (la plupart des erreurs se produisent à la compilation et non à l’exécution) et portable (un même programme compilé peut s’exécuter sur différents environnements). 2 Environnement Java Java est un langage interprété, ce qui signifie qu’un programme compilé n’est pas directement exécutable par le système d’exploitation mais il doit être interprété par un autre programme, qu’on appelle interpréteur Un programmeur Java écrit son code source, sous la forme de classes, dans des fichiers dont l’extension est .java Ce code source est alors compilé par le compilateur javac en un langage appelé bytecode et enregistre le résultat dans un fichier dont l’extension est .class Le bytecode ainsi obtenu n’est pas directement utilisable Il doit être interprété par la machine virtuelle de Java qui transforme alors le code compilé en code machine compréhensible par le système d’exploitation 3 Environnement Java C’est la raison pour laquelle Java est un langage portable : le bytecode reste le même quelque soit l’environnement d’exécution En 2009, Sun Microsystems est racheté par Oracle Corporation qui fournit dorénavant les outils de développement Java SE (Standard Edition) contenus dans le Java Development Kit (JDK). 4 Compilation La compilation s’effectue par la commande javac suivie d’un ou plusieurs noms de fichiers contenant le code source de classes Java Par exemple, javac MyProg.java compile la classe MyProg dont le code source est situé dans le fichier MyProg.java La compilation nécessite souvent la précision de certains paramètres pour s’effectuer correctement, notamment lorsque le code source fait référence à certaines classes situées dans d’autres répertoires que celui du code compilé Il faut alors ajouter l’option -classpath suivie des répertoires (séparés par un ; sous Windows et : sous Unix) des classes référencées Par exemple : javac -classpath /prog/exos1:/cours MyProg.java compilera le fichier MyProg.java si celui-ci fait référence à d’autres classes situées dans les répertoires /prog/exos1 et /cours 5 Interprétation Le bytecode obtenu par compilation ne peut être exécuté qu’à l’aide de l’interpréteur L’exécution s’effectue par la commande java suivie du nom de la classe à exécuter (sans l’extension .class) Comme lors de la compilation, il se peut que des classes d’autres répertoires soient nécessaires Il faut alors utiliser l’option -classpath comme dans l’exemple qui suit : java -classpath /prog/exos1:/cours MyProg 6 Programmation orientée objet Chaque langage de programmation appartient à une “famille” de langages définissant une approche ou une méthodologie générale de programmation La programmation orientée-objet propose une méthodologie centrée sur les données Le programmeur Java va d’abord identifier un ensemble d’objets, tel que chaque objet représente un élément qui doit être utilisé ou manipulé par le programme, sous la forme d’ensembles de données Ce n’est que dans un deuxième temps, que le programmeur va écrire les traitements, en associant chaque traitement à un objet donné Un objet peut être vu comme une entité regroupant un ensemble de données et de méthodes (l’équivalent d’une fonction en C) de traitement 7 Classe Un objet est une variable (presque) comme les autres Il faut notamment qu’il soit déclaré avec son type Le type d’un objet est un type complexe (par opposition aux types primitifs entier, caractère, …) qu’on appelle une classe Une classe regroupe un ensemble de données (qui peuvent être des variables primitives ou des objets) et un ensemble de méthodes de traitement de ces données et/ou de données extérieures à la classe On parle d’encapsulation pour désigner le regroupement de données dans une classe Par exemple, une classe Rectangle utilisée pour instancier des objets représentant des rectangles, encapsule 4 entiers : la longueur et la largeur du rectangle ainsi que la position en abscisse et en ordonnée de l’origine du rectangle (par exemple, le coin en haut à gauche) 8 Classe On peut alors imaginer que la classe Rectangle implémente une méthode permettant de déplacer le rectangle qui nécessite en entrée deux entiers indiquant la distance de déplacement en abscisse et en ordonnée L’accès aux positions de l’origine du rectangle se fait directement (i.e. sans passage de paramètre) lorsque les données sont encapsulées dans la classe où est définie la méthode 9 Classe Exemple: class Rectangle { int longueur ; int largeur ; int origine_x ; int origine_y ; void deplace(int x, int y) { this.origine_x = this.origine_x + x ; this.origine_y = this.origine_y + y ; } int surface() { return this.longueur * this.largeur ; } } 10 Classe Pour écrire un programme avec un langage orienté-objet, le programmeur écrit uniquement des classes correspondant aux objets de son système Les traitements à effectuer sont programmés dans les méthodes de ces classes qui peuvent faire appel à des méthodes d’autres classes En général, on définit une classe, dite “exécutable”, dont une méthode peut être appelée pour exécuter le programme 11 Encapsulation Lors de la conception d’un programme orienté-objet, le programmeur doit identifier les objets et les données appartenant à chaque objet mais aussi des droits d’accès qu’ont les autres objets sur ces données L’encapsulation de données dans un objet permet de cacher ou non leur existence aux autres objets du programme Une donnée peut être déclarée en accès : public : les autres objets peuvent accéder à la valeur de cette donnée ainsi que la modifier ; privé : les autres objets n’ont pas le droit d’accéder directement à la valeur de cette donnée (ni de la modifier). En revanche, ils peuvent le faire indirectement par des méthodes de l’objet concerné (si celles-ci existent en accès public). Les différents droits d’accès utilisables en Java seront détaillés dans la suite du cours 12 Méthode constructeur Chaque classe doit définir une ou plusieurs méthodes particulières appelées des constructeurs Un constructeur est une méthode invoquée lors de la création d’un objet Cette méthode, qui peut être vide, effectue les opérations nécessaires à l’initialisation d’un objet Chaque constructeur doit avoir le même nom que la classe où il est défini et n’a aucune valeur de retour (c’est l’objet créé qui est renvoyé) Plusieurs constructeurs peuvent être définis s’ils acceptent des paramètres d’entrée différents Dans l’exemple précédent de la classe rectangle, le constructeur initialise la valeur des données encapsulées 13 Méthode constructeur class Rectangle { ... Rectangle(int lon, int lar) { this.longueur = lon ; this.largeur = lar ; this.origine_x = 0 ; this.origine_y = 0 ; } … } 14 Objet Un objet est une instance (anglicisme signifiant « cas » ou « exemple ») d’une classe et est référencé par une variable ayant un état (ou valeur) Pour créer un objet, il est nécessaire de déclarer une variable dont le type est la classe à instancier, puis de faire appel à un constructeur de cette classe Exemple: Cercle mon_rond ; mon_rond = new Cercle() L’usage de parenthèses à l’initialisation du cercle, montre qu’une méthode est appelée pour l’instanciation Cette méthode est un constructeur de la classe Cercle Si le constructeur appelé nécessite des paramètres d’entrée, ceux-ci doivent être précisés entre ces parenthèses (comme lors d’un appel classique de méthode). 15 Accès aux variables et aux méthodes Pour accéder à une variable associée à un objet, il faut préciser l’objet qui la contient Le symbole ’.’ sert à séparer l’identificateur de l’objet de l’identificateur de la variable. Une copie de la longueur d’un rectangle dans un entier temp s’écrit : int temp = mon_rectangle.longueur ; La même syntaxe est utilisée pour appeler une méthode d’un objet mon_rectangle.deplace(10,-3); Pour qu’un tel appel soit possible, il faut que trois conditions soient remplies La variable ou la méthode appelée existe ! Une variable désignant l’objet visé existe et soit instanciée. L’objet, au sein duquel est fait cet appel, ait le droit d’accéder à la méthode ou à la variable 16 Accès aux variables et aux méthodes Pour référencer l’objet “courant” (celui dans lequel se situe la ligne de code), le langage Java fournit le mot-clé this. Celui-ci n’a pas besoin d’être instancié et s’utilise comme une variable désignant l’objet courant. Le mot-clé this est également utilisé pour faire appel à un constructeur de l’objet courant Ces deux utilisations possibles de this sont illustrées dans l’exemple suivant : 17 Accès aux variables et aux méthodes class Carre { int cote ; int origine_x ; int origine_y ; Carre(int cote, int x, int y) { this.cote = cote ; this.origine_x = x ; this.origine_y = y ; } Carre(int cote) { this(cote, 0, 0); } } 18 Syntaxe de java 19 Syntaxe Le langage C a servi de base pour la syntaxe e Java :  le caractère de fin d’une instruction est “ ;” les commentaires (non traités par le compilateur) se situent entre les symboles “/*” et “*/” ou commencent par le symbole “//” en se terminant à la fin de la ligne Ou 20 a = uploads/S4/ programmation-java-new1.pdf

  • 30
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Dec 09, 2021
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.1811MB