tutoriel java

34
Cours Tutoriel Java pour D´ ebutant Auteur : DIABY Kalilou eveloppeur E-mail : [email protected] 1

Upload: kalilou-diaby

Post on 09-Aug-2015

69 views

Category:

Technology


1 download

TRANSCRIPT

Cours Tutoriel Java pour Debutant

Auteur : DIABY KalilouDeveloppeur

E-mail : [email protected]

1

dika

”Le bonheur c’est lorsque nos actes sont en conformites avec nospensees ”: Gandhi

2

Sommaire

Dans notre seance de tutoriel nous aborderons dans un premier temps les methodes :

Outils de la Programmation Orientee Objet.

Puis des , l’heritage, le JAVABEAN, les exceptions, le design pattern , et par finir sur

un apercu des JDBC.

NB : Nous aborderons pas le cote graphique de JAVA car d’un point de vue per-

sonnelles, je trouve qu’il existe des outils beaucoup plus puissants permettant de

developper de maniere graphique et de l’appeler dans un langage de programmation

tel que JAVA.

3

Part I

Generalites

1 Rappels sur le monde de JAVA

1.1 Historique : Source : Wikipedia

Le langage Java est un langage de programmation informatique oriente objetcree par James Gosling et Patrick Naughton, employes de Sun Microsystems,avec le soutien de Bill Joy (cofondateur de Sun Microsystems en 1982), presenteofficiellement le 23 mai 1995 au SunWorld.

La societe Sun a ete ensuite rachetee en 2009 par la societe Oracle qui detientet maintient desormais Java.

La particularite et l’objectif central de Java est que les logiciels ecrits dans celangage doivent etre tres facilement portables sur plusieurs systemes d’exploitationtels que UNIX, Windows, Mac OS ou GNU/Linux, avec peu ou pas de modi-fications. Pour cela, divers plateformes et frameworks associes visent a guider,sinon garantir, cette portabilite des applications developpees en Java. Le lan-gage Java reprend en grande partie la syntaxe du langage C++, tres utilisee parles informaticiens. Neanmoins, Java a ete epure des concepts les plus subtilsdu C++ et a la fois les plus deroutants, tels que les pointeurs et references, oul’heritage multiple contourne par l’implementation des interfaces. Les concep-teurs ont privilegie l’approche orientee objet de sorte qu’en Java, tout est objeta l’exception des types primitifs (nombres entiers, nombres a virgule flottante,etc.).

Java permet de developper des applications client-serveur. Cote client, lesapplets sont a l’origine de la notoriete du langage. C’est surtout cote serveur queJava s’est impose dans le milieu de l’entreprise grace aux servlets, le pendantserveur des applets, et plus recemment les JSP (JavaServer Pages) qui peuventse substituer a PHP, ASP et ASP.NET.

Java a donne naissance a un systeme d’exploitation (JavaOS), a des envi-ronnements de developpement (eclipse/JDK), des machines virtuelles (MSJVM(en), JRE) applicatives multiplate-forme (JVM), une declinaison pour les peripheriquesmobiles/embarques (J2ME), une bibliotheque de conception d’interface graphique(AWT/Swing), des applications lourdes (Jude, Oracle SQL Worksheet, etc.), destechnologies web (servlets, applets) et une declinaison pour l’entreprise (J2EE).La portabilite du bytecode Java est assuree par la machine virtuelle Java, eteventuellement par des bibliotheques standard incluses dans un JRE. Cette ma-chine virtuelle peut interpreter le bytecode ou le compiler a la volee en langagemachine. La portabilite est dependante de la qualite de portage des JVM surchaque OS.

1.2 Recommandations

Salut a tous et a toutes.

Ce cours se presentera sous forme de tutoriels et sera a vrai dire differents de ceux que

vous aviez l’habitude de voir.

On partira d’un principe tres simple : Toujours donner le meilleur de soi meme et ne

4

jamais au grand jamais donner son maximum

Ce tutoriel se presentera sous la forme de petits exemples qui seront expliques de facon

simples en vue de faciliter sa comprehension. L’objet d’un tel document fut motive

par deux facteurs que sont:

- la demystification de certains aspects de la programmation que l’on rencontre dans

bon nombre de documents de programmations.

- la mise a la disposition de documents assez simple de comprehension et de lecture

de tous.

- l’elaboration et ecriture de programmes intelligents, simple et propre.

- l’ utilite de tel ou tel langage de programmation.

5

Part II

Premiers pas

2 Introduction

En POO (Programmation Oriente Objet), JAVA, tout est classe et objet. Dans notreschema, nous obeirons la norme JAVABEAN, et ceux des le debut de ce tutoriel. Ilnous est possible de developper de maniere traditionnelle ou d’utiliser un IDE. Nousopterons ici pour l’ EDI (Environnement de Developpement Integre) ; peut importecelui que vous utiliser : ECLIPSE, INTELLIJI, NETBEANS.Ecrivons notre premier projet JAVA ( ctrl + n ), et donnons un nom a notre projet ;dans mon cas je travaille avec JDK 7 .Une fois cela fait creons notre 1 ere classe JAVA : dika.javaAu moment de la creation de dika.java, il nous est demande de renseigner un nomde Package que nous remplirons selon la convention du Reverse DNS pour Nom dedomaine Inverse. Pour ceux qui ne le savent pas, le DNS est le nom que l’on attribuea une adresse IP(192.168.15.42) en vue de faciliter son acces que ce soit par le clientque par l’Informaticien. Cette @ IP fictive correspond a www.google.ci.A supposer que l’on developpe pour ces derniers, on pourrait entrer comme nom depackage : ci.google.vuegenerale.Ou dans le cas, ou l’on aura a utiliser plusieurs packages : ci.google.vuegenerale.machine.controlVue qu’ici on aborde JAVA de facon simple, nous n’allons pas trop polemiquer sur ceque c’est le package.Ensuite creons notre classe en y ajoutant un nom a la classe.Exemple :

