PPOOGL Florent de Dinechin Java pour les nuls Java en 30 minutes Introduction G
PPOOGL Florent de Dinechin Java pour les nuls Java en 30 minutes Introduction Grands principes Pour en finir avec l’organisation Types de base et objets Le reste est dans le manuel PPOOGL 1 Introduction Introduction Grands principes Pour en finir avec l’organisation Types de base et objets Le reste est dans le manuel PPOOGL 2 La premi` ere fois Fichier source Toto.java, fichier objet Toto.class javac Toto.java cr´ ee Toto.class (le c c’est pour compilo) java Toto lance la m´ ethode main de Toto.class dans la machine virtuelle. Si on faisait une applet, c’est pas une m´ ethode main qu’il faudrait. Et voici le code source : class Hello { // pas d’attributs ni de methodes, sauf // la methode main, statique. // cela veut dire quoi, statique, deja ? public static void main(String[] args) { System.out.println("Hello, java ?"); } } PPOOGL 3 Rions un peu Tapons java Hello.class au lieu de Java Hello La raison profonde de ceci vous sera espliqu´ ee dans la suite. PPOOGL 4 Grands principes Introduction Grands principes Pour en finir avec l’organisation Types de base et objets Le reste est dans le manuel PPOOGL 5 Les trucs reposants Une classe, un fichier ⊕Pas de fichiers .h ⊕La doc du code n’est plus le fichier .h, c’est une vraie doc cr´ ee par javadoc ⊕Pas besoin de Makefile ni d’autoconf ⊕Pas de bug dˆ u au pr´ eprocesseur ⊖Si cela se trouve, c’est mˆ eme mieux que Caml ´ Edition de lien dynamique Lorsque la machine virtuelle a besoin de cr´ eer un objet de classe Toto, elle charge Toto.class Il faut qu’elle sache o` u le trouver (on verra plus loin) ⊕Pas d’´ editeur de lien ⊕Pas de Makefile (je l’ai d´ ej` a dit ?) ⊕Les chemins pour la compilation, pour l’´ edition de liens et pour l’ex´ ecution sont les mˆ emes. ⊖Performance : des acc` es disques (et mˆ eme r´ eseau) cach´ es au milieu de votre programme PPOOGL 6 Applet et application applet (en fran¸ cais appliquette ou programmouillette) : destin´ e ` a tourner dans une fenˆ etre de navigateur chez des gens qu’on ne connait mˆ eme pas d´ erive d’une classe qui en principe prot` ege la machine hˆ ote (sandbox) pas d’´ ecriture ni de lecture du disque local par contre acc` es en lecture ` a tous les fichiers du Ternet par leur url application (en fran¸ cais application) pas les restriction pr´ ec´ edentes un navigateur n’a pas plus le droit de la lancer qu’un autre ex´ ecutable Applications et appliquettes partagent le gros de la biblioth` eque standard, notamment l’awt (abstract windowing toolkit). PPOOGL 7 Au fait JavaScript n’a rien ` a voir avec Java ` a part la syntaxe superficielle : c’est un langage interpr´ et´ e, plein de trous de s´ ecurit´ e, pas OO pour un sou, et qu’on laissera volontiers aux authentiques kakous. PPOOGL 8 Javadoc Un outil qui prend du code bien document´ e, et construit une doc html toute jolie Les commentaires pour Javadoc sont entre /** ... */ Un commentaire de ce type par m´ ethode, attribut, classe, etc. Ligne de commande : javadoc Toto.java Les docs de r´ ef´ erence des classes standard du langage sont construites comme cela Exemple de commentaire de l’an dernier : /** * classe Cartes */ public class Cartes extends Remote ... PPOOGL 9 Pour en finir avec l’organisation Introduction Grands principes Pour en finir avec l’organisation Types de base et objets Le reste est dans le manuel PPOOGL 10 Paquetages Un paquetage c’est comme un module en Caml. Les paquetages sont organis´ es hi´ erarchiquement en r´ epertoires. Rien ` a voir avec la hi´ erarchie des classes. Exemples tir´ es des biblioth` eques standard : java.applet java.math java.io java.awt java.awt.image java.awt.event On d´ eclare qu’une classe Toto fait partie d’un paquetage projetLala.tata en mettant tout au d´ ebut de Toto.java : package projetLala.tata ; En l’absence d’une telle ligne, la classe fait partie du paquetage par d´ efaut, constitu´ e de l’ensemble des classes dans le r´ epertoire courant l’ensemble des classes accessibles par la variable CLASSPATH On peut ranger un paquetage dans une archive zip, qui s’appellera d’ailleurs jar, mais il faut lire le manuel. PPOOGL 11 Paquetages et nommages Le nom complet d’une classe est paquetage.Classe Unicit´ e plan´ etaire des noms par l’URL renvers´ ee : com.projetMIM2002.www.lala.test Le nom complet d’un membre est paquetage.Classe.membre la fonction sinus : java.lang.Math.sin(x) la variable ` a l’unicit´ e plan´ etaire : com.projetMIM2002.www.lala.test.RandomTest.nombreErreurs Si on a la flemme de taper tout cela tout le temps dans Toto.java, on peut importer une fois pour toutes, au d´ ebut de ce fichier, une classe : import java.lang.Math ; ou bien toutes les classes d’un paquetage : import java.lang.* ; On n’est pas dispens´ e de taper Classe.membre ou objet.membre... Exemple Math.sin(x). PPOOGL 12 Quelques conventions Tout le monde appelle ses classes avec une majuscule. Du coup les fichiers aussi. Les membres de la plupart des programmeurs sont minuscules. Vous faites bien ce que vous voudrez. PPOOGL 13 Port´ ee des classes, port´ ee des identificateurs Dans le corps d’une m´ ethode, c’est comme en C. Dans le corps d’une classe, un membre peut ˆ etre public : tout le monde le voit mˆ eme en dehors de la classe private : visible uniquement ` a l’int´ erieur de la classe protected : visible dans la classe, ses sous-classes, et le paquetage rien du tout : visible dans le paquetage Dans un paquetage, une classe peut-ˆ etre public : tout le monde le voit mˆ eme en dehors du paquetage rien du tout : visible dans le paquetage seulement Vous trouverez plein d’exemples sur le Ternet. PPOOGL 14 Types de base et objets Introduction Grands principes Pour en finir avec l’organisation Types de base et objets Le reste est dans le manuel PPOOGL 15 Les faciles Entiers sign´ es de diff´ erentes tailles : byte (8 bits), short (16), int (32), long (64) Nombres en virgule flottante : float et double boolean qui vaut true ou false char est un caract` ere Unicode (sur 16 bits !) Tous ces types ont une valeur initiale sp´ ecifi´ ee par le langage, mais javac fait des warning si on ne les initialise pas. class HelloHello { public static void main(String[] args) { int i; for(i=0; i<10; i++) { System.out.println("Hello, java, " + i + " fois?"); } } } PPOOGL 16 Les objets import java.awt.*; class HelloLaFenetre { public static void main(String[] args) { Frame objet_fenetre; objet_fenetre = new Frame("Hello, java ?") ; objet_fenetre.setSize(300,100); objet_fenetre.setVisible(true); } } PPOOGL 17 La vraie classe import java.awt.*; public class ObjetHello { private Frame fenetre; public void construit(String titre){ fenetre = new Frame(titre) ; fenetre.setSize(300,100); fenetre.setVisible(true); } //constructeurs public ObjetHello(){ construit("Hello, java ?"); } public ObjetHello(String titre){ construit(titre); } // Pas besoin de main() ici } //import java.awt.*; // plus besoin ici public class ProjetHello { public static void main(String[] args) { // un objet que c’est moi qui l’ai fait ObjetHello uoqcmqlaf; uoqcmqlaf = new ObjetHello(); uoqcmqlaf = new ObjetHello("Youpi!"); } } PPOOGL 18 H´ eritage Reprenons cet UML bˆ acl´ e : straterisk jeu terrain Plateau +cases: Case[][] = +tour_de_jeu(): void +afficher(): void +enregistrer(): void +charger(): void Case +occupants: Unite[] +meteo: Meteo +dessine_toi(): void +dessine_tes_occupants(): void Mer +dessine_toi(): void Plaine Terre +facilite +dessine_toi(): void Desert +dessine_toi(): void Montagne armee Unite +force_de_frappe: int +dessine_toi(): void UniteTerrestre UniteNavale UniteAerienne PPOOGL 19 H´ eritage et passons-le ` a dia2code package straterisk.terrain; import straterisk.jeu.Plateau; public abstract class Case { /** Attributes */ public Unite[] occupants; public Meteo meteo; /** Associations */ private Plateau; /** * Operation * */ abstract public void dessine_toi ( ); /** * Operation * */ public void dessine_tes_occupants ( ){ } } package straterisk.terrain; import straterisk.terrain.Case; public class Terre extends Case { /** Attributes */ public facilite; /** * Operation * */ public void dessine_toi ( ){ } } package straterisk.terrain; import straterisk.terrain.Terre; public class Desert extends Terre { /** * Operation * */ public void dessine_toi ( ){ } } PPOOGL 20 Remarques sordides dia2code c’est pas encore cela Il g` ere bien les import et package dans le code source, mais ne construit pas la hi´ erarchie des r´ epertoires Utilisable uniquement en phase initiale Mais bon, cela vous oblige ` a bien r´ efl´ echir votre mod` ele objet avant de coder... PPOOGL 21 H´ eritage multiple En Java, il n’y en a pas. On n’h´ erite que d’une classe au maximum, mais on peut impl´ ementer autant d’interfaces que l’on veut. Une interface, c’est une classe totalement abstraite PPOOGL 22 Retour aux types de base : les bizarres String est une classe d’objets (majuscule...) mais avec du sucre syntaxique dans le langage pour le constructeur, la concat´ enation (+), ... int i,j ; String errorMessage ; (...) errorMessage="Feature not implemented, because we started the project two days before the deadline" ; M´ ethodes d’une chaˆ ıne : errorMessage.length(), et plein d’autres. uploads/Management/ 2-java.pdf
Documents similaires










-
37
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jul 11, 2021
- Catégorie Management
- Langue French
- Taille du fichier 0.1386MB