Académique Documents
Professionnel Documents
Culture Documents
Florent de Dinechin
Java en 30 minutes
1 Introduction 2 Grands principes 3 Pour en nir avec lorganisation 4 Types de base et objets 5 Le reste est dans le manuel
Introduction
1 Introduction 2 Grands principes 3 Pour en nir avec lorganisation 4 Types de base et objets 5 Le reste est dans le manuel
La premi`re fois que vous mettez votre main dans le java e Fichier source Toto.java, chier objet Toto.class
La premi`re fois que vous mettez votre main dans le java e Fichier source Toto.java, chier objet Toto.class javac Toto.java cre Toto.class (le c cest pour compilo) e
La premi`re fois que vous mettez votre main dans le java e Fichier source Toto.java, chier objet Toto.class javac Toto.java cre Toto.class (le c cest pour compilo) e java Toto lance la mthode main de Toto.class dans la e machine virtuelle.
La premi`re fois que vous mettez votre main dans le java e Fichier source Toto.java, chier objet Toto.class javac Toto.java cre Toto.class (le c cest pour compilo) e java Toto lance la mthode main de Toto.class dans la e machine virtuelle. Si on faisait une applet, cest pas une mthode main quil e faudrait.
La premi`re fois que vous mettez votre main dans le java e Fichier source Toto.java, chier objet Toto.class javac Toto.java cre Toto.class (le c cest pour compilo) e java Toto lance la mthode main de Toto.class dans la e machine virtuelle. Si on faisait une applet, cest pas une mthode main quil e faudrait. Et voici le code source : class Hello { // pas dattributs ni de mthodes, sauf e // la mthode main, statique. e // cela veut dire quoi, statique, dja ? e public static void main(String[] args) { System.out.println("Hello, java ?"); } }
3
Grands principes
1 Introduction 2 Grands principes 3 Pour en nir avec lorganisation 4 Types de base et objets 5 Le reste est dans le manuel
Pas de chiers .h
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cre e
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cre e
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cre e
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cre e
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cre e
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cre e
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cre e
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cre e
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cre e
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cre e
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cre e
par javadoc
Applet et application applet (en franais appliquette ou programmouillette) : c destin ` tourner dans une fentre de navigateur chez des ea e gens quon ne connait mme pas e drive dune classe qui en principe prot`ge la machine hte e e o (sandbox)
pas dcriture ni de lecture du disque local e par contre acc`s en lecture ` tous les chiers du Ternet par e a leur url
Applet et application
application (en franais application) c pas les restriction prcdentes e e un navigateur na pas plus le droit de la lancer quun autre excutable e
Applet et application applet (en franais appliquette ou programmouillette) : c destin ` tourner dans une fentre de navigateur chez des ea e gens quon ne connait mme pas e drive dune classe qui en principe prot`ge la machine hte e e o (sandbox)
pas dcriture ni de lecture du disque local e par contre acc`s en lecture ` tous les chiers du Ternet par e a leur url
application (en franais application) c pas les restriction prcdentes e e un navigateur na pas plus le droit de la lancer quun autre excutable e Applications et appliquettes partagent le gros de la biblioth`que e standard, notamment lawt (abstract windowing toolkit).
6
Au fait
JavaScript na rien ` voir avec Java ` part la syntaxe supercielle : a a cest un langage interprt, plein de trous de scurit, pas OO pour ee e e un sou, et quon laissera volontiers aux authentiques kakous.
Javadoc
Un outil qui prend du code bien document, et construit une e doc html toute jolie Les commentaires pour Javadoc sont entre /** ... */ Un commentaire de ce type par mthode, attribut, classe, etc. e Ligne de commande : javadoc Toto.java Les docs de rfrence des classes standard du langage sont ee construites comme cela
Javadoc
Un outil qui prend du code bien document, et construit une e doc html toute jolie Les commentaires pour Javadoc sont entre /** ... */ Un commentaire de ce type par mthode, attribut, classe, etc. e Ligne de commande : javadoc Toto.java Les docs de rfrence des classes standard du langage sont ee construites comme cela Exemple de commentaire de lan dernier : /** * classe Cartes */ public class Cartes extends Remote ...
8
Paquetages
10
10
Paquetages Un paquetage cest comme un module en Caml. Les paquetages sont organiss hirarchiquement en rpertoires. e e e Rien ` voir avec la hirarchie des classes. a e
10
Paquetages Un paquetage cest comme un module en Caml. Les paquetages sont organiss hirarchiquement en rpertoires. e e e Rien ` voir avec la hirarchie des classes. a e Exemples tirs des biblioth`ques standard : e e java.applet java.math java.io java.awt java.awt.image java.awt.event
10
Paquetages Un paquetage cest comme un module en Caml. Les paquetages sont organiss hirarchiquement en rpertoires. e e e Rien ` voir avec la hirarchie des classes. a e Exemples tirs des biblioth`ques standard : e e java.applet java.math java.io java.awt java.awt.image java.awt.event On dclare quune classe Toto fait partie dun paquetage e projetLala.tata en mettant tout au dbut de Toto.java : e package projetLala.tata ;
10
Paquetages Un paquetage cest comme un module en Caml. Les paquetages sont organiss hirarchiquement en rpertoires. e e e Rien ` voir avec la hirarchie des classes. a e Exemples tirs des biblioth`ques standard : e e java.applet java.math java.io java.awt java.awt.image java.awt.event On dclare quune classe Toto fait partie dun paquetage e projetLala.tata en mettant tout au dbut de Toto.java : e package projetLala.tata ; En labsence dune telle ligne, la classe fait partie du paquetage par dfaut, constitu de e e
lensemble des classes dans le rpertoire courant e lensemble des classes accessibles par la variable CLASSPATH
10
Paquetages Un paquetage cest comme un module en Caml. Les paquetages sont organiss hirarchiquement en rpertoires. e e e Rien ` voir avec la hirarchie des classes. a e Exemples tirs des biblioth`ques standard : e e java.applet java.math java.io java.awt java.awt.image java.awt.event On dclare quune classe Toto fait partie dun paquetage e projetLala.tata en mettant tout au dbut de Toto.java : e package projetLala.tata ; En labsence dune telle ligne, la classe fait partie du paquetage par dfaut, constitu de e e
lensemble des classes dans le rpertoire courant e lensemble des classes accessibles par la variable CLASSPATH
On peut ranger un paquetage dans une archive zip, qui sappellera dailleurs jar, mais il faut lire le manuel.
10
11
Paquetages et nommages Le nom complet dune classe est paquetage.Classe Unicit plantaire des noms par lURL renverse : e e e com.projetMIM2002.www.lala.test
11
Paquetages et nommages Le nom complet dune classe est paquetage.Classe Unicit plantaire des noms par lURL renverse : e e e com.projetMIM2002.www.lala.test Le nom complet dun membre est paquetage.Classe.membre
11
Paquetages et nommages Le nom complet dune classe est paquetage.Classe Unicit plantaire des noms par lURL renverse : e e e com.projetMIM2002.www.lala.test Le nom complet dun membre est paquetage.Classe.membre
la fonction sinus : java.lang.Math.sin(x)
11
Paquetages et nommages Le nom complet dune classe est paquetage.Classe Unicit plantaire des noms par lURL renverse : e e e com.projetMIM2002.www.lala.test Le nom complet dun membre est paquetage.Classe.membre
la fonction sinus : java.lang.Math.sin(x) la variable ` lunicit plantaire : a e e
com.projetMIM2002.www.lala.test.RandomTest.nombreErreurs
11
Paquetages et nommages Le nom complet dune classe est paquetage.Classe Unicit plantaire des noms par lURL renverse : e e e com.projetMIM2002.www.lala.test Le nom complet dun membre est paquetage.Classe.membre
la fonction sinus : java.lang.Math.sin(x) la variable ` lunicit plantaire : a e e
com.projetMIM2002.www.lala.test.RandomTest.nombreErreurs
Si on a la emme de taper tout cela tout le temps dans Toto.java, on peut importer une fois pour toutes, au dbut e de ce chier,
une classe : import java.lang.Math ; ou bien toutes les classes dun paquetage : import java.lang.* ;
11
Paquetages et nommages Le nom complet dune classe est paquetage.Classe Unicit plantaire des noms par lURL renverse : e e e com.projetMIM2002.www.lala.test Le nom complet dun membre est paquetage.Classe.membre
la fonction sinus : java.lang.Math.sin(x) la variable ` lunicit plantaire : a e e
com.projetMIM2002.www.lala.test.RandomTest.nombreErreurs
Si on a la emme de taper tout cela tout le temps dans Toto.java, on peut importer une fois pour toutes, au dbut e de ce chier,
une classe : import java.lang.Math ; ou bien toutes les classes dun paquetage : import java.lang.* ;
Quelques conventions
Tout le monde appelle ses classes avec une majuscule. Du coup les chiers aussi. Les membres de la plupart des programmeurs sont minuscules. Vous faites bien ce que vous voudrez.
12
13
13
Dans le corps dune mthode, cest comme en C. e Dans le corps dune classe, un membre peut tre e
public : tout le monde le voit mme en dehors de la classe e private : visible uniquement ` lintrieur de la classe a e protected : visible dans la classe, ses sous-classes, et le paquetage rien du tout : visible dans le paquetage
13
Dans le corps dune mthode, cest comme en C. e Dans le corps dune classe, un membre peut tre e
public : tout le monde le voit mme en dehors de la classe e private : visible uniquement ` lintrieur de la classe a e protected : visible dans la classe, ses sous-classes, et le paquetage rien du tout : visible dans le paquetage
13
Dans le corps dune mthode, cest comme en C. e Dans le corps dune classe, un membre peut tre e
public : tout le monde le voit mme en dehors de la classe e private : visible uniquement ` lintrieur de la classe a e protected : visible dans la classe, ses sous-classes, et le paquetage rien du tout : visible dans le paquetage
14
Les faciles Entiers signs de direntes tailles : byte (8 bits), short e e (16), int (32), long (64) Nombres en virgule ottante : 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 spcie par le langage, e e 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?"); } } }
15
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); } }
16
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 cest moi qui lai fait ObjetHello uoqcmqlaf; uoqcmqlaf = new ObjetHello(); uoqcmqlaf = new ObjetHello("Youpi!");
17
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
18
19
Remarques sordides
dia2code cest pas encore cela Il g`re bien les import et package dans le code source, mais e ne construit pas la hirarchie des rpertoires e e La version du CRI est un peu vieille Utilisable uniquement en phase initiale Mais bon, cela vous oblige ` bien rchir votre mod`le objet a e e e avant de coder...
20
String est une classe dobjets (majuscule...) mais avec du sucre syntaxique dans le langage pour le constructeur, la concatnation (+), ... e int i,j ; String errorMessage ; (...) errorMessage="Feature not implemented, because we started the project two days before the deadline" ; Mthodes dune cha : errorMessage.length(), et plein e ne dautres. Il y a aussi des cha nes de taille variable (StringBuffer), etc
21
Retour aux types : les bizarres (2) Les tableaux sont aussi des objets avec du sucre syntaxique et smantique (classe paramtre). e e e
public class SpaceHello { public static void main(String[] args) { ObjetHello[] plein_de_fenetres; if(args.length == 0) System.err.println("Usage: java SpaceHello text "); else { int i; plein_de_fenetres = new ObjetHello[args.length]; for(i=0; i<args.length; i++) plein_de_fenetres[i] = new ObjetHello(args[i]); } } }
22
23
Rfrences ee
Le site de Sun
Des tutoriels La doc de rfrence sur le langage (on sen passe bien) ee La doc de rfrences sur les classes standard (` parcourir ee a absolument !) le tout tlchargeable pour pouvoir partir en vacances avec ee
court en franais c
un peu l`ge sur lOO e
24