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` ere fois que vous mettez votre main dans le java
La premi` ere fois que vous mettez votre main dans le java Fichier source Toto.java, chier objet Toto.class
La premi` ere fois que vous mettez votre main dans le java Fichier source Toto.java, chier objet Toto.class javac Toto.java cr ee Toto.class (le c cest pour compilo)
La premi` ere fois que vous mettez votre main dans le java Fichier source Toto.java, chier objet Toto.class javac Toto.java cr ee Toto.class (le c cest pour compilo) java Toto lance la m ethode main de Toto.class dans la machine virtuelle.
La premi` ere fois que vous mettez votre main dans le java Fichier source Toto.java, chier objet Toto.class javac Toto.java cr ee Toto.class (le c cest pour compilo) java Toto lance la m ethode main de Toto.class dans la machine virtuelle. Si on faisait une applet, cest pas une m ethode main quil faudrait.
La premi` ere fois que vous mettez votre main dans le java Fichier source Toto.java, chier objet Toto.class javac Toto.java cr ee Toto.class (le c cest pour compilo) java Toto lance la m ethode main de Toto.class dans la machine virtuelle. Si on faisait une applet, cest pas une m ethode main quil faudrait. Et voici le code source : class Hello { // pas dattributs ni de m ethodes, sauf // la m ethode main, statique. // cela veut dire quoi, statique, d eja ? 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 cr ee
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cr ee
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cr ee
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cr ee
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cr ee
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cr ee
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cr ee
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cr ee
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cr ee
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cr ee
par javadoc
Pas de chiers .h La doc du code nest plus le chier .h, cest une vraie doc cr ee
par javadoc
Applet et application applet (en fran cais appliquette ou programmouillette) : destin e` a tourner dans une fen etre de navigateur chez des gens quon ne connait m eme pas d erive dune 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 chiers du Ternet par leur url
Applet et application
application (en fran cais application) pas les restriction pr ec edentes un navigateur na pas plus le droit de la lancer quun autre ex ecutable
Applet et application applet (en fran cais appliquette ou programmouillette) : destin e` a tourner dans une fen etre de navigateur chez des gens quon ne connait m eme pas d erive dune 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 chiers du Ternet par leur url
application (en fran cais application) pas les restriction pr ec edentes un navigateur na pas plus le droit de la lancer quun autre ex ecutable Applications et appliquettes partagent le gros de la biblioth` eque standard, notamment lawt (abstract windowing toolkit).
6
Au fait
JavaScript na rien ` a voir avec Java ` a part la syntaxe supercielle : cest un langage interpr et e, plein de trous de s ecurit e, pas OO pour un sou, et quon laissera volontiers aux authentiques kakous.
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
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 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 organis es hi erarchiquement en r epertoires. Rien ` a voir avec la hi erarchie des classes.
10
Paquetages Un paquetage cest 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
10
Paquetages Un paquetage cest 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 quune classe Toto fait partie dun paquetage projetLala.tata en mettant tout au d ebut de Toto.java : package projetLala.tata ;
10
Paquetages Un paquetage cest 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 quune classe Toto fait partie dun paquetage projetLala.tata en mettant tout au d ebut de Toto.java : package projetLala.tata ; En labsence dune telle ligne, la classe fait partie du paquetage par d efaut, constitu e de
lensemble des classes dans le r epertoire courant lensemble des classes accessibles par la variable CLASSPATH
10
Paquetages Un paquetage cest 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 quune classe Toto fait partie dun paquetage projetLala.tata en mettant tout au d ebut de Toto.java : package projetLala.tata ; En labsence dune telle ligne, la classe fait partie du paquetage par d efaut, constitu e de
lensemble des classes dans le r epertoire courant 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 e plan etaire des noms par lURL renvers ee : com.projetMIM2002.www.lala.test
11
Paquetages et nommages Le nom complet dune classe est paquetage.Classe Unicit e plan etaire des noms par lURL renvers ee : 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 e plan etaire des noms par lURL renvers ee : 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 e plan etaire des noms par lURL renvers ee : com.projetMIM2002.www.lala.test Le nom complet dun membre est paquetage.Classe.membre
la fonction sinus : java.lang.Math.sin(x) la variable ` a lunicit e plan etaire :
com.projetMIM2002.www.lala.test.RandomTest.nombreErreurs
11
Paquetages et nommages Le nom complet dune classe est paquetage.Classe Unicit e plan etaire des noms par lURL renvers ee : com.projetMIM2002.www.lala.test Le nom complet dun membre est paquetage.Classe.membre
la fonction sinus : java.lang.Math.sin(x) la variable ` a lunicit e plan etaire :
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 d ebut 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 e plan etaire des noms par lURL renvers ee : com.projetMIM2002.www.lala.test Le nom complet dun membre est paquetage.Classe.membre
la fonction sinus : java.lang.Math.sin(x) la variable ` a lunicit e plan etaire :
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 d ebut 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 m ethode, cest comme en C. Dans le corps dune classe, un membre peut etre
public : tout le monde le voit m eme en dehors de la classe private : visible uniquement ` a lint erieur de la classe protected : visible dans la classe, ses sous-classes, et le paquetage rien du tout : visible dans le paquetage
13
Dans le corps dune m ethode, cest comme en C. Dans le corps dune classe, un membre peut etre
public : tout le monde le voit m eme en dehors de la classe private : visible uniquement ` a lint erieur de la classe protected : visible dans la classe, ses sous-classes, et le paquetage rien du tout : visible dans le paquetage
13
Dans le corps dune m ethode, cest comme en C. Dans le corps dune classe, un membre peut etre
public : tout le monde le voit m eme en dehors de la classe private : visible uniquement ` a lint erieur de la classe protected : visible dans la classe, ses sous-classes, et le paquetage rien du tout : visible dans le paquetage
14
Les faciles Entiers sign es de di erentes tailles : byte (8 bits), short (16), int (32), long (64) Nombres en virgule ottante : 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 eci 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?"); } } }
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` ere bien les import et package dans le code source, mais ne construit pas la hi erarchie des r epertoires La version du CRI est un peu vieille Utilisable uniquement en phase initiale Mais bon, cela vous oblige ` a bien r e echir votre mod` ele objet avant de coder...
20
String est une classe dobjets (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 dune cha ne : errorMessage.length(), et plein 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 s emantique (classe param etr ee).
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
R ef erences
Le site de Sun
Des tutoriels La doc de r ef erence sur le langage (on sen passe bien) La doc de r ef erences sur les classes standard (` a parcourir absolument !) le tout t el echargeable pour pouvoir partir en vacances avec
24