Cours 1
Transcription
Cours 1
Cours 1 Contenu du cours : " " " " " " " " Premières applications Compilation, Exécution, Chemin Affichage et saisie Types de données Flux de contrôle Applets Arrays OO de base 1 Edition Le fichier texte HelloWorld.java Une seule classe publique par fichier source. C'est elle qui donne le nom au fichier. Les classes exécutables ont une méthode main. 2 3 Programmation Edition Compilation Exécution Correction d'erreur Il faut compiler et exécuter souvent un programme. Cela permet de vérifier chaque partie individuellement plutôt que tout le programme 4 Compilation C:\>cd C:\Program Files\Java\jdk1.5.0_15\bin C:\Program Files\Java\jdk1.5.0_15\bin\> javac HelloWorld.java HelloWorld.class HelloWorld.java Source Code Byte Code Génération du byte code reconnu par JVM On compile un fichier « .java » avec la commande javac 5 Correction d'erreur Fichier contenant l'erreur N° de ligne de l'erreur Endroit exact de l'erreur Nombre d'erreurs Le compilateur aide à trouver les erreurs. (Nombre d'erreurs, ligne de l'erreur, type d'erreur...) 6 Exécution C:\Program Files\Java\jdk1.5.0_15\bin\> java HelloWorld.class HelloWorld Bonjour On exécute une classe, pas un fichier « .class » La JVM exécute la méthode main de la classe spécifiée. 7 Affichage Dans la console System.out.println Changement du chemin • Pour ne pas toujours enregistrer dans le bin de java • Changer le chemin du bin pour avoir accès à javac et java Affichage 9 Importation de la classe JOptionPane Affichage dans une fenêtre. Force la sortie du programme. (Obligatoire en mode graphique) On peut utiliser différentes options d'affichage avec JOptionPane 10 Affichage Dans une fenêtre JOptionPane.showMessageDialog On peut afficher des messages dans une fenêre de dialogue à l'aide de la classe JOptionPane. Saisie en mode textuel // Un programme Java qui calcule le carré d’un nombre // importer la classe Scanner import java.util.Scanner ; public class Carre { public static void main (String args[]) { Scanner entree; int nombre; int carre; System.out.print("Donner un nombre : "); entree = new Scanner(System.in) ; nombre = entree.nextInt() ; carre = nombre * nombre ; System.out.print("Le carré du nombre est : " + carre); } } Saisir en mode textuel 11 12 Saisie en mode graphique Commentair e multi lignes Commentaire sur une ligne Permet la saisie Convertion en entier On peut faire afficher une fenêtre pour faire saisir une chaîne à l'utilisateur à l'aide de showInputDialog Types de données Types de données Types primitifs Types objets String , HelloWorld, etc....... Numériques byte "short "int "long "float "double boolean " char Les types de données primitifs sont les types de base. Il existe différentes méthodes de convertion entre ces types. 13 Contrôle de flux et évaluation if ( noteEtudiant >50) System.out.println(“L’étudiantE passe” ); else System.out.println(“L’étudiantE échoue” ); Syntaxe du langage C 14 15 Utiliser la documentation de la jdk http://java.sun.com/j2se/1.5.0/docs La documentation de la JDK est l’outil de base de programmation en java ! Utiliser la documentation des APIs 16 http://java.sun.com/j2se/1.5.0/docs/api Liste des paquets Documentation de la classe sélectionnée Liste des classe du paquet sélectionn é La documentation des classes de la JDK est facile et rapide à utiliser. 17 Applets Java Internet Serveur HTTP HTML + Applet Navigateur Java JVM Une applet Java est un programme téléchargeable qui peut s'exécuter dans un navigateur. Il est installé en visionnant une page HTML. Première Applet 18 Balise <applet> 19 Paramètres de la balise applet Balise applet Le paramètre "code" indique le nom de la classe à exécuter. Le paramètre "codebase" indique l'URL où le code à télécharger réside. Exécution d'une applet C:\>temp\appletviewer HelloApplet.html HelloApplet.html Avec appletviewer, on exécute une page « .html » , pas un fichier « .class » ni une classe ! Ouvrir le fichier .html dans un browser quelconque 20 Tableaux Les tableaux ont une taille fixe. Ils ne sont pas redimmensionnables. 21 Tableaux Les tableaux sont indexés à partir de 0 En java, les tableaux sont considérées comme des classes sans méthode. La variable membre « length » donne la longueur du tableau. Le dernier élément d'un tableau de taille n se trouve à l'index n-1. 22 Tableaux Les variables de types primitifs sont initialisées à 0 pour les types numériques et à false pour les booléens. Les références sur les objets sont initialisées à null. 23 Tableaux Une référence indique un emplacement mémoire. Cet emplacement ne représente rien en dehors de la JVM. 24 Tableaux à plusieurs dimensions 0 1 matI2[0] est un tableau à une dimension En java, les tableaux à plusieurs dimensions sont vus comme des tableaux de tableaux (de tableaux, de tableaux, etc) 25 Passage de tableaux en paramètres 26 Passage de tableaux en paramètres En java, les tableaux sont considérées comme des classes sans méthode. Ils sont passés par références, le mode de passage d’un élément du tableau dépend du type de l’élément (primitif ou objet). 27 28 Structure d’un fichier java Commentaire de classe Déclaration de classe Données membres Commentaire de méthode Déclaration de méthode Paramètre (variable locale) Variable locale Les instructions java sont autorisées UNIQUEMENT dans les méthodes. Variable déclarée dans une méthode variable locale Variable déclarée dans la classe donnée membre Création de classes Modificateur: Tout le monde peut appeler cette classe pour lui demander des services. Définition de classe Nom de la classe Début et fin de la classe Une classe rend des services. Pour accéder à un de ses services, on invoque (=appelle) une de ses méthodes. 29 30 Création de méthodes signature bloc d'instrcutions Trois méthodes de la classe MaClasseMath. Une méthode est composée d'une signature et d'un bloc d'instructions Signature de méthode Cette méthode est accessible à tous. Type de retour Nom de la méthode Argument ou liste d'arguments (séparés par une virgule) Une signature de méthode est une déclaration de service. La façon dont le service est réalisé ne regarde pas l'appelant. On parle d'encapsulation. 31 Constructeurs et instanciations Un constructeur est une méthode particulière d'une classe. Il peut y avoir plusieurs constructeurs dans/pour une même classe. Les constructeurs n'ont pas de type de retour. Les constructeurs portent le même nom que la classe. 32 Constructeurs et instanciations Pour créer de nouveaux objets (=instances) d'une classe, on appelle un des constructeurs de cette classe. Un appel à un constructeur est toujours précédé du mot-clef "new". On dit que personne2 réfère à un objet de la classe Personne. 33 34 Références et objets Code java personne0 Code java personne0 personne1 Code java personne0 personne1 JVM personne JVM personne personne JVM personne personne En java, on ne manipule que des références qui pointent vers des objets. Dès qu’un objet n’est plus référencé, il est garbage collecté. Données membres (1) Ces 2 champs sont des variables d'instances. Leur contenu varie pour chaque objet, elles sont accessibles à tous. 35 Données membres (2) L’age de jean est 20 ans L’age de jean est -1 ans Petite astuce pour faire une pause Lorsque les données sont publiques, il est impossible de contrôler la façon dont elle sont utilisées. Cela peut rendre vos objets incohérents 36 Masquage de données (1) On masque les données aux clients en les rendant privées. Et on donne des méthodes d’accès publiques. Les méthodes d’accès ont un nom standardisé. 37 Masquage de données (2) 38 L’age de jean est 20 ans L’age de jean est 0 ans Les clients doivent passer par les méthodes du serveur pour manipuler leurs données. 39 Masquage de données (3) Le masquage de données permet: de valider les donnéees en entrée de formater les données en sortie de cacher aux clients les structures de données manipulées de s’assurer de la cohérence interne des objets. En règle générale : les données sont privées les méthodes sont publiques (sauf celles qui sont utilisées en interne par une classe) Principe du moindre privilège 40 Portées des variables & this La variable locale maValeur masque la donnée membre maValeur 8 5 Les données membres ont une portée globale dans la classe. On utilise le mot clef « this » pour accéder à une donnée membre lorsqu’une variable locale porte le même nom.