Académique Documents
Professionnel Documents
Culture Documents
Liens commerciaux : Apparu en 1991, le langage JAVA a commenc tre intressant partir de 1995 avec sa prise en charge par le navigateur phare de l'poque, Netscape. Ce langage ne cesse de se dvelopper. Il s'agit d'un langage orient objet dont la syntaxe est trs proche de celle du C++. C'est galement un langage portable, c'est dire qu'il s'adapte une foule de plate-formes diffrentes. C'est l l'une des qualits de JAVA (qualit qui entrane un dfaut dont nous allons parler juste aprs). Grce une machine virtuelle, JAVA peut s'excuter sur une quantit incroyable de plateformes. Le rle de la machine JAVA est simple : lorsque vous installez la machine virtuelle JAVA, elle permet d'excuter sur l'architecture de l'ordinateur courant des instructions. Une machine virtuelle JAVA pour MAC et pour PC est totalement diffrente mais fera la mme chose au final (du point de vue utilisateur).Le programme JAVA restera donc identique, d'o la trs bonne portabilit de ce langage. Seules les machines virtuelles diffrent entre plates-formes diffrentes. Cette qualit entrane malheureusement un dfaut : le programme JAVA est compil tout d'abord, puis la machine virtuelle interprte la "compilation" qui vient d'tre faite. JAVA est donc plus lent que le C++. L'avantage de ce langage est qu'il permet de crer de vritables applications, et, mieux, excutables partir d'un applet (regardez l'antivirus en ligne du site, il s'agit d'un applet JAVA). N'hsitez pas consulter maintenant l'article qui vous permettra d'installer le SDK qui va vous permettre de dvelopper vos applications en JAVA.
L'cran de bienvenue s'affiche. Cliquez sur Suivant. Acceptez ensuite les termes de la licence et cliquez sur Suivant.
Choisissez ensuite un nom d'utilisateur et un mot de passe. Slectionnez ensuite Demander le nom de l'administrateur.
Dcochez les cases Enregistrer Application Server et Crer un serveur d'exemples. La case Mise niveau partir d'une version prcdente ne devrait pas vous concerner car nous installons dans ce tutorial pour la premire fois le SDK. Cliquez ensuite sur Suivant.
Un descriptif des premiers paramtres s'affiche. Vous pouvez cliquer sur Installer maintenant. Une fois l'installation russie un message vous en informe. Vous pouvez alors cliquer sur Terminer.
Utiliser BlueJ
Liens commerciaux : BlueJ est un programme qui va vous faciliter la conception d'applications en JAVA. Son interface simple mais complte est rapide prendre en main. Commencez par lancer BlueJ. Si c'est la premire fois que vous lancez le programme (ou si vous avez effectu une manipulation ultrieure), il se peut que cet cran apparaisse :
Cliquez alors sur le bouton Advanced puis slectionnez le fichier java.exe du JDK. Si vous n'avez pas install le JDK, consultez ce tutorial : installer le JDK de JAVA. Cliquez ensuite sur le bouton Lanch BlueJ. Le logiciel se lance et une fentre semblable celle-ci s'ouvre :
Cliquez ensuite sur le menu Project, puis sur New Project. Donnez un nom votre nouveau projet, BlueJ va ensuite crer un dossier portant le nom du projet. Les fichiers du projet (classes, documentation...) seront ensuite tous situs dans ce rpertoire. Une fois le projet cre, la fentre ressemblera ceci :
Nous allons maintenant crer notre premire classe JAVA. Pour ce faire, cliquez sur Edit, puis sur New Class. Choisissez Class et donnez-lui un nom. La convention veut que l'on nomme la premire lettre avec une majuscule et le reste en minuscule.
Double-cliquez ensuite sur la zone orange hachure (les hachures signifient que cette classe n'a pas t compile) reprsentant votre classe "MaClasse". Le code JAVA de votre classe s'affiche :
Vous pouvez constater que BlueJ place un code par dfaut pour la classe que vous venez de crer. Dans ce code figurent des commentaires un peu spciaux. Ils dbutent par un slash suivi de deux toiles, puis se terminent par une toile suivie d'un slash. Ces commentaires vont servir de description pour la documentation de votre projet que BlueJ gnrera automatiquement quand vous lui demanderez. Cliquez pour voir la documentation actuelle sur Implementation (en haut droite) et slectionnez Interface.
Vous pouvez constater que les commentaires modifient la documentation. Slectionnez droite le mode "Implementation" et faites un clic droit sur la classe MaClasse. Slectionnez new MaClasse(). Ceci va crer un objet de la classe MaClasse.
Vous pouvez voir l'objet en bas gauche dans BlueJ. Un clic droit sur l'objet donne accs aux mthodes de celui-ci.
Portabilit : L'un des gros avantages du langage JAVA est sa portabilit. La portabilit signifie que votre programme crit une seule fois fonctionnera sur une grande quantit de plateformes diffrentes, sans ncessiter une quelconque modification du code. Seule la machine virtuelle qui interprte les fichiers pr-compils subit des modifications. Ainsi, un utilisateur de Linux ne tlchargera pas la mme machine virtuelle qu'un utilisateur de Windows, seulement le code concoct par le ou les programmeur(s) donnera la mme chose sur les deux systmes. Dveloppement en JAVA : Lorsque vous dveloppez en JAVA, vous rencontrerez principalement deux types de fichiers :
Les fichiers ayant une extension .java : Ce sont de simples fichiers textes qui contiennent le code JAVA ncessaire votre programme. Vous pouvez ouvrir ces fichiers avec n'importe quel diteur de texte. Les fichiers ayant une extension .class : Ces fichiers ne sont pas directement ditables. Ce sont des "compilations" effectues par la machine virtuelle. Ce sont ces fichiers qui seront interprts par la machine virtuelle lorsque vous excuterez votre programme.
Liens commerciaux :
JAVA est un langage entirement orient objet. Tout votre code doit donc tre inclus dans ce qu'on appelle des classes (il vous en faudra au moins une quelle que soit l'application dsire). On dcompose chaque classe en un fichier texte qui obit aux conventions de codage JAVA. Les classes : Une classe s'crit comme ceci : public class MaClasse { //code } Il n'est pas ncessaire d'ajouter un constructeur une classe. Un constructeur est une mthode qui sera appele ds la cration de l'objet (instanciation de la classe). Cependant, si votre classe n'a ni constructeur ni mthode main() (nous allons revenir sur cette mthode plus bas) et qu'il s'agit de l'unique classe de votre projet, vous ne pourrez rien faire de concret. C'est pourquoi dans chaque projet il vous faut au moins une mthode main() qui sera appele lorsque vous utiliserez la commande java NomClasse partir de la console de votre systme d'exploitation. Voici l'exemple d'une classe avec un constructeur : public class Test { public Test() { System.out.println("L'objet a t cr"); } } Lorsque vous crerez l'objet Test via cette instruction : Test variable = new Test(); , ceci affichera l'cran "L'objet a t cr". Ceci ne fonctionnera pourtant toujours pas si votre classe est la seule du projet et que vous souhaitez l'excuter. Pour pouvoir excuter votre classe sans l'intermdiaire d'un environnement de dveloppement intgr (aussi appel IDE) comme par exemple BlueJ, vous devez imprativement ajouter une mthode main() votre classe. Mthode main() : public class Test { public static void main(String[] args) { System.out.println("Le projet a t lanc"); } }
Comme vous pouvez le voir, nous avons utilis quelques mots inconnus jusqu'alors. Parmi ces mots, on remarque la prsence des mots cls static et void que vous aurez l'occasion de voir dans la section JAVA du site. Le mot cl static signifie que la mthode main() est statique, c'est dire que vous pouvez y accder sans avoir cr d'instance de l'objet. le mot cl void signifie que la mthode main ne retourne rien. Ne vous proccupez pas de ces deux mots cls pour l'instant, sachez qu'ils doivent figurer devant toute mthode main invoque au dmarrage de votre application. Le tableau args contiendra tous les arguments que vous aurez passs la ligne de commande. Par exemple si vous appelez votre programme via la ligne de commande suivante : java Test argument1 argument2, le tableau args sera de cette forme : args[0] = "argument1"; args[1] = "argument2"; etc...
Un constructeur doit toujours tre une mthode publique Vous devez imprativement donner le mme nom que votre classe au constructeur Un constructeur ne retourne rien, c'est dire que vous n'ajouterez pas de return dans cette mthode. Vous ne devez pas mettre de void, mme si le constructeur ne retourne rien.
Voici une classe dote d'un constructeur : public class Test { public Test() { System.out.println("L'objet a t cr"); } }
Lorsque vous crerez l'objet Test via cette instruction : Test variable = new Test(); , ceci affichera l'cran "L'objet a t cr". En gnral, un constructeur sert plutt attribuer des valeurs aux attributs de la classe. Nous voici avec une classe dj plus exploitable : public class Test { private int zero; private boolean condition; public Test() { zero = 0; condition = false; System.out.println("L'objet a t cr"); } } La surcharge : En JAVA, il existe ce que l'on appelle la surcharge de mthode. Les constructeurs n'chappent pas cette rgle. La surcharge de mthode intervient lorsque l'on nomme deux mthodes l'identique, seuls les paramtres varient. Voici un exemple : public class Test { private int zero; private boolean condition; public Test() { zero = 0; condition = false; System.out.println("L'objet a t cr"); } public Test(boolean bool) { zero = 0; condition = bool; System.out.println("L'objet a t cr avec le second constructeur"); } } Maintenant une question se pose : quel constructeur va choisir JAVA lorsque vous allez crer votre objet ?
Test variable = new Test(); //Ceci va utiliser le premier constructeur car aucun paramtre n'a t fourni, et donc l'attribut "condition" de la classe vaudra false. Test variable = new Test(true); //Ceci va utiliser le second constructeur car le paramtre bool a t fourni. L'attribut "condition" vaudra true. Test variable = new Test(false); //Ceci va utiliser le second constructeur car le paramtre bool a t fourni. L'attribut "condition" vaudra false.
Le destructeur : Le destructeur est une mthode spciale qui sera appele (si elle est redfinie dans la classe) lorsque l'objet sera nettoy de la mmoire par le garbage collector. Le garbage collector est un "ramasse-miettes" charg de faciliter la tche des programmeurs en librant les ressources prises en mmoire automatiquement. Cette mthode n'est pas forcment appele lorsque vous supprimez l'objet. Pour utiliser le destructeur vous devez redfinir une mthode appele finalize() publique et qui ne renvoie rien. On peut donc avoir le code suivant : public class Test { private int zero; private boolean condition; public Test() { zero = 0; condition = false; System.out.println("L'objet a t cr"); } public void finalize() { System.out.println("Objet nettoy de la mmoire"); } }
mon_objet = new Test(); mon_objet2 = new Test(); Ensuite en fonction du code de votre classe, vous attribuerez des valeurs identiques ou diffrentes aux objets, le code de la classe restant le mme. Cration de deux objets identiques : Lorsque vous souhaitez crer deux variables qui pointent sur le mme objet, c'est trs simple. En effet, les variables d'objets ne sont que des pointeurs sur l'objet en lui-mme. Pour faire simple, voici ce code : Test mon_objet; //ici n'importe quel code mon_objet = new Test(); La variable "mon_objet" ne contient pas l'objet en lui-mme mais une adresse vers laquelle pointer pour modifier les proprits de cet objet. C'est dire que si nous crivons ceci : Test mon_objet; Test mon_objet2; //ici n'importe quel code mon_objet = new Test(); mon_objet2 = mon_objet; On aura ralis une duplication des deux variables, seulement comme la variable "mon_objet" pointe vers l'objet cr auparavant et que la variable "mon_objet2" est une copie de la prcdente variable, la variable "mon_objet2" pointera en ralit sur l'objet cr auparavant. Vous n'aurez donc pas cr deux objets mais deux rfrences qui pointent sur un seul objet. Pour crer deux objets identiques, on utilise une mthode spciale appele clone(). Le code devient le suivant : Test mon_objet; Test mon_objet2;//ici n'importe quel code mon_objet = new Test(); mon_objet2 = mon_objet.clone(); Cette fois-ci, si vous modifiez une proprit de "mon_objet2", "mon_objet" ne sera pas modifi, contrairement ce qu'il se serait pass auparavant.
Voici le tableau des types primitifs : Type primitif byte short int long float double char boolean Signification Entier trs court allant de -128 +127 Entier court allant de -32768 +32767 Entier allant de -2 147 483 648 +2 147 483 647 Entier long allant de -263 +263 -1 Nombre rel allant de -1.4 * 10-45 +3.4 * 1038 Nombre rel double prcision allant de 4.9 * 10-324 +1.7 * 10308 Caractre unicode (65536 caractres possibles) variable boolenne (valeurs : vrai ou faux) Place occupe en mmoire 1 octet 2 octets 4 octets 8 octets 4 octets 8 octets 2 octets 1 octet
Les types objets : Il existe un type objet "transparent" : le type String (notez le S majuscule, c'est important). Ce type de donnes pourra contenir une chane de caractres. Comme il s'agit d'un type objet, le type String dispose de mthodes propres, comme par exemple la mthode equals() qui permet de savoir si une chane contient la valeur dsire. Les types enveloppes :
Un type enveloppe est un type objet qui encapsule un type primitif. Grce aux classes enveloppes (aussi appeles wrappers) vous pourrez manipuler les types primitifs l'aide de mthodes inclues spcialement pour ces types enveloppes. Voici la liste des types enveloppes intgrs en JAVA : Type enveloppe Type primitif associ Byte byte Short short Integer int Long long Float float Double double Character char Boolean boolean Utilisation des types enveloppes : Voici un exemple de code qui va utiliser un entier via la classe enveloppe Integer : public class Test { Integer nombre; public Test() { nombre = new Integer(7);
System.out.println("L'objet a t cr, voici sa valeur : " + nombre); System.out.println("L'objet a t cr, voici sa valeur : " + nombre.intValue()); System.out.println("L'objet a t cr, voici sa valeur : " + nombre.floatValue()); } } Vous constatez que l'on peut dsormais utiliser des mthodes sur le type objet. Excutez le code suivant et constatez le rsultat ! Conversion de types de donnes (cast) : Le cast consiste convertir des donnes. Voici un exemple de cast : public class Test { float nombre; int nb_int; public Test() {
nombre = 3.14f; nb_int = (int) 8.14; System.out.println("Le nombre flottant vaut : " + nombre); System.out.println("Le nombre entier vaut : " + nb_int); } } Lorsque nous attribuons la valeur "3.14" la variable nombre, nous ajoutons un "f" la fin pour signifier qu'il s'agit d'un nombre flottant. Si vous ne le faites pas, vous aurez une erreur de "loss of precision" la compilation. Vous pouvez pour viter cette erreur faire un cast en signifiant que nombre est un type float, ce qui donnera ceci : public class Test { float nombre; int nb_int; public Test() { nombre = (float) 3.14; nb_int = (int) 8.14; System.out.println("Le nombre flottant vaut : " + nombre); System.out.println("Le nombre entier vaut : " + nb_int); } }
private : seules les mthodes de la classe dans laquelle est dfinit l'attribut peuvent y accder et le modifier protected : seules les mthodes de la classe et des ventuelles classes hrites peuvent accder l'attribut et le modifier public : tout le monde peut accder l'attribut en question.
Type de l'attribut : Les types correspondent aux types de donnes vus auparavant. Nom de l'attribut : Le nom que vous souhaitez donner votre attribut. Il vaut mieux qu'il se compose de caractres alphanumriques. L'underscore est autoris, toutefois vitez de le placer en premier. Dfinition de l'attribut : La dfinition d'un attribut indique que vous lui avez attribu une valeur. Ceci est facultatif. Si vous n'attribuez pas de valeur votre attribut, il y aura simplement une zone mmoire rserve, cette zone ne contiendra aucune valeur tant que vous n'aurez pas attribu de valeur votre attribut. Exemple : public class Test { private float nombre; public double attribut_public; protected int nb; public Test() { nombre = 3.14f; nb = (int) 8.14; } } Pour l'instant rien ne change ou presque de ce que vous avez eu l'occasion de voir jusqu' prsent. Les tableaux : Un tableau va vous permettre de stocker plusieurs donnes au sein d'une seule variable. Les donnes sont accessibles via des indices numriques. Pour dire que telle variable est un tableau, on fait succder le type de la variable par deux crochets : [] Si vous souhaitez attribuer une taille fixe votre tableau (pour qu'il ne puisse contenir plus d'lments que spcifi), vous devez utiliser la syntaxe suivante (on prendra un tableau
d'entiers pour notre exemple) : public int[] tableau; tableau = new int[10]; Ce tableau aura 10 cases numrotes de 0 9 (le premier indice tant 0). Exemple de tableau ayant une taille indfinie : public class Test { public int[] compteur; public Test() { compteur[0] = 0; compteur[1] = 1; System.out.println(compteur.length); } } Si vous souhaitez rcuprer la taille d'un tableau, il faut utiliser l'attribut length comme ceci : System.out.println("taille : " + tableau.length); Constantes : Les constantes diffrent des attributs "normaux" par le fait qu'elles sont dfinies une fois pour toutes. C'est pourquoi vous devez obligatoirement sur la mme ligne dclarer et dfinir la constante qui ne pourra avoir une valeur variable au cours du temps. On ajoute le mot cl final pour dire que l'attribut en question est une constante : public class Test { private final float NOMBRE = 3.14f; public Test() { System.out.println("Le nombre flottant vaut : " + NOMBRE); } } Attributs statiques : Un attribut statique est un attribut qui est commun tous les objets que vous pourrez crer. On peut par exemple citer un compteur du nombres d'instances de classe que vous aurez lances. Si vous souhaitez compter le nombre de fois o vous avez instanci la classe "Test" vous pourrez crire ceci : public class Test {
public static int nombre; public static final int nb = 5; public Test() { nombre++; System.out.println("Nombre d'instances cres : " + nombre); } } L'avantage des attributs statiques est que vous pouvez y accder mme si vous n'avez pas cr d'instance de votre classe. Ainsi, vous pourrez crire si vous le souhaitez n'importe o dans une mthode ceci : System.out.println("Nombre d'instances cres : " + Test.nb); Ce code affichera 5.
Les accesseurs : ces mthodes vont permettre de modifier un attribut priv d'une classe par une autre classe (il s'agit d'une mthode publique accessible aux autres classes). Les modificateurs : ces mthodes ne retournent rien et modifient la valeur d'un attribut priv. Il s'agit de mthodes publiques. Le reste : toutes les fonctions qui ne rentrent pas dans ces deux catgories.
Comme pour les attributs, les mthodes disposent des mmes droits d'accs qui limitent leur utilisation :
public : la mthode est accessible de n'importe o. private : la mthode est accessible uniquement dans la classe o elle figure. protected : la mthode est accessible dans la classe o elle figure et dans les classes hrites.
Exemple d'une mthode MaMethode() qui ne renvoie rien (le mot cl void est facultatif), et qui ne prend pas de paramtre d'entre : public class Test { public Test() { MaMethode(); } public void MaMethode() { System.out.println("Appel de la mthode"); } } Lorsque votre mthode doit retourner un type de donne, vous devez remplacer "void" par le type de donne que vous souhaitez. Lorsque votre mthode doit retourner une donne, on utilise le mot cl return. Attention, ce mot cl provoque l'arrt de la fonction, c'est dire que la donne sera retourne et l'ventuel code se trouvant aprs le mot return ne sera pas excut. On peut donc utiliser le mot cl return pour interrompre une fonction comme ceci : return; (ceci est valable si votre fonction ne renvoie rien, sinon vous devez retourner le type de donnes appropri, par exemple 0 pour un type de donnes int). Exemple d'une mthode acceptant un paramtre et retournant un entier : public class Test { public Test() { MaMethode(50); } public int MaMethode(int variable) { System.out.println("Le nombre que vous avez pass en paramtre vaut : " + variable); return variable + 50; //variable vaut maintenant 100 } }
La surcharge de mthodes : La surcharge survient lorsque l'on a deux mthodes du mme nom mais qui ne prennent pas les mmes paramtres. Voici un exemple de surcharge de mthode : public class Test { public Test() { MaMethode(); MaMethode(50); } public void MaMethode(int variable) { System.out.println("Le nombre que vous avez pass en paramtre vaut : " + variable); } public void MaMethode() { System.out.println("Vous avez appel la mthode sans paramtre "); } } Mthodes statiques : Une mthode statique est une mthode qui peut tre appele mme sans avoir instanci la classe. Une mthode statique ne peut accder qu' des attributs et mthodes statiques. Exemple d'application avec une mthode statique : public class Test { public int test; public static String chaine = "bonjour"; public Test() { MaMethodeStatique(); } public static void MaMethodeStatique() { int nombre = 10; System.out.println("Appel de la mthode statique : " + nombre + chaine); } }
Vous pouvez sans avoir instanci la classe accder la mthode statique en tapant ceci : Test.MaMethodeStatique(); n'importe o dans votre code.
L'instruction else se traduit en franais par "sinon". Elle va vous permettre d'excuter une action si la premire condition situe dans le "if" n'est pas ralise. Voici un exemple dans lequel on affichera que la variable n'est pas gale 20 Exemple d'instruction else : public class Test { public int variable = 15; public Test() { if(variable == 20) { System.out.println("La variable 'variable' est bien gale 20"); } else { System.out.println("La variable 'variable' n'est pas gale 20"); } } } L'instruction else if : Voici un exemple d'instruction else if qui sera je pense plus explicite qu'un long discours : public class Test { public int variable = 15; public Test() { if(variable == 20) { System.out.println("La variable 'variable' est bien gale 20"); } else if(variable == 15) { System.out.println("La variable 'variable' n'est pas gale 20 et est gale 15"); } else if(variable == 10) { System.out.println("La variable 'variable' n'est pas gale 20 ni 15 et est gale 10"); } else { System.out.println("La variable 'variable' n'est ni gale 20 ni 15 ni 10"); }
} } L'instruction Switch / case : L'instruction Switch est utile quand vous devez grer beaucoup de if / else if / else. Elle a une syntaxe plus courte et est plus approprie pour ce type de cas. Fonctionnement : switch(variable) { case 'valeur1': action1; break; case 'valeur2': action2; break; case 'valeur3':'valeur4': action3; break; default: action4; break; } Ici dans notre exemple de fonctionnement de cette instruction, on remarque la ligne case 'valeur3' : 'valeur4' :. Cette ligne veut dire que si la variable variable vaut soit 'valeur3' soit 'valeur4', alors on excutera "action4". Vous pouvez mettre autant de valeurs que vous souhaitez. Si aucune valeur ne correspond, la ou les instructions contenues dans le bloc default s'excute(nt). Voici notre exemple prcdent (bas sur des else if) traduit avec l'instruction switch / case : public class Test { public int variable = 15; public Test() { switch(variable) { case 20 : System.out.println("La variable 'variable' est bien gale 20"); break; case 15 : System.out.println("La variable 'variable' n'est pas gale 20 et est gale 15"); break; case 10 : System.out.println("La variable 'variable' n'est pas gale 20 ni 15 et est gale
10"); break; default: System.out.println("La variable 'variable' n'est ni gale 20 ni 15 ni 10"); break; } } } La ngation : La ngation s'utilise quand on souhaite par exemple dire "si telle variable n'est pas gale ". On peut utiliser l'oprateur != (qui veut dire "diffrent de") mais on peut utiliser aussi tout simplement le point d'exclamation, qui veut dire "non". Attention, le point d'exclamation s'applique une variable boolenne (true ou false), vous devrez donc mettre parfois des parenthses. Exemple : public class Test { public int variable = 15; public Test() { if(!(variable == 20)) { System.out.println("La variable 'variable' n'est pas gale 20"); } } }