COURS POO Java PARIS SUP
COURS POO Java PARIS SUP
HODABALO Lidaou
Ingénieur Infra SAP Basis
PLAN DU COURS DE CE JOUR
Le plan du cours de ce se présente comme suit :
▪ Préparation de l’environnement de développement Java
▪ Première application Java
▪ Variables et Entrées clavier
▪ Instructions conditionnelles
▪ Instructions itératives
▪ Tableaux statiques
▪ Chaines de caractères (String)
▪ Méthodes (Fonctions)
▪ Classe et Objet
I. Préparation de l’environnement de développement Java
1. Installation de Java SE
Télécharger d’abord Java SE.
Sur le site d’Oracle vous avez différents menus que vous pouvez consulter mais vous avez
principalement le menu Resources :
➔ Plus bas Nous avons des versions de java SE disponibles pour le développement,
utilisation personnelle et pour faire tourner les autres produits sous licence oracle.
o Nous allons utiliser la version Java SE Development Kit 11.0.21 soit le JDK
11.0.21
o Nous avons des versions compatibles avec Linux, macOS, Solaris, Windows.
Nous nous allons télécharger la version Windows
➔ Lancer le téléchargement :
o Vous serez redirigé pour vous connecter. Faites-le si vous avez déjà un compte
sinon inscrivez-vous et lancer le téléchargement
o Installer ensuite le JDK
Le problème c’est que, oracle était déjà énormément investi au niveau de la fondation
éclipse et travaillait donc notamment sur cet atelier éclipse. Du coup depuis longtemps,
ils ont annoncé que la propriété intellectuelle allait basculer au niveau de la page
fondation software. Et donc il est passé déjà en incubation chez Apache. Il est donc
devenu un projet Apache. A long termes l’on ne sait pas ce que va devenir Netbeans.
Oracle va s’en détacher progressivement et donc oracle continuera a être contributeur
sur éclipse.
➔ Nous allons télécharger la version Eclipse IDE for Enterprise Java and Web Developers.
C’est vrai que nous n’allons pas démarrer par le développement web mais il y a un
certain nombre d’éléments qui pourraient nous intéresser.
➔ Puisque ça risque de prendre un peu de temps, j’ai moi-même pré télécharger cette
version
➔ Dézipper Eclipse. On peut le mettre où on veut. Il n’y a pas d’obligation à ce qu’il soit
localisé à un endroit précis. Vous pouvez faire un raccourci sur votre bureau sinon dans
tous les cas, vous pouvez lancer l’exécutable.
➔ Eclipse démarre
➔ Une fois démarré, en gros je vais vous présenter deux concepts pour que vous soyez à
l’aise :
o 1er concept : notion de workspace : littéralement c’est un espace de travail. En
fait c’est juste un dossier. Techniquement vous mettez ce dossier où vous
souhaitez – ce dossier est un conteneur de projets et vous pouvez y mettre autant
de projet que vous le souhaitez.
Imaginez qu’on veuille développer une application client-serveur. On aura à
créer dans le même workspace constituant le produit complet, un sous projet
client, un projet serveur et un projet pour les codes communs au client-serveur.
Dans notre cas ici, il s’agit d’une formation java et chaque projet à l’intérieur de
mon workspace constituera un TP que je vous proposerai de mettre en œuvre.
o Cliquer ensuite sur Ok. Une interface s’ouvre. C’est une fenêtre très intéressante,
je vous conseille de lire les infos présentées. Vous y retrouverez par exemple des
tutoriaux, des exemples de projets et différentes petites choses très intéressantes.
o Mais vu que le cours nous conduira à parcourir pas mal d’info, je vais fermer le
fenêtre.
o Si vous souhaitez la rouvrir, vous allez dans le menu HELP et vous retrouverez
WELCOME.
o Montrer que le dossier est bien créé en allant à l’emplacement.
➔ 2ème concept que je voulais vous présenter : concept de perspective : En gros les
perspectives, on va les retrouver en haut et à droite :
o Ici j’ai la liste de tous les dépôts de plugins, bien entendu ceux non encore
installés. Et donc je pourrais installer ce dont j’ai besoin.
o Imaginons qu’on coche tout et qu’on installe l’ensemble des plugins disponibles.
Vous auriez un super bon atelier Eclipse mais le risque c’est que quand vous
voudriez utiliser votre Eclipse, au niveau des barres de menus, des barres d’outils
ou au niveau des menus contextuels, le risque c’est que vous serez chargé avec
énormément d’éléments qui vous permettraient de lancer une multitude
d’assistants, et du coup vous pourrez être noyé sous le nombre de propositions
qui serait fait par l’outil.
o C’est pour éviter ce risque que Eclipse a mis en place la notion de perspective
qui peut être vu comme étant un filtre. En gros, une perspective c’est un filtre
sur l’ensemble des fonctionnalités offertes par l’atelier.
o L’interface que vous voyez actuellement est liée au fait qu’en ce moment c’est
la perspective Java EE (en haut à droite) qui vous est proposée. Actuellement
notre interface est configurée pour plutôt faire du développement type java Web.
o Pour avoir une interface de travail plus large vous pouvez fermer la vue outline
à gauche. Pas d’inquiétude si vous la fermez par erreur et que vous souhaitez la
retrouver. Allez dans le menu Window ---- show View --- Outline
o Pour les fenêtres qu’on aura au centre qui permettront d’éditer du texte, on parle
plutôt d’éditeur : Window --- Editor
o Si vous voulez passer une vue en plein écran ou la réduire, il vous suffit de
double-cliquer sur la vue
Voilà, nous avons parcouru l’essentiel par rapport à la préparation de notre environnement, notre
environnement d’exécution java est installé, on va donc pouvoir travailler. Il est de type jdk.
Nous avons décidé d’installer un atelier Eclipse pour éviter d’utiliser notepad, blocnote etc..
II. Première application java
Dans la première partie du cours de ce jour, nous avons vu comment préparer notre
environnement de développement java. Il est maintenant temps de passer à la production de nos
premières lignes de code.
Je vous propose de démarrer Eclipse et nous allons créer notre premier projet java.
Pour se faire :
o Se placer dans la vue Package Explorer
o Cliquer sur : Create a Java Project
• Vous constaterez qu’un certain nombre de configurations vous est proposées.
• Si vous souhaitez obtenir des configurations complémentaires :
▪ Cliquer sur Next, en bas de la boîte de dialogue
▪ Pas de panique, pour chacune de ces configurations, la plupart du temps, il y a des
valeurs par défaut qui conviennent.
▪ Le seul champ réellement obligatoire est le champ : Project name
▪ Je vous propose d’y renseigner : helloworld. Effectivement, nous allons mettre en
place un petit projet de type helloworld qui va se contenter de produire des
affichages sur la console.
▪ Vous pourriez cliquer sur Next, si vous le souhaiter pour obtenir les écrans
complémentaires.
▪ Mais cliquons plutôt sur Finish : Votre projet est créé
▪ Si vous déroulez l’arborescence, vous avez la présence d’un dossier src. C’est ce
dossier qui est sensé contenir vos fichiers de code java
▪ Pour ajouter un nouveau fichier de code java,
✓ Clic droit sur src
✓ Sélectionner New : on y voit un certain nombre d’assistants, vous sont
proposés notamment l’assistant File :
✓ On pourrait l’utiliser mais c’est surtout utile si vous voulez créer des fichiers
textes ou des fichiers de ce type-là.
✓ Si ce que vous voulez c’est un fichier de code java, je vous conseille de prendre
plutôt l’assistant « class »
✓ Pour que le main soit présent, soyons clair, le mieux aurait été de cliquer sur
la case main comme nous l’avons vu précédemment.
✓ Si vous l’avez oublié, je vous propose une autre façon de vous en sortir : créer
une ligne en tapant main et que vous tapez une séquence de touche magique
(Ctrl + Espace)
✓ NB : Si nous avions coché la case main dès le début c’est ce résultat que nous
aurions eu. Vous n’auriez pas à l’insérer à ce stade.
✓ La séquence (Ctrl + Espace) est une pratique très exploitée et vous verrez
qu’on y reviendra un très grand nombre de fois parce que cela nous permettra
de produire un très grand nombre de lignes de code.
Vous avez tous les autres raccourcis qui sont là. On apprendra à les utiliser au
fil de l’eau
✓ Là, votre fichier a été édité mais l’astérix à côté du nom Start.java signifie
qu’il n’a pas été enregistré.
✓ A partir de là, votre erreur est matérialisée à différents endroits. Voir capture
❖ Ce qu’on constate c’est que sur le côté gauche, nous n’avons pas le
marqueur d’erreur. C’est normal parce que dans cette vue n’est pas
affichée la ligne contenant l’erreur ; par contre sur le côté droit l’erreur
est bien matérialisée ici.
❖ Pourquoi ? Parce que sur le côté gauche c’est la vue qui vous est
proposée et sur le côté droit, ça représente le fichier dans son intégralité.
Si l’atelier vous propose une petite ampoule, c’est qu’il a une idée. En
fait, il vous dit qu’il y a quelque chose qui ne va pas et qu’il a des idées
à vous proposer.
Si c’est le cas, il vous suffira de cliquer sur l’ampoule pour voir
apparaître un menu contextuel qui vous proposera tout un ensemble de
possibilités.
Constatez que l’erreur n’est plus en rouge, il y a l’icône qui est un peu
blanchâtre. Pourquoi ? C’est parce que le fichier n’est pas encore
sauvegardé. En fait, il me dit par rapport à la précédente sauvegarde, il
y a bien eu une erreur qui a été corrigée parce que maintenant c’est
blanc mais si je veux que cette icone disparaisse, il faut que je
sauvegarde le fichier.
✓ Notez que comme je vous le disais tout à l’heure, il n’y a pas que des erreurs.
Il y a aussi des Warning – avertissement.
✓ Regardez : saisir juste avant le syso : int a = 0; ici, je suis entrain de déclarer
une variable. Pour ceux qui connaissent le langage C, cela devrait
effectivement vous rappeler quelque chose. C’est exactement la même syntaxe
que pour C ou C++.
A savoir : j’ai ma variable, elle s’appelle a, son type int, int pour integer donc
a est un entier, et sa valeur par défaut c’est 0.
Si je clique sur l’ampoule, il me fait des suggestions : une des suggestions c’est
de supprimer toute référence à a dans le programme.
Une autre solution, ce serait d’utiliser, regardez je reviens sur mon Hello word :
System.out.println( "Hello world" + a ) ; et regardez, mon problème disparait.
✓ Notez que, outre voir les erreurs sur les côtés de l’éditeur et au niveau du
package Explorer, il y aurait aussi la vue Problems : elle affiche tous les
warnings ou toute erreur.
Regardez, je supprime l’utilisation de a, j’ai de nouveau le warning. Que faut
il faire pour avoir le warning affiché ?
Remettre le a et enlever le « ; », j’ai mon erreur qui est matérialisée. Dans les
deux cas on vous donne un message : le fichier posant problème et le numéro
de ligne sur laquelle le problème est constaté.
✓ Fermez l’éditeur
✓ Aller, du coup je corrige mon erreur : replacer le " ;" sur la ligne. C’est bien
affiché ici 0 erreur, 0 warning.
✓ Tout à l’heure, j’avais affiché des commentaires pour agrandir la taille de mon
fichier : je vais les supprimer et ne garder qu’un pendant quelques instants. Je
voudrais ainsi discuter de ces commentaires.
Notez que nous avons une étoile au milieu mais elle n’est pas
obligatoire.
Mais pour une question de lisibilité, Eclipse trouve que c’est plus
judicieux de vous mettre ici une barre d’étoiles. Ça permet de mieux le
matérialiser, le borner.
Il faut savoir que ce type de commentaire est multilignes. Vous
pouvez avoir un commentaire de 20, 30 lignes sans aucun souci.
Exemple :
Noter bien que la suite, il n’y a pas de vert. C’est du code java classic.
Ainsi le commentaire s’est bien terminé au retour à la ligne.
Autres : Ctrl+Shifft+/
C’est très pratique parce que parfois vous avez des sections de codes
que vous souhaitez enlever temporairement, vous ne voulez pas
complètement les supprimer. Vous les sélectionnez puis vous les mettez
en commentaires.
Vous pouvez trouver d’autres séquences au niveau du menu Source.
✓ Lancer le programme : une fois que votre programme est terminé, il nous faut
lancer ce programme.
❖ Pour le faire, c’est très simple : faites clic droit sur l’éditeur ---- Pointer
sur Run us ----- cliquer sur Java Application ----- Votre programme
démarre
❖ Vous pouvez aussi faire un clic droit sur le nom de ma classe ---- run as
----- run
❖ Enfin une dernière possibilité pour démarrer votre programme serait de
cliquer sur cette icône . Puisque qu’on a déjà marqué la calss start
comme étant un fichier de démarrage java, il le mémorise. Du coup à
chaque fois que vous allez lancer un run, il exécute le précédant run.
Voila ce qui clos cette partie qui a consisté à créer san première application java.
III. Variables et Entrées clavier
Dans cette partie, nous allons voir comment utiliser les variables en java et comment enregistrer
des entrée clavier.
• Une variable sert à stocker de façon adaptée une valeur en mémoire i.e ça peut être un
entier, un décimal, un caractère, une chaîne de caractères ou autres ;
• Une variable doit être déclarée (une seule fois : soit si c’est une variable globale, soit une
seule fois dans la méthode), avant d’être utilisée. On verra cela plus tard.
• Il existe plusieurs types de variables, dits primitifs. On verra ensuite des variables un peu
plus complexes.
Exemple de variables de types primitifs :
o Type int : entier relatif (cela nécessite 4 octets de mémoire pour le stocker)
o Type double : nombre décimal (cela nécessite 8 octets de mémoire pour le
stocker)
o Type char : caractère (Elle utilisera 2 octets)
• Par convention, le nom d’une variable commence par une lettre minuscule.
Exemple :
o i (qui sera par exemple régulièrement utilisé pour compteur, qui sera de type
entier) ,
o prix (le prix d’un article, qui sera de type décimal, donc de type double)
o ageDuCapitaine (voyez la façon de noter qu’on appelle le "camel case" i.e pour
simuler les espaces, on met des lettres en majuscules dans la variable ; âge du
capitaine serait un entier par exemple),
o Initiale (qui pourrait par exemple être une lettre de type char).
• Pour affecter une valeur à une variable, on utilise le symbole " = ".
Exemple :
o i = 1 ; (On affecte la valeur 1 dans la variable i).
o prix = 32. ; ( Question : A quoi sert ce point ? ce point sert à signaler au
compilateur que le nombre 32 est un nombre décimal puisque si on ne met pas
le point, il va considérer que c’est un entier. On verra tout ça plus tard).
o initiale = ‘M’ ; (Le M est mis entre des quotes ou entre apostrophes
▪ Nous avons maintenant notre programme. Constatez avec moi que les
surlignements orange n’y sont plus ; puisqu’effectivement on a utilisé
maintenant ces variables. Notre programme ne présente plus d’erreurs.
▪ Ici on a un nouvel outil qui s’appelle Scanner. Cet outil n’est pas fourni
dans les outils de base de java.
Par conséquent, il faut l’importer i.e l’ajouter à notre programme et cela
s’ajoute au tout début du programme. On reviendra là-dessus dans
quelques instants.
▪ On va introduire le Scanner :
Scanner clavier = new Scanner(System.in); On constate qu’il y a
quelques erreurs. On va regarder le type d’erreur.
On nous dit que les variables ne sont pas initialisées et bien évidemment
c’est parce qu’on travaille pour l’instant avec des variables qui ne n’ont
pas de valeur initiale puisqu’on a supprimé l’initialisation des variables.
Donc attention à cela
Si nous allons sur le warning, on nous dit que le clavier n’est jamais
fermé. Il faut en fait à la fin de son programme, fermer le clavier. Je
reviendrai là-dessus plus bas.
• Procéder au test.
• Modifier le programme
V. Instructions itératives
Dans cette partie, nous allons étudier les instructions itératives qu’on appelle aussi boucles.
Le premier type de boucle est la boucle for :
• Instruction Pour … de … à … par pas de …
La boucle for est utilisée lorsqu’on veut répéter une instruction un certain nombre de fois
et que ce nombre de fois est connu à l’avance. Dans ce cas la syntaxe est la suivante :
Exercice :
Un capital est placé durant n années à un taux annuel d’intérêts composés de t%.
Ecrire un programme permettant de calculer les intérêts acquis au bout des n années.
Le problème avec ce type de boucle c’est qu’on ne sait pas combien de fois on va effectuer
la boucle et il se peut qu’on n’y passe jamais car par exemple si la condition initiale est
jamais réalisée, en ce moment-là ce bloc d’instruction ne sera jamais réalisé.
Si on veut être sûr que notre bloc d’instruction se réalise une fois, dans ce cas-là on la
possibilité de faire une boucle de type Do… while, où la condition est testée en fin de
boucle. Par conséquent, on est sûr de passer au moins une fois dans cette boucle et donc
d’effectuer la série d’actions qui sont ici.
Exercice :
Un capital est placé à un taux annuel d’intérêts composés de t %.
Ecrire un programme permettant de connaître le nombre d’années qu’il faut placer ce
capital afin d’obtenir un gain donné.
En fait le mot clé new sert simplement à construire un espace mémoire nécessaire à notre
tableau.
Je rappelle que le nombre de cases que contient le tableau est fixe et ne peut pas être modifié.
Affecter des valeurs à un tableau :
Lorsqu’on veut affecter des valeurs à un tableau, la syntaxe est la suivante, d’abord on met le
nom du tableau, suivi entre crochets de la position dans laquelle on veut mettre les éléments
(l’indice), et ensuite égale avec ici la valeur.
nomTableau [position] = valeur ; // Attention ! la 1ère case du tableau à l’indice 0 !! et non pas
le numéro 1 comme on pouvait s’y attendre.
Exercice :
On place un capital durant n années à un taux annuel d’intérêt composés de t %.
Réaliser un programme qui calcule les intérêt acquis au cours de n années.
On utilisera un tableau pour enregistrer les intérêts acquis chaque année puis les afficher.
Instruction d’écriture :
System.out.print(chaine) ;
• D’abord, on peut être intéressé par le fait de savoir la longueur de la chaîne de caractères.
On voit ici qu’on a length avec les parenthèses .length.() alors que pour les tableaux on en
avait pas. Donc :
chaine.substring(intDebut, intFin)
chaine.toUpperCase()
Cette instruction permet de convertir tous les caractères d’une chaîne de caractères chaine en
majuscule.
Exemple : si j’affiche System.out.print(s.toUpperCase())
Cette instruction affichera à l’écran, dans la console, la chaine de caractère BONJOUR (le tout
mis en majuscule.
chaine.toLowerCase()
Cette instruction permet de convertir tous les caractères d’une chaîne de caractères chaine en
miniuscule.
Exemple : si j’affiche System.out.print(s.toLowerCase())
Cette instruction affichera à l’écran, dans la console, la chaine de caractère bonjour (le tout mis
en minuscule.
chaine1.equals(chaine2)
Si j’ai deux chaînes chaine1 et chaine2 et je veux savoir si elles contiennent la même chose.
Comme ce sont des type complexes, je ne peux pas utiliser le symbole "==" que j’ai utilisé avec
les types primitifs parce qu’en ce moment, cela va me donner des adresses qui correspondent
aux références de cette chaîne (chaine2), on verra cela plus tard et donc ça ne marchera pas.
Donc, si je veux comparer le contenu de chaine1 avec le contenu de chaine2, l’instruction c’est
equals.
Attention : java est sensible à la casse i.e si ici si chaine1 c’est "bonjour" en minuscule et
chaine2 c’est "BONJOUR" en majuscule, bien évidemment le equals renverra la valeur false
puisque les deux chaînes ne sont pas identiques.
Lorsque je veux comparer deux chaines dans tenir compte des majuscules et des minuscules,
en ce moment-là j’utiliserai l’instruction :
chaine1.equalsIgnoreCase(chaine2)
Dans ce cas java ne s’occupera de la casse ou encore du fait qu’il y ait des minuscules et des
majuscules.
Ces arguments sont issus du programme principal i.e qu’on va faire une copie du contenu de la
variable (nomVar1 par exemple), on va l’utiliser dans la méthode et bien évidemment lorsqu’on
aura fini l’utilisation de la variable, cette dernière sera rendue dans son état initiale i.e son
contenu ne sera pas modifié.
On peut dans notre corps de méthode, qui est compris entre les deux accolades, déclarer des
variables internes à la méthode, qui seront également détruites en fin d’utilisation de la
méthode, et en suite un certain nombre d’actions que va faire la méthode, qui peuvent influer
par contre sur le programme principal comme on le verra dans l’exemple qui suit.
static void nomMethode (typeVar1 nomVar1, typeVar2 nomVar2, … ) {
// S’il n’y a pas d’arguments, on écrit void nomMethode()
Déclarations des variables internes à la méthode
actions
}
Appel de la méthode :
Lorsque je veux appeler ma méthode dans le programme principal, je ferai
simplement nomMethode, suivi des arguments (nomVar1, nomVar2, … ) qui vienne de mon
programme principal, en relation différence avec l’entête (typeVar1 nomVar1, typeVar2
nomVar2, … ),
Une méthode sera insérée avant la ligne public static void main(String[] args), puisque c’est
également une méthode nommée main, donc on ne va pas mettre une méthode dans une
autre méthode mais on va séparer les méthodes. En général, on met avant mais on peut
mettre après comme on veut.
Exercice :
L’utilisateur tape au clavier le prix d’un produit puis le pourcentage de réduction qu’on lui
applique
Le programme calcule puis affiche le prix "soldé" en Fcfa du produit après avoir appliqué la
réduction.
La méthode est utilisée pour gérer le calcul et l’affichage du prix final.
On va reprendre ce qu’on avait déjà fait avec les soldes i.e l’utilisateur va taper au clavier le
prix d’un produit et le pourcentage de réduction qu’on lui applique et le programme va calculer
et afficher le prix soldé par l’intermédiaire d’une méthode.
Sa déclaration sera toujours précédée du mot clé static. Ensuite, on n’aura plus le mot clé void
mais on aura le type de valeur que renvoie typeValeurRenvoyée la fonction, suivi du nom de la
méthode nomMethode qu’on a choisi, suivi de ces arguments entre parenthèses séparés par des
virgules (il s’agit du type de la variable et son nom, etc …)
Tout comme précédemment, ces arguments sont issus du programme principal i.e qu’on va faire
une copie du contenu de la variable (nomVar1 par exemple), on va l’utiliser dans la méthode
et bien évidemment lorsqu’on aura fini l’utilisation de la variable, cette dernière sera rendue
dans son état initiale i.e son contenu ne sera pas modifié.
On peut dans notre corps de méthode, qui est compris entre les deux accolades, déclarer des
variables internes à la méthode comme précédemment, qui seront également détruites en fin
d’utilisation de la méthode, et ensuite à la fin l’instruction return qui indique quelle est la valeur
renvoyée par la méthode et donc ici valeurRenvoyée.
Une méthode sera insérée avant la méthode public static void main(String[] args), ou après
mais pas au milieu, de la méthode main.
Exercice :
L’utilisateur tape au clavier le prix d’un produit puis le pourcentage de réduction qu’on lui
applique
Le programme calcule puis affiche le prix "soldé" en Fcfa du produit après avoir appliqué la
réduction.
La méthode est utilisée pour gérer le calcul et l’affichage du prix final.
Note : C’est le même exemple que dans la première partie, simplement que cette fois-ci on va
demander à la méthode de renvoyer la valeur du prix final i.e le prix qui a été calculé après
l’application du taux de solde.
IX – Classe et Objet