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 .

Si on faisait une applet. // cela veut dire quoi.java cr´e Toto.println("Hello. sauf // la methode main. c’est pas une m´thode main qu’il e faudrait.class (le c c’est pour compilo) e java Toto lance la m´thode main de Toto.java.out. statique. Et voici le code source : class Hello { // pas d’attributs ni de methodes. java ?"). } } PPOOGL 3 .class dans la e machine virtuelle.class javac Toto. statique. fichier objet Toto.La premi`re fois e Fichier source Toto. deja ? public static void main(String[] args) { System.

class au lieu de Java Hello La raison profonde de ceci vous sera espliqu´e dans la suite. e PPOOGL 4 .Rions un peu Tapons java Hello.

Grands principes Introduction Grands principes Pour en finir avec l’organisation Types de base et objets Le reste est dans le manuel PPOOGL 5 .

un fichier ⊕ Pas de fichiers . elle charge Toto. pour l’´dition de liens et pour e l’ex´cution sont les mˆmes. e e Performance : des acc`s disques (et mˆme r´seau) cach´s au e e e e milieu de votre programme PPOOGL 6 . c’est mˆme mieux que Caml e ´ Edition de lien dynamique Lorsque la machine virtuelle a besoin de cr´er un objet de e classe Toto.h. c’est une vraie doc cr´e e par javadoc ⊕ Pas besoin de Makefile ni d’autoconf ⊕ Pas de bug dˆ au pr´processeur u e Si cela se trouve.Les trucs reposants Une classe.h ⊕ La doc du code n’est plus le fichier .class Il faut qu’elle sache o` le trouver (on verra plus loin) u ⊕ Pas d’´diteur de lien e ⊕ Pas de Makefile (je l’ai d´j` dit ?) ea ⊕ Les chemins pour la compilation.

notamment l’awt (abstract windowing toolkit). PPOOGL 7 .Applet et application applet (en fran¸ais appliquette ou programmouillette) : c destin´ ` tourner dans une fenˆtre de navigateur chez des ea e gens qu’on ne connait mˆme pas e d´rive d’une classe qui en principe prot`ge la machine hˆte e e o (sandbox) pas d’´criture ni de lecture du disque local e par contre acc`s en lecture ` tous les fichiers du Ternet par e a leur url application (en fran¸ais application) c pas les restriction pr´c´dentes e e un navigateur n’a pas plus le droit de la lancer qu’un autre ex´cutable e Applications et appliquettes partagent le gros de la biblioth`que e standard.

et qu’on laissera volontiers aux authentiques kakous.Au fait JavaScript n’a rien ` voir avec Java ` part la syntaxe superficielle : a a c’est un langage interpr´t´. pas OO pour ee e e un sou. plein de trous de s´curit´. PPOOGL 8 .

classe. e Ligne de commande : javadoc Toto. etc.. PPOOGL 9 . et construit une e doc html toute jolie Les commentaires pour Javadoc sont entre /** .Javadoc Un outil qui prend du code bien document´.. attribut.. */ Un commentaire de ce type par m´thode..java Les docs de r´f´rence des classes standard du langage sont ee construites comme cela Exemple de commentaire de l’an dernier : /** * classe Cartes */ public class Cartes extends Remote .

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 .

a e Exemples tir´s des biblioth`ques standard : e e java.math java.event On d´clare qu’une classe Toto fait partie d’un paquetage e projetLala.awt java. Les paquetages sont organis´s hi´rarchiquement en r´pertoires.awt.image java.tata en mettant tout au d´but de Toto.io java.applet java. PPOOGL 11 .awt. la classe fait partie du paquetage par d´faut.Paquetages Un paquetage c’est comme un module en Caml. e e e Rien ` voir avec la hi´rarchie des classes. mais il faut lire le manuel. En l’absence d’une telle ligne. qui s’appellera d’ailleurs jar.tata . constitu´ de e e l’ensemble des classes dans le r´pertoire courant e l’ensemble des classes accessibles par la variable CLASSPATH On peut ranger un paquetage dans une archive zip.java : e package projetLala.

lang.sin(x) la variable ` l’unicit´ plan´taire : a e e com.www.RandomTest.sin(x). au d´but e de ce fichier. Exemple Math.lala.test.projetMIM2002.membre ou e objet.Classe. on peut importer une fois pour toutes.projetMIM2002.* ..Paquetages et nommages Le nom complet d’une classe est paquetage.Math .Math.test Le nom complet d’un membre est paquetage..www.membre la fonction sinus : java.nombreErreurs Si on a la flemme de taper tout cela tout le temps dans Toto.lang.lang.Classe Unicit´ plan´taire des noms par l’URL renvers´e : e e e com. On n’est pas dispens´ de taper Classe.lala. une classe : import java.membre.java. ou bien toutes les classes d’un paquetage : import java. PPOOGL 12 .

Du coup les fichiers aussi.Quelques conventions Tout le monde appelle ses classes avec une majuscule. PPOOGL 13 . Vous faites bien ce que vous voudrez. Les membres de la plupart des programmeurs sont minuscules.

et le paquetage rien du tout : visible dans le paquetage Dans un paquetage. e Dans le corps d’une classe. un membre peut ˆtre e public : tout le monde le voit mˆme en dehors de la classe e private : visible uniquement ` l’int´rieur de la classe a e protected : visible dans la classe.Port´e des classes. c’est comme en C. ses sous-classes. PPOOGL 14 . port´e des identificateurs e e Dans le corps d’une m´thode. une classe peut-ˆtre e public : tout le monde le voit mˆme en dehors du paquetage e rien du tout : visible dans le paquetage seulement Vous trouverez plein d’exemples sur le Ternet.

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 .

int (32). long (64) Nombres en virgule flottante : float et double boolean qui vaut true ou false char est un caract`re Unicode (sur 16 bits !) e Tous ces types ont une valeur initiale sp´cifi´e par le langage. class HelloHello { public static void main(String[] args) { int i. " + i + " fois?").out. } } } PPOOGL 16 . i++) { System. for(i=0. short e e (16). java. i<10.println("Hello.Les faciles Entiers sign´s de diff´rentes tailles : byte (8 bits). e e mais javac fait des warning si on ne les initialise pas.

java ?") . class HelloLaFenetre { public static void main(String[] args) { Frame objet_fenetre.Les objets import java.setVisible(true). objet_fenetre. objet_fenetre.setSize(300.*. objet_fenetre = new Frame("Hello. } } PPOOGL 17 .100).awt.

*.awt. uoqcmqlaf = new ObjetHello(). } //constructeurs public ObjetHello(){ construit("Hello. public class ObjetHello { private Frame fenetre.La vraie classe import java.100). // plus besoin ici public class ProjetHello { public static void main(String[] args) { // un objet que c’est moi qui l’ai fait ObjetHello uoqcmqlaf.*. } public ObjetHello(String titre){ construit(titre). uoqcmqlaf = new ObjetHello("Youpi!"). } // Pas besoin de main() ici } } } //import java. fenetre. PPOOGL 18 . java ?").setVisible(true).setSize(300. fenetre. public void construit(String titre){ fenetre = new Frame(titre) .awt.

H´ritage e Reprenons cet UML bˆcl´ : a e straterisk jeu Plateau +cases: Case[][] = +tour_de_jeu(): void +afficher(): void +enregistrer(): void +charger(): void armee Unite terrain +force_de_frappe: int +dessine_toi(): void Case +occupants: Unite[] +meteo: Meteo +dessine_toi(): void +dessine_tes_occupants(): void UniteAerienne UniteNavale UniteTerrestre Mer +dessine_toi(): void Terre +facilite +dessine_toi(): void Desert +dessine_toi(): void Plaine Montagne PPOOGL 19 .

import straterisk.terrain. public class Desert extends Terre { /** * Operation * */ public void dessine_toi ( ){ } } PPOOGL 20 . public Meteo meteo. import straterisk.terrain. /** Associations */ private Plateau.Plateau.terrain.terrain. import straterisk. package straterisk. public abstract class Case { /** Attributes */ public Unite[] occupants. /** * Operation * */ abstract public void dessine_toi ( ).terrain.jeu. /** * Operation * */ public void dessine_toi ( ){ } } package straterisk.Case.H´ritage e et passons-le ` dia2code a package straterisk. /** * Operation * */ public void dessine_tes_occupants ( ){ } } public class Terre extends Case { /** Attributes */ public facilite.Terre.

.. cela vous oblige ` bien r´fl´chir votre mod`le objet a e e e avant de coder. PPOOGL 21 . mais e ne construit pas la hi´rarchie des r´pertoires e e Utilisable uniquement en phase initiale Mais bon.Remarques sordides dia2code c’est pas encore cela Il g`re bien les import et package dans le code source.

il n’y en a pas.H´ritage multiple e En Java. On n’h´rite que d’une classe au maximum. c’est une classe totalement abstraite PPOOGL 22 . mais on peut e impl´menter autant d’interfaces que l’on veut. e Une interface.

la concat´nation (+).Retour aux types de base : les bizarres String est une classe d’objets (majuscule.. .. M´thodes d’une chaˆ : errorMessage. (...length(). because we started the project two days before the deadline" . etc PPOOGL 23 .) errorMessage="Feature not implemented.j .) mais avec du sucre syntaxique dans le langage pour le constructeur. e int i.. String errorMessage .. et plein e ıne d’autres. Il y a aussi des chaˆ ınes de taille variable (StringBuffer).

i<args.length. for(i=0. if(args.length == 0) System. } } } PPOOGL 24 .length].Retour aux types : les bizarres (2) Les tableaux sont aussi des objets avec du sucre syntaxique et s´mantique (classe param´tr´e). plein_de_fenetres = new ObjetHello[args. e e e public class SpaceHello { public static void main(String[] args) { ObjetHello[] plein_de_fenetres. i++) plein_de_fenetres[i] = new ObjetHello(args[i]).println("Usage: java SpaceHello text ").err. else { int i.

Le reste est dans le manuel Introduction Grands principes Pour en finir avec l’organisation Types de base et objets Le reste est dans le manuel PPOOGL 25 .

R´f´rences ee Le site de Sun Des tutoriels La doc de r´f´rence sur le langage (on s’en passe bien) ee La doc de r´f´rences sur les classes standard (` parcourir ee a absolument !) le tout t´l´chargeable pour pouvoir partir en vacances avec ee Plein de bouquins ` la biblioth`que a e Celui de Brondeau en fran¸ais c ⊕ court ⊕ en fran¸ais c date un peu un peu l`ge sur l’OO e PPOOGL 26 .

Sign up to vote on this title
UsefulNot useful