VINCI 2012-2013- T.HAJJI- 1 Programmation Orientée Objet : JAVA 2012/2013 VINCI

VINCI 2012-2013- T.HAJJI- 1 Programmation Orientée Objet : JAVA 2012/2013 VINCI 2012-2013- T.HAJJI- 2 Sommaire • Les bases de java • Les constricteurs • Généralités sur les structures lexicales de Java • Héritage • La gestion des Exceptions • Complément • Introduction aux Interfaces graphiques VINCI 2012-2013- T.HAJJI- 3 Ch I. JAVA: les bases I. Généralités sur les objets • Un objet est une variable améliorée: il stocke les données, mais on peut effectuer des requêtes sur cet objet (on demande à l’objet de faire des opérations sur lui-même), en envoyant un message à cet objet. Ceci est équivalent à un appel de fonction. • Chaque objet à son espace mémoire: la simplicité des objet mis en œuvre, cache la complexité des programme. • Chaque objet a un type précis: c’est-à-dire chaque objet est une instance (variable) d’une class (type) • Un programme est ensemble d’objets qui s’envoient des messages. VINCI 2012-2013- T.HAJJI- 4 II. Les bases à connaître • Java est un langage orienté objet: l'entité de base de tout code Java est la classe • Sa syntaxe est proche du langage C • Il est fourni avec le JDK (Java Developpment Kit) – Outils de développement – Ensemble de paquetages très riches et très variés • Multi-tâches (threads) • Portable grâce à l’exécution par une machine virtuelle VINCI 2012-2013- T.HAJJI- 5 • En Java, tout se trouve dans une classe. Il ne peut y avoir de déclarations ou de code en dehors du corps d'une classe. • La classe elle même ne contient pas directement du code. – Elle contient des déclarations de variables globales, que l'on appelle des ``attributs'', – et des méthodes (équivalents à des fonctions). • Le code se trouve exclusivement dans le corps des méthodes, mais ces dernières peuvent aussi contenir des déclarations de variables locales (visibles uniquement dans le corps de la méthode). VINCI 2012-2013- T.HAJJI- 6 III. Mon premier programme en Java Considérons le code source du programme qui affiche à l’écran Mon premier programme Java // Fichier source MonPremProg.java public class MonPremProg { // déclaration de données globales //définition des méthodes public static void main(String args[]) { // déclaration des données locales; System.out.println(" Mon premier programme Java " ); } } VINCI 2012-2013- T.HAJJI- 7 • De manière générale, dans tout programme autonome destiné à être exécuté doit contenir une méthode particulière nommée main() définie de la manière suivante: public static void main(String args[]) { /* corps de la méthode */ } • Le paramètre args de la méthode main() est un tableau d’objets de type String. Il n’est pas utilisé mais, il est exigé par le compilateur Java. • La classe contenant la méthode main() doit obligatoirement être public afin que la machine virtuelle y accès. Dans l’exemple, le contenu de la classe MonPremProg est réduit à la définition d’une méthode main(). VINCI 2012-2013- T.HAJJI- 8 • Un fichier source peut contenir plusieurs classes mais une seule doit être public(ici PremProg). Le nom du fichier source est identique au nom de la classe publique qu'il contient, suivi du suffixe .java, dans l’exemple MonPremProg.java VINCI 2012-2013- T.HAJJI- 9 Compilation • La compilation d’un programme Java ne traduit pas directement le code source en fichier exécutable. Elle traduit d’abord le code source en un code intermédiaire appelé « bytecode ». C’est le bytecode qui sera ensuite exécuté par une machine virtuelle (JVM ; Java Virtual Machine). Ceci permet de rendre le code indépendant de la machine qui va exécuter le programme. VINCI 2012-2013- T.HAJJI- 10 • Sun fournit le compilateur javac avec le JDK. Dans notre exemple on exécute: javac MonPremProg.java • Cette compilation crée un fichier nommé «MonPremProg.class» qui contient le bytecode • On peut désigner le fichier à compiler par un chemin absolu ou relatif : javac home/user2/MonPremProg.java • Si un système possède une JVM il peut exécuter tous les bytecodes (fichiers .class) compilés sur n’importe qu’ele autre système. VINCI 2012-2013- T.HAJJI- 11 Exécution du bytecode • Le bytecode doit être exécuté par une JVM. Cette JVM n'existe pas ; elle est simulée par un programme qui – lit les instructions (en bytecode) du programme .class, – les traduit dans le langage machine relatif à la machine sur laquelle il sera exécuté. – Lance leur exécution VINCI 2012-2013- T.HAJJI- 12 Exécution avec java Dans le cas de l’environnement JDK de SUN. • Pour compiler il suffit d’utiliser la commande javac: javac MonPremProg.java • Pour exécuter, Sun fournit le programme java qui simule une JVM. Il suffira d’utiliser la commande: java MonPremProg qui interprète le bytecode de la méthode main() de la classe MonPremProg VINCI 2012-2013- T.HAJJI- 13 L’exécution du programme MonPremProg affiche à l’écran, comme résultat, la chaîne de caractères: Mon premier programme Java, grâce à l’instruction: System.out.println(" Mon premier programme Java "); Dans le programme, une ligne qui commence avec // est un commentaire jusqu’à la fin de la ligne Une ligne qui commence avec /* est un commentaire qui peut être étalé sur plusieurs lignes, et doit terminer avec */ VINCI 2012-2013- T.HAJJI- 14 III. Les classes en Java • Une classe décrit un ensemble d’objets qui partagent des caractéristiques communes. • On définit une classe pour représenter un problème au lieu d’utiliser un type de données pour représenter une unité de stockage dans l’ordinateur. • Créer des classes (des types de données abstraites) est un concept fondamental dans la POO. • On utilise les classes exactement de la même manière que les types de données prédéfinies. • On peut créer des variables (objets ou instance) d’un type particulier. VINCI 2012-2013- T.HAJJI- 15 Pour créer un nouveau type d’objets de on utilise le mot clé class. Le canevas de base pour définir un nouveau type de nom NomDuType est la suivante: class NomDuType { /* Corps de la classe: instructions de définitions des méthodes et des champs */ } VINCI 2012-2013- T.HAJJI- 16 Dans la définition de la classe (corps de la classe), on met deux types d’éléments: - des données membres de la classe (appelées champs) qui sont des objets de n’importe quel type. - des fonctions membres de la classe (appelées méthodes). VINCI 2012-2013- T.HAJJI- 17 Exemple: UnTest est une classe (un nouveau type) qui a 3 champs : float, int et boolean. class UnTest { float x; int i; boolean b; } VINCI 2012-2013- T.HAJJI- 18 Définition des méthodes La définition de base d’une méthode ressemble à la définition d’une fonction en C. typeRetour nomMethode (/* Liste des parametres */) { /* corps de la méthode */ } - nomMethode est le nom de la méthode - Liste de paramètre (arguments de la méthode) donne les types et les noms des informations qu’on souhaite passer à la méthode lors de son appel. - typeRetour est le type de la valeur qui est retournée par la méthode après son appel. Si la méthode ne fourni aucun résultat, alors typeRetour est remplacé par le mot clé void. VINCI 2012-2013- T.HAJJI- 19 • Le mode de passage des paramètres dans les méthodes dépend de la nature des paramètres : – par référence pour les objets – par copie pour les types primitifs Exemple class C { void methode1(int i){ i+=12; } void methode2() { int i = 3; methode1(i); System.out.println(i=" + i); // i=3 } } VINCI 2012-2013- T.HAJJI- 20 IV. Création et manipulation d’Objets Une fois la classe est définie, on peut créer des objets de la même manière que la déclaration des types primitif: Considérons la classe ClasseTest class ClasseTest { // corps de la classe ClasseTest } l’instruction: ClasseTest a; // déclare a comme objet (variable) de type ClasseTest VINCI 2012-2013- T.HAJJI- 21 Attention: - La déclaration d’une variable de type primitif réserve un emplacement mémoire pour stocker la variable - La déclaration d’un objet de type A, ne réserve pas une place mémoire pour un objet de type A, mais seulement un emplacement pour une référence à un objet de type A. ⇒les objets sont manipulés avec des références. Exemple classique de la télécommande et la Télé. Télé = objet Télécommande = référence. Télécommande Télé Référence Objet VINCI 2012-2013- T.HAJJI- 22 - Pour modifier l’objet (par exemple augmenter le son, …) on utilise la référence (la télécommande). - Avoir une référence ne veut pas dire avoir l’objet (on peut avoir la télécommande sans avoir la télé). VINCI 2012-2013- T.HAJJI- 23 L’emplacement pour l’objet doit être demandé explicitement dans le programme en faisant appel à l’opérateur new. L’expression new NomClasse créée un emplacement pour un objet de type NomClasse. class NomClasse { /* Corps de la classe */ } NomClasse a = new NomClasse(); En générale: 1. Chaque objet met ses données membres dans sa propre zone mémoire. 2. Les données membres ne sont partagées entre les objets. VINCI 2012-2013- T.HAJJI- 24 Exemple 1: class UnTest { float x; int i; boolean b; } UnTest data = new UnTest(); // créer un objet data VINCI 2012-2013- T.HAJJI- 25 Exemple 2: Supposons qu’on veut avoir une chaîne de caractères alors on crée une référence sur String: uploads/S4/ java-fundamental.pdf

  • 15
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jul 17, 2022
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 1.2451MB