Ajoutons un message de bienvenue dans notre console qui se trouve a cote de l’ongletproblemes Pour ce faire, nous rajouterons ce bout de code :System.out.println(”Bienvenue”);ou System.out.print(”Bienvenue”); .On obtient donc

6

:package com.dikait.vuegenerale;

public class dika {

public static void main(String[ ] args) {System.out.println(”Bienvenue”);

} }Le System.out.print(”Bienvenue”) se contentera d’afficher le mot Bienvenue sans re-

tour a la ligne. Alors que le System.out.println(”Bienvenue”); ferait automatiquement

un retour a la ligne. Vous pouviez le tester en rajoutant d’autres choses dans votre

code.

7

Part III

Outils de la POO en JAVA

3 Les types Objets et primitifs

3.1 Les types primitifs

En POO, on emploie generalement le terme type primitif que lorsque veut faitreference a des variables de types simples c’est a dire predefinie dans le langage enquestion.Il est d’usage de mettre la premiere lettre du nom de notre attribut( variable ) enminuscules, puis le completer ”comme nous le voulons”.En JAVA, il en existe un bon nombre. Ce qui est le cas des autres langages de pro-grammation orientes objets.Neanmoins certaines differences s’y glissent d’un langage a un autre.Exemple : En Java le type String est un type primitif, alors qu’en CSharp (C#) cetype est a la fois Objet et/ou primitif selon l’ecriture que l’on emploie; en l’ecrivantavec un grand ”S” il est un type Objet, et en l’ecrivant avec un ”s” il devient un typeprimitif.Pour rester dans le cadre de JAVA, nous parlerons des types primitifs les plus utilisesque sont:- Integer (Entier): Ce type permet de gerer des attributs qui serviront au programmeurde manipuler les entiers.- Double (double): Ce type permet de gerer des attributs qui prendront des valeursdecimal avec une plage bien definie( nombre de zeros connue).- Float (Reel ): Ce type permet la manipulation de valeurs reel. Vous remarque sansdoute qu’il a les memes fonctions que le double, alors quelle differences existent-ilsentre ces deux types.La reponse a cette question serait en terme d’espaces de memoire qu’elle offre auxattributs qui sont declares en ce type; la plage est bien plus importante que celle dudouble.- Char (caractere): Celui ci permet la gestion des caracteres(Exemple : a, est un car-actere).- String (Chaıne de caracteres) : Comme son nom l’indique permet la gestion dechaınes de caracteres(mot bien faites ou pas). Retenez que ce sont des attributs quivous serviront dans votre programme vous pourriez choisir les noms qui vous sien.

3.2 Les types Objets

Lorsque l’on parle de type Objet, en fait l’on fait reference a un modele qui nousest propre; c’est a dire que ce type a ete creer par nous meme. Ce type possede descomportements qui ont ete definies par le programmeur lui meme. Pour ce qui est del’exemple voir la partie sur les classes. Exemple : Personne dika = new Personne();

4 Quelques mots clef

8

4.1 this

Le mot clef this, est l’un des termes le plus utilise en POO. Car il permet auprogrammeur de specifier a son code qu’il souhaiterait effectuer une tache ouun traitement sur l’objet en cours; il permet donc l’instanciation de l’objet encours.Sa syntaxe est : this.objet;Il s’utilise tres souvent a l’interieur de methodes predefinies par le langage oudefinie par le programmeur (l’ utilisateur).NB : Ne perdez pas de vue le fait qu’en JAVA tout est classe et Objet.

4.2 super

En POO, nous sommes le plus souvent confrontes a des problemes de redefinitionde methodes. Ce qui a tendance a souvent porter a confusion bon nombre deprogrammeurs.Pour palier a ce probleme Java a mis a la disposition des programmeurs,le motclef super afin que tout programmeur qui souhaiterait manipuler des methodesredefinies de la classe mere dans la classe fille, puisse le faire.Sa syntaxe est la suivante : super.methodeDeLaClasseMereRedefinie();

4.3 null

En POO, le vide est symbolise par le terme null et non par un espace blanc(champvide).Parlant du vide qu’entendons-nous?Par vide, nous exprimons le fait pour un objet, son existence ou pas. Partantde l’exemple de certaines chemises, il est possible de s’apercevoir que certainesd’entre elles n’ont pas de poches. On pourrait dans ce cas en JAVA, parler depoche == null .

5 Les methodes en POO JAVA

5.1 Methode de classe

Une methode peut-etre defini comme une fonction, qui sera utilisable dans tout leprogramme. Elle possede un type de retour(primitif ou objet) , une portee, un ou desarguments, et le mot cle static. Elle permet une organisation plus simple et efficacedes objets que nous auront a utiliser. Exemple de methode de classe :Type de retour: void (rien)Portee : PublicLe nom de la methode ici correspond a methode-de-classeNombre d’arguments : aucun

5.2 Methode Objets

Methodes d’objets quand a eux n’ont pas le mot cle static. Nous verrons plus en detail

cela lorsque nous verrons les getters et setters.

Portee Public : Accessible a toutes les classes du package.

9

private: Accessible qu’aux methodes de la classe dans laquelle elle est contenue.

protected : Accessible au meme package.

5.3 Redefinition

La redefinition consiste a reecrire une methode deja existante de notre classemere, dans notre classe heritiere ( fille ). De ce fait si l’on herite de la methodeJavaBean(String nom, String prenom), on pourrait redefinir cette methode enla modifiant en gardant ces arguments, portee, ...Exemple : Redefinition.java

- JavaBean.javaimport java.util.Set;

public class JavaBean {String nom, prenom;

public JavaBean() { ... }

public String getNom() {return nom; }

public String getPrenom() {return prenom; }

public void setNom(String nom) {this.nom = nom; }

public void setPrenom(String prenom) {this.prenom = prenom; }

10

public void JavaBeanMethodeARedefinir(String nom, String prenom) {System.out.println(”Je suis la mehode JavaBeanMethodeARedefinir de la classemere”); }}

- Redefinition.java

public class Redefinition extends JavaBean {

public void JavaBeanMethodeARedefinir(String nom, String prenom) {super.JavaBeanMethodeARedefinir(nom, prenom);// Le mot super permet de faire reference a la classe mereSystem.out.println(”Je suis la mehode JavaBeanMethodeARedefinir de la classefille”);}

public static void main(String[ ] args) {Redefinition objet = new Redefinition();objet.JavaBeanMethodeARedefinir(””, ””); }}

5.4 Surcharge

La surcharge ou sur-definition consiste pour une methode d’etre reecrite avecdes arguments differents.Par exemple dans la premiere, on peut avoir un argument, dans la deuxiemedeux argument,et ainsi de suite, ... , et toujours en gardant la meme signa-ture(type de retour, portee, nom de la methode).Exemple : Sucharge.javaclass Test {public void personne(String nom) {// la methode prend un argumentSystem.out.println(”Je prends un seul argument qui est : ” + nom); }

public void personne(String nom, String prenom) {// la methode prend deux argumentsSystem.out.println(”Je prends deux arguments qui sont : ” + nom + ” ” +prenom); }}public class Surchage {public static void main(String[ ] args) {Test objet = new Test();// creation d’un nouvel objetobjet.personne(”DIABY”);objet.personne(”DIABY”, ”Kalilou”); }}

11

6 Polymorphisme

Le polymorphisme est le fait de pouvoir redefinir des methodes herite de laclasse de base. C’est la possibilite de traiter de la meme maniere des objets detype differents, pour peu qu’ils soient tous de classes derivees de la meme classemere.Son but est d’ameliorer l’extensibilite d’un programme.

7 Encapsulation

L’encapsulation est un terme qui signifie qu’il n’est pas possible d’agir di-rectement sur les donnees. Pour ce faire, on utilise des methodes qui jouent lerole d’interfaces.En JAVA, cela est realise via les accesseurs et mutateurs se trouvant dans notrebean.

8 Interaction utilisateur

8.1 Generalites

Dans toute activite et vie humaine, la communication est une conditionnecessaire a son bon fonctionnement et son maintient.C’est s’inspirant de ce principe, que tout programme se doit d’etre le plus inter-actif que possible en donnant la main a l’utilisateur de telle sorte a eviter qu’ils’ennuie assez vite lorsqu’il sera amener a utiliser votre application.En POO, ou PP , cela se fait via des methodes deja existantes dans des classesfournies et developpeurs par les concepteurs de ce logiciel.

8.2 Methode de saisie utilisateur

8.2.1 Scanner

La methode Scanner est une methode permettant de donner la main a l’utilisateur.Elle s’ insert dans notre code grace a ce bout de code :Scanner saisieUtilisateur = new Scanner(System.in);/* System est une classe JAVA. Le ”.in” ou ”.out” permet d’utiliser respective-ment l’entree et la sortie du clavier .*/On a aussi besoin d’importer le package qui lui faut. Ici, le terme package corre-spond a une librairie. Car en important un package, on charge la librairie danslequel se trouve la methode appelante.Cela se fait grace a cette instruction : import java.io.*;// Le * permet d’importer tous les elements de cette librairie d’entree et sortie.Exemple : Interaction.java

import java.util.Scanner;class Interaction{public static void main String [ ] args){

12

private int valeur1;Scanner lecture = new Scanner(System.in);valeur1 = lecture.nextInt();}}

8.2.2 Autres methodes

Pour ce qui est des autres methodes veuillez a vous referer au web. Un tas dedocuments s’y trouvent.

9 Outils de comparaisons

En programmation et dans la vie de tous les jours, l’on est amener a ef-fectuer un ensemble de taches et d’operations. Cela se fait bien grace a l’aided’une logique de raisonnement et d’operateurs mathematiques que nous avionseu l’habitude de traiter durant nos etudes primaires et secondaires, ou memed’ailleurs dans notre vie quotidienne.Prenons l’exemple de l’ecole : Lorsque j’irais en classe j’utiliserais soit mon stylobleu ou mon stylo rouge pour ecrire et prendre note.NB: Dans notre programmation, le terme Type sera utilise pour faire referenceaux differents types que nous connaissons que ce soit Objet ou primitifs.

9.1 L’egalite ( ==) et l’ affectation (=)

En Programmation, le signe == et = different.

9.1.1 L’ affectation ( = )

L’affectation consiste a donner une valeur a un attribut bien specifique; ellefixe la valeur de cette variable alpha a une valeur beta.Sa syntaxe est : Type variable1 = variable2;Toutefois, il nous est possible d’affecter une valeur a plusieurs variables d’uncoup.Sa syntaxe est : Type variable1, variable2 = variable3;Exemple : Affectation.javaclass AffectationString nom = ”DIABY”;// On affecte ici au nom le mot DIABY int numero, identifiant = 123;}

9.1.2 L’ egalite ( == )

L’Egalite consiste a tester si une valeur valeur1 correspond a une valeurvaleur2. Elle s’utilise generalement avec les structure de controles.Sa syntaxe est : if(valeur1 == valeur2){ //instruction }Exemple : Egalite.javaclass Egalite{Type valeur1 = 12; Type valeur2 = 50;

13

if(valeur1 = valeur2){System.out.print(”Valeur 1 est egale a valeur 2”);}... }

9.2 Le OU logique (||)Le OU logique permet d’effectuer des test. Elle s’utilise tres souvent dans les

structures de controle. Sa syntaxe est : if(varaiable1 == variable3 || variable2== varaible4){ ... }Prenons l’exemple de la tenue vestimentaire. Si elle est trempee ou si elles etsale, je ne la mettrai pas.Exemple : OuLogique.javaclass OuLogique{if(tenue == trempee || tenue = sale){System.out.print(” Je ne porterai cette tenue vestimentaire”);}}

9.3 Le ET logique( && )

Le ET Logique tout comme le Ou Logique, permet d’effectuer des test. Etelle s’emploie egalement dans les structures de controle.Sa syntaxe est : if (variable1 == variable3 && variable2 == variable4){ ... }Prenons l’exemple des feux tricolores. Si le feu est rouge et qu’il n’y a pas devoiture sur la voie alors je traverse la rue.Exemple : EtLogique.javaclass EtLogique{if ( feux == rouge && voiture == null ){System.out.print(”Je traverse la rue”);}... }

9.4 Le modulo ( % )

Le modulo consiste en programmation, a un traitement d’une variable sur uneautre variable en vue d’obtenir le reste de cette derniere. En d’autres terme,il consiste a obtenir le reste de la division de la variable1 par la variable2. Sasyntaxe est: Type variable1, variable2, resultat;resultat = variable1 % variable2;Partons d’un exemple simple, pour celui ci. Nous chercherons a determiner lereste de la division de 5 par 2 (5 modulo 2).Exemple : Modulo.javaclass Modulo{int valeur1 = 5;int valeur2 = 2;int reste;// Par defaut, un entier(int) est initialise a zero (0)reste = valeur1 % valeur2;System.out.println(”Le modulo de 5 par 2 est ”+reste);}

14

}

10 Le JAVABEAN

La norme JAVABEAN est un des principes les puissants, lorsque l’on estamener a coder de maniere securise et propre.Elle consiste en creer une classespeciale .java qui contiendra notre bean. Une classe JAVABEAN se presentecomme suit :- Tous les champs sont declares de types privees - Un constructeur par defautest initialise(est ajoute au code de notre classe javabean)- Des accesseurs (getters) et mutateurs (setters) y sont ajoutes- une Serialisation des Objets peut etre envisages

10.1 Declarations des attributs

Tout attribut(variables ou champs) doit etre declares de type privees. Pourquoicela ?Cela ne permettra la manipulation de ces dits attributs que par les accesseurset mutateurs commis a chacune de ces variables.Exemple : JavaBean.java

class JavaBean{

private String nom, prenom;private int age;private float taille;}

10.2 Constructeurs

Un constructeur est une methode qui porte le meme nom que la classe, ellene comporte pas de parametres,ni d’arguments, ni de type de retour, et a uneportee de type public.Il est a noter que toute classe Java possede un constructeur par defaut, et ceuxmeme s’il n’est pas ecrit dans notre code.Un constructeur a notre classe bean se doit d’etre crees.Exemple : JavaBean.java

class JavaBean{

public JavaBean(){// On definit ici ce que fera le constructeur( les actions qu’il devra executer). }}

10.3 Accesseur

On utilise des methodes get pour pouvoir manipuler les differents attributsdeclares de type prives. Ces differentes methodes get ,appelle getters, permet-

15

tent une manipulation plus securise des differentes valeurs.Exemple : JavaBean.java

class JavaBean{

private String nom, prenom;public String getNom(){return nom;}}

10.4 Mutateur

Idem comme pour le getters. Le mutateur est une methode set permettant lamanipulation des attributs declares de type prives et qui se trouve dans notreclasse java.Exemple : JavaBean.java

class JavaBean{

private String nom, prenom;public void setNom(String nom){this.nom = nom; }}

NB: Ce principe de programmation respectant la norme JAVABEAN permetune meilleure securite et facilite la reutilisation des objets auxquels l’on a affaire.

11 Classe

En POO, la notion de classe est un des elements les plus importants principequi lui conferent le titre de langage de POO et le differencie des langages deProgrammation Procedurale.Il est de mise de mettre en CAPITAL (ou en Majuscule) la premiere lettre dechaque mot lorsqu’il s’agit de donner le nom d’une classe. Et par la suite tousles nouveaux mots qui la composent, la premiere lettre en CAPITALE.En JAVA, il existe des plusieurs types de classes. Toutefois, au sein d’un projet(ou application) plusieurs classes peuvent exister mais une seule classe mainexiste et est lancee a l’execution de notre projet. une classe se declare commesuit:class NomDeLaClasse{}

11.1 Classe Principale

Une classe principale est une classe qui permet l’execution de notre applica-tion et elle est unique. Elle se declare comme suit :Exemple :

16

class ClassePrincicipale{/* Les deux lignes qui suivent permettent de dire a notre EDI qu’il s’agit denotre classe principale. */public static void main(String [ ] args){// Instruction de notre main }}

11.2 Classe Simple( Non principale )

Une classe est par definition, un ensemble dans lequel se trouve les infor-mations specifique a notre traitement en POO. Elle se dit simple, si elle necomporte pas de main.NB: Toutefois, attention a ne pas generaliser trop vite.Sa forme generale est : class NomDeLaClasse{ ... }Prenons comme exemple, une classe contenant en son sein un attribut et unemethode. Exemple : Simple.javaclass Simple{private String nom =”DIABY”;public void affiche(){System.out.print(”Salut”);}}

11.3 Classe Abstraites

Sachez tout simplement qu’elles existent.Nous n’en parlerons pas dans ce tutoriel.

12 Structures de controles : boucles

Les structures de controles repondent a une certaine logique auquel noussommes confrontes tous les jours de notre vie. Cette logique, se trouve rapi-dement retranscrit dans le code. Vue ce fait, et aussi pour ne pas avoir vousembrouille on fera des exemples tres terrains c’est a dire de la vie courante.Son principe est de faire un certain controle puis d’en verifier sa veracite puisen fonction de la reponse obtenue declenche une action(un evenement).

12.1 IF

IF (ou Si ), est une structure de controle a laquelle nous sommes confrontesa tout instant de notre vie. Cette structure de controle a pour but de testerqu’une seule fois l’instruction qui lui est soumise.Elle est de la forme : if (// argument) { ... } else { ... }Partons d’un exemple : S’il fait jour ou qu’il est 7 h 30 min, je bois du cafe,sinon s’il est midi je mange du riz sinon s’il est 16 h je prendrais un gouter,sinon s’il fait soir je mangerais du leger, sinon(dans le cas ou aucune de ces 3condition ne parvient a etre realise ) je me contenterais d’un verre d’eau.

17

Exemple : StructureContole.javaclass StructureControle{

public static void main(String[ ] args) {String heure = ”jour”;// Vous pouvez vous amusez a changez la valeur de l’heure. Remarquez,// il est de type Stringif (heure == ”jour”) {System.out.print(”Je bois du cafe au lait”);} else if (heure == ”midi”) {System.out.print(”Je mangerai du riz”);} else if (heure == ”soir”) {System.out.print(”Je mangerai du leger”);} else {System.out.print(”Je bois de l’eau”);}}

12.2 FOR

For ( pour en francais), quand a elle s’utilise dans le cas d’ iterations (suited’evenements). Cette structure de controle a pour but de tester l’instructionqui lui est soumise d’une valeur alpha(point de depart) a une autre valeurbeta(valeur d’arret).Elle est de la forme : for (int alpha, alpha < beta; alpha ++) { ... }Prenons l’exemple des bonbons.Pour toute personne dont l’age est inferieure a 18, on lui donne un bonbon.Exemple : StructureControle.javapublic class StructureControle {

public static void main(String[ ] args) {

for (int agePersonne = 0; agePersonne < 18; agePersonne++) {System.out.print(”Vous aurez droit a un bonbon”); }}}

12.3 DO WHILE

WHILE( tant que), pourrait etre definit comme s’utilisant pour verifier unetat bien specifique , devant etre rempli. Sa syntaxe : while(//argument){...}DO WHILE, a un comportement quasi similaire a celui du while ; seul difference,l’instruction sera execute au moins une fois. Sa syntaxe : do { ... } while(//argument){ ... }Cette structure de controle, do while, a pour but de lancer(ou d’executer)l’instruction se trouvant dans le do, puis de tester celle se trouvant dans lewhile.Exemple : Tant que l’age de l’utilisateur est inferieur a 18 dites lui qu’il n’a

18

pas acces a ce service. Faire Salut , et apres on entre dans le while en verifiantque l’utilisateur est ages d’au moins 18 ans et on lui donnera acces dans le cascontraire on lui dira qu’il n’a pas acces a ce service.Exemple : StructureControle.javaimport java.util.Scanner;public class StructureControle {

public static void main(String[ ] args) {Scanner lecture = new Scanner(System.in);int age;do {System.out.println(”Salut, veuillez saisir votre age”);age = lecture.nextInt(); }while (age >= 18);System.out.print(”Vous n’aviez pas acces a ce service”); }}

12.4 SWITCH

Switch est la structure de controle que j’adore car pour moi elle s’utilise dansles situations ou nous connaissions les cas de figures qui peuvent se presenter al’avance. Elle devient plus precise, donc evite l’utilisation du IF qui se trouveetre trop englobant (generaliste). Sa forme est :switch (//valeur ) {case value: //...break;default://...break;}Utilisons ici, le cas d’un programme qui demande a un utilisateur de faire unchoix entre differentes categories d’ages (mineur, adulte, vieillard) en fonctionde son age et nous lui retournerons un message lui donnons sa categorie d’age.Exemple : StructureControle.javaimport java.util.Scanner;

public class PPrincipale {

public static void main(String[] args) {

Scanner lecture = new Scanner(System.in);int age;System.out.println(”Veuillez faire votre choix : 1 pour mineur , 2 pour adulte,3 pour vieillard”);age = lecture.nextInt();switch (age) {case 1: System.out.print(”Vous etes un mineur”); break;case 2: System.out.print(”Vous etes un adulte”); break;case 3: System.out.print(”Vous etes un vieillard”); break;default: System.out.print(”Vous etes inconnu dans notre base”);break; }}

19

}

13 Tableau

13.1 Generalites

Un tableau est un moyen de regrouper des elements dans un seul objet, puis depermettre d’effectuer des traitements sur ce dernier que sont la lecture, ecriture,execution d’operations.En Programmation, le tableau s’utilise dans le gain d’espace memoire, car touteconception d’ application se veut la plus economique possible en termes dememoires utilises.

13.2 JAVA

En JAVA, il s’utilise pour stocker des donnes sur un individus bien specifique.Prenons un individus qui est une personne, on pourrait avoir sur lui son nom,prenom, age, sexe; que nous stockerons dans un tableau de type String.

13.2.1 Tableau Primaire

Par tableau primaire, j’entends tableau de type primitifs. On distingue plusieurstypes dont les tableau a une dimension et les tableaux a deux dimensions.

13.2.2 Tableau a une dimension

Le tableau a une dimension est un type de tableau ne pouvant prendre qu’unevaleur par zone de memoire.Sa syntaxe est :Pour creer un tableau d’entier : int tableau [] = {””,”””,... }Pour recuperer un element de ce tableau : tableau[0]NB : En java et dans la plupart des langages de programmations, on commencepar compter a partir de zero (0). Faisant de 0 le premier element.Reprenons l’exemple precedent portant sur la personne possedant un nom, ...Exemple : TableauPrimaire.java

public class TableauPrimaire {

public static void main(String[ ] args) {String[ ] personne = { ”DIABY”, ”Kalilou”, ”21”, ”Masculin” };System.out.print(personne[0] + ” ” + personne[1] + ” ” + personne[2] + ” anset de sexe ” + personne[3]);}}

13.2.3 Tableau a plusieurs dimensions

Le tableau a plusieurs dimensions fonctionnent de la meme maniere que celuia une dimension a la seule difference qu’il prend plus d’un element sur une zone

20

memoire.Partant de l’exemple precedant si l’on etait amener a identifier la personne setrouvant a une position donnee : cas d’une salle de classe ou autre salle biendisposee. l’on serait amener a creer un deuxieme tableau; ce qui serait trop longet fatiguant.Pour y remedier l’on a disposition le tableau a plusieurs dimensions.Et dans cecas precis, on peut creer un tableau a 2 dimensions et qui aura en une seulezone tous les elements relatifs a la position d’une personne.Exemple : TableauDeuxDimensions.java

public class TableauDeuxDimensions {

public static void main(String[ ] args) {

String[ ][ ] personnes = { { ”DIABY Kalilou”, ”Kone Paterson”, ”GOHOREBI Arsene”, ”IBO Landry” }, { ”KOUAME Dimitry”, ”AMICHIA Affiba”, ”FOLLY Vomua”, ”N’CHO Loıc ” } };

System.out.print(personnes[0][0]);}

/* Ici il affichera la personne la ligne 0 (ligne 1) et la colonne 0 ( colonne0), qui se trouve etre DIABY Kalilou */// Toutefois, amusez-vous a changer les differentes valeurs}

13.2.4 Tableau de type ArrayList

Une ArrayList est un tableau listes pour stocker et contenir un ensembled’elements sous forme de liste.Sa syntaxe est : ArrayList<Type Objet> nomArrayList = new ArrayList<TypeObjet>Exemple : ArrayList1.javaimport java.util.ArrayList;

public class ArrayList1 {

public static void main(String[ ] args) {

ArrayList <String> list = new ArrayList<String>();list.add(”DIABY”); // on insere un nom a l’index 0list.add(”Kalilou”);list.add(2, ”Masculin”);/* Ici, le 2 est mis pour l’index; le forcant ainsi a le mettre a l’index 2. Sinon,l’on aurait Kalilou qui aurait ete a la position 1 s’il avait ete declaree commeDIABY */System.out.print(”L’enregistrement se trouvant a la position 0 est ” + list.get(0)+ ” et a la position 1 est : ” + list.get(1) + ” et a la position 2 est : ” +list.get(2)); }}

21

22

Part IV

Exception

14 Exception Predefinies

En POO, ou en Programmation Procedurale (PP), la gestion des erreursest un critere necessaire de bon codage. Par ce principe, l’on est capabled’intercepter d’eventuelles erreurs qui pourrait surgir pendant l’utilisation denotre application par l’utilisateur ou des erreurs autres. Pour ce faire, on utilisedes instructions que sont : try, catch(), finally.

14.0.5 TRY

L’instruction try est celle qui nous permettra d’executer notre bout de codesusceptible de genere d’eventuelles erreurs.Exemples : Exception.java

class Exception{

public static void main(String [ ] args){

private int valeur1, valeur2;private float resultat;

try{resultat = valeur1 / valeur2;}}

14.0.6 CATCH

L’instruction Catch est celle chargee de gerer l’erreur qui est generer par notreapplication.Elle capte ce message et en renvoie un autre beaucoup plus simpleet facile de comprehension par le client.Exemples : Exception.java

class Exception{

public static void main(String [] args){

private int valeur1, valeur2;private float reultat;

try{resultat = valeur1 / valeur2;}catch(Exception une exception arithmetique sera genere){System.out.print(”Erreur !”);

23

}} } }

14.0.7 FINALLY

L’instruction finally permet l’execution de la commande de maniere obligatoire,c’est a dire apres execution des du try et du catch.Cette instruction s’utilise generalement avec une base de donnees (nous em-ploierons dans la suite de ce tutoriel tres souvent le terme database en rem-placement de base de donnees), afin de deconnecter notre database, dans le casou elle ne reussit pas a etre deconnecte dans le try et le catch.Exemple : Exception.java

class Exception {

public static void main(String [ ] args){

private int valeur1, valeur2;private float reultat;

try{resultat = valeur1 / valeur2;}catch(Exception une exception arithmetique sera genere ){System.out.print(”Erreur !”);}finally {System.out.println(”Execution des instructions se trouvant dans le finally”);}} }

15 Exception Personnalises

Une exception personnalise s’utilise generalement lorsque l’on souhaite generersoit soit meme ces exceptions ; il s’avere etre nul lorsque l’exception que l’onsouhaite creer existe deja. Pour ce faire, on utilise le mot cle throw et throws.Pour ce faire, on cree une nouvelle methode dans laquelle on definit nos differentesexceptions.

15.1 THROW

Le mot clef throw permet de gerer manuellement une exception. Cela se faitgrace a la creation de nouvel objet du type de l’exception que nous venons decreer nous meme.Allez comprendre, que nous densifierons les differentes erreurs possibles et ca-pables de survenir, et aussi ce qu’il en devra resulter une fois que ce cas sepresentera.Sa syntaxe est : throw new ExceptionPartons ici d’un exemple tout simple qui consistera a nous afficher tout simple-ment un message qu’est : Erreur ! exception personnalise.

24

Exemple : ExceptionPersonnalise.javapublic class ExceptionPersonnalise extends Exception{

@Override public String getMessage() {System.out.println(”Erreur ! exception personnalise ”);return super.getMessage(); }}

- PPrincipale1.java

public class PPrincipale {

public static void main(String[] args) {try {throw new ExceptionPersonnalise();} catch (Exception e) {e.printStackTrace(); }}}

15.2 THROWS

Le mot clef throws permet d’indiquer a notre JVM que cette methode estsusceptible de declencher une erreur. Sa syntaxe est :Methode throws ClasseExceptionCreerParUtilisateur { ... }

1P pour programme

25

Part V

Heritage

16 Generalite

L’heritage est une technique de la POO qui permet a une classe fille d’heriterde tous les attributs et methodes de la classe mere(de base). On utilise pourcela le mot clef extends.L’heritage permet de ce fait un gain en temps de travail et de calcul, et enmemoire puisque l’on aura qu’a heriter d’une classe et automatiquement possederde toutes ses fonctionnalites.De plus, on peut en rajouter de nouvelles que ce soit bien des methodes au seinde cette classe fille, ou les redefinir ou les surcharger.

17 Heritage selon JAVA

En JAVA, la question d’heritage peut s’etendre jusqu’a celle de l’implementation.De ce fait, une classe Java peut heriter d’une et unique classe Java, mais peuttoutefois implementer plusieurs Interfaces.Pour qu’une classe herite d’une autre classe on utilise le mot clef extends etpour qu’elle puisse implementer une interface on utilise le mot clef implements.Exemple : Heritage.java

class Heritage extends JavaBean implements Interface1, ActionListener{// instruction et code de notre classe Heritage// Action Listener est un ecouteur d’action. Nous y reviendrons plus tard}

26

Part VI

Design Pattern

18 Generalites

Le design pattern est une architecture destine en generale vers des projets degrande envergure. Toutefois, Il est applicable a tout type de projet.Le design pattern n’est pas une affaire de JAVA pour ne pas dire POO, elles’applique aussi aux langages du WEB tels que PHP, Ruby, ...Dans notre tutoriel, nous parlerons du M-V-C. Cependant, il est a noter qu’ilexiste le M-V-C 2. Pour plus d’informations se referer a Internet.

19 M-V-C

Dans ce type d’architecture, la vue correspond a l’ IHM:Interface HommeMachine, pour le client (l’utilisateur final). Le controleur, tout en respectantnotre schema, est notre classe beans qui est charge d’effectuer d’ eventuellesmodifications et actions sur nos differents champs ; elle controle le modele.Le modele, ici represente les differentes classes a partir desquels le bean serautilise ; c’est a dire la classe qui utilisera le bean afin d’acceder a ses differentschamps et methodes

19.1 Modele

Le modele est en general l’element qui permettra de definir tous les objetsque nous auront a manipuler dans notre application structure en M-V-C. C’esten generale une classe en JAVA.Comme additif, dans les applications Java Entreprise Edition (JEE), c’est notreclasse JAVABEAN.

19.2 Vue

La vue est et represente notre Interface Homme Machine (IHM).Pour ce qui est de JAVA, cette partie se gere grace au graphisme en utilisantle JAVA SWING, AWT, qui se trouve aujourd’hui obsolete du fait que assezde framework existe et permettent de creer cette vue tout en se chargeant degenerer le code qui y va avec. Pour ce faire, on dispose d’outils tels que Netbeans,JDeveloppers, ...Dans le cadre d’une application web JEE, la vue peut etre represente par uneJava Server Pages (JSP).NB : Une JSP est une page HTML capable de contenir du code JAVA.

19.3 Controleur

Le controleur est la classe a partir de laquelle tous nos traitements seronteffectues. Le controleur agit sur le modele en avisant a tout moment la vue,permettant une gestion plus simple, securise et structure de notre programme.

27

Dans le cadre d’une application web JEE, elle represente les servlet qui ef-fectuerons les differents traitements, tout en informant notre JSP.NB : Une servlet est classe JAVA qui herite de classe HttpServlet, au travers delaquelle existe des methodes doPost et doGet permettant une interaction avecla (ou les) JSP.Exemple de Servlet

public class NewServlet extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletRe-sponse response) throws ServletException, IOException {}

@Override protected void doGet(HttpServletRequest request, HttpServle-tResponse response) throws ServletException, IOException {processRequest(request, response); }

@Override protected void doPost(HttpServletRequest request, HttpServle-tResponse response) throws ServletException, IOException {processRequest(request, response); }

@Override public String getServletInfo() {return ”Short description”; }}

19.4 M-V-C 2

Ce design pattern, M-V-C 2, ne possede qu’une seule classe appelle FrontControl, qui va deleguer certains traitements specifique a d’autres classes, qu’onappelle les classes de Command.

28

Part VII

Les Bases de donnees

20 Generalite

De nos jours, toute bon application se doit de conserver l’historique des tacheseffectues par l’utilisateur. Ceux ci, dans le but de lui offrir un certain confort depar son utilisation(soft2 ) tout en lui donnant l’envie de se reconnecter a votreapplication.Dans le but de palier a ce probleme, l’on a recours a une base de donnees quisert de stockage a nos differentes donnees que sont :- Informations personnelles utilisateurs- Informations et sauvegarde du log utilisateur et machine- etc, ...Cette base de donnee se gere grace a ce que l’on nomme un Systeme Gestion deBase de Donnee Relationnel (SGBD 3 ). Il en existe aujourd’hui plusieurs typesdont le SGBDR (R pour Relationnel) qui nous interesse dans ce tutoriel.Ce tutoriel n’etant axe sur la base de donnee, nous nous limiterons a ce qui aete dit, et pour plus de complement referer a internet de bons documents s’ytrouvent.La connexion a une base de donnes est devenue aujourd’hui, une tache que peuteffectuer tout programmeur. Cette connexion se trouve simplifie de nos jours,vue la multitude de langages de programmations et de SGBD dont nous dis-posons.

21 Java Database Connectivity

La connexion a une base de donnees en JAVA, ce fait via un certain nombred’outils que sont un driver 4, de methodes de preparations a la connexion, dequelques requetes SQL ou NOSQL.

21.1 Telechargements et installation du driver

Pour ce faire, il nous faut utiliser un driver. Comment y procede-t-on?

21.1.1 Telechargements

Pour le telechargement du driver, il est a noter que bon nombre de SGBDnous est offert. Toutefois, pas de panique, car le choix du SGBD est fonction de

2Logiciel3Un logiciel de Gestion de Base de Donnees4Un pilote qui a pour but de permettre l’acces d’un ou des services a un un autre service

qui l’installe.

29

l’utilisation de notre base de donnees, du public cible vers qui elle est orienteeet aussi de nos moyens.Pour notre tutoriel, nous utiliserons MySQL. Sans tarder, telechargeons le pilotenecessaire a cela en vue d’effectuer la connexion.Dans notre cas, le driver a chercher est: mysql-connector-java5

Lien de telechargements :Personnellement, moi j’ai le mysql-connector-java-5.1.32NB : Je vous conseillerai de vous referer a Google en vue de trouver la versionla plus recente de votre driver

21.1.2 Installation driver : MySQL

Pour l’installation, sachez tout simplement une chose; ce n’en est pas une.Car, il nous suffit juste de charger la librairie de ce driver dans notre EDI6 etl’integrer a notre projet. Cela je pense que vous serez a mesure de le faire.

21.2 Methodes de connexions a une base de donnes

Nous voici enfin arrive a l’instant de verite, celle de la connexion et des traite-ments (requetes) a effectuer.Avant tout sachez que tous les traitements que nous ferons ne seront possibleque par la librairie java.sql.*; qui se trouve inclus dans JAVA.

21.2.1 Etablissement de la connexion

Creons a present un nouvel objet pour la connexion a notre base de donnees.Pour cela, nous utiliserons l’objet Connection.La syntaxe serait : Connection ObjetDeConnection;

21.2.2 Erreur a ne jamais commettre avec les base de donnees

Dans bon nombre de cas, les bases de donnes servent a stocker les informationssensibles sur des personnes (morales et physiques). D’un tel point de vue, il estdeconseille de laisser une connexion a la base donnes ouverte trop longtempsafin de reduire le hacking7 de nos data.Pour cela, nous aurons recours au try, catch et finally8.Dans ce cas, il n’y aura pas d’exemple precis car d’un point de vue personnellele JDBC s’utilise beaucoup avec le JEE9, et ceux meme s’il existe dans les JSE10.

5Je l’ai fait expres d’enlever la version afin que vous puissiez recuperez la derniere versiondu driver souhaitee

6Integrate Developement Environnement7Piratage de nos donnees8Vous comprendrez a ce niveau l’importance de ce finally9Java Entreprise Edition

10Java Standard Edition

30

21.2.3 Methodes de connexions

La connexion s’etablit grace a la methode Class.forName() du moins si l’onse base sur la norme 1.0 du JDBC.

31

Contents

I Generalites 4

1 Rappels sur le monde de JAVA 41.1 Historique : Source : Wikipedia . . . . . . . . . . . . . . . . . . 41.2 Recommandations . . . . . . . . . . . . . . . . . . . . . . . . . . 4

II Premiers pas 6

2 Introduction 6

III Outils de la POO en JAVA 8

3 Les types Objets et primitifs 83.1 Les types primitifs . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2 Les types Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4 Quelques mots clef 84.1 this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.2 super . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.3 null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

5 Les methodes en POO JAVA 95.1 Methode de classe . . . . . . . . . . . . . . . . . . . . . . . . . . 95.2 Methode Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . 95.3 Redefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105.4 Surcharge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

6 Polymorphisme 12

7 Encapsulation 12

8 Interaction utilisateur 128.1 Generalites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128.2 Methode de saisie utilisateur . . . . . . . . . . . . . . . . . . . . 12

8.2.1 Scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . 128.2.2 Autres methodes . . . . . . . . . . . . . . . . . . . . . . . 13

9 Outils de comparaisons 139.1 L’egalite ( ==) et l’ affectation (=) . . . . . . . . . . . . . . . . 13

9.1.1 L’ affectation ( = ) . . . . . . . . . . . . . . . . . . . . . 139.1.2 L’ egalite ( == ) . . . . . . . . . . . . . . . . . . . . . . . 13

9.2 Le OU logique (||) . . . . . . . . . . . . . . . . . . . . . . . . . . 149.3 Le ET logique( && ) . . . . . . . . . . . . . . . . . . . . . . . . 149.4 Le modulo ( % ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

32

10 Le JAVABEAN 1510.1 Declarations des attributs . . . . . . . . . . . . . . . . . . . . . 1510.2 Constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1510.3 Accesseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1510.4 Mutateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

11 Classe 1611.1 Classe Principale . . . . . . . . . . . . . . . . . . . . . . . . . . . 1611.2 Classe Simple( Non principale ) . . . . . . . . . . . . . . . . . . 1711.3 Classe Abstraites . . . . . . . . . . . . . . . . . . . . . . . . . . 17

12 Structures de controles : boucles 1712.1 IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1712.2 FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1812.3 DO WHILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1812.4 SWITCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

13 Tableau 2013.1 Generalites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2013.2 JAVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

13.2.1 Tableau Primaire . . . . . . . . . . . . . . . . . . . . . . 2013.2.2 Tableau a une dimension . . . . . . . . . . . . . . . . . . 2013.2.3 Tableau a plusieurs dimensions . . . . . . . . . . . . . . . 2013.2.4 Tableau de type ArrayList . . . . . . . . . . . . . . . . . 21

IV Exception 23

14 Exception Predefinies 2314.0.5 TRY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2314.0.6 CATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2314.0.7 FINALLY . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

15 Exception Personnalises 2415.1 THROW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2415.2 THROWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

V Heritage 26

16 Generalite 26

17 Heritage selon JAVA 26

VI Design Pattern 27

18 Generalites 27

33

19 M-V-C 2719.1 Modele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2719.2 Vue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2719.3 Controleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2719.4 M-V-C 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

VII Les Bases de donnees 29

20 Generalite 29

21 Java Database Connectivity 2921.1 Telechargements et installation du driver . . . . . . . . . . . . . 29

21.1.1 Telechargements . . . . . . . . . . . . . . . . . . . . . . . 2921.1.2 Installation driver : MySQL . . . . . . . . . . . . . . . . 30

21.2 Methodes de connexions a une base de donnes . . . . . . . . . . 3021.2.1 Etablissement de la connexion . . . . . . . . . . . . . . . 3021.2.2 Erreur a ne jamais commettre avec les base de donnees . 3021.2.3 Methodes de connexions . . . . . . . . . . . . . . . . . . 31

34