Software">
Introduction À La Programmation Orientée Objet
Introduction À La Programmation Orientée Objet
Introduction À La Programmation Orientée Objet
Les attributs: Il s’agit des données caractérisant l'objet. Ce sont des variables stockant
des informations d’état de l’objet.
Les méthodes (appelées parfois fonctions membres): Les méthodes d’un objet
caractérisent son comportement, c’est-à-dire l’ensemble des actions
(appelées opérations) que l’objet est à même de réaliser. Ces opérations permettent de
faire réagir l’objet aux sollicitations extérieures (ou d’agir sur les autres objets). De
plus, les opérations sont étroitement liées aux attributs, car leurs actions peuvent
dépendre des valeurs des attributs, ou bien les modifier
L'identité: L’objet possède une identité, qui permet de le distinguer des autres objets,
indépendamment de son état. On construit généralement cette identité grâce à un
identifiant découlant naturellement du problème (par exemple un produit pourra être
repéré par un code, une voiture par un numéro de série, etc.)
Chaque objet a sa propre vie et est différent d’un autre. Nous pouvons avoir une chaise
bleue, une autre rouge, une autre avec des roulettes, une cassée … Il faut bien faire
attention à distinguer ce qu’est l’objet et ce qu'est la définition d’un objet.
La définition de l’objet (ou structure de l’objet) permet d’indiquer ce qui compose un
objet, c'est-à-dire quelles sont ses propriétés, ses actions etc. Comme par exemple le fait
qu’une chaise ait des pieds ou qu’on puisse s’asseoir dessus.
Par contre, l’objet chaise est bien concret. On peut donc avoir plusieurs objets chaises :
on parle également d’instances. Les objets chaises, ce sont bien celles concrètes que l’on
voit devant nous autour de l’objet table pour démarrer une partie de belote.
Un autre avantage de la POO est la réutilisabilité. Des objets peuvent être réutilisés ou
même étendus grâce à la notion d’héritage. C’est le cas par exemple de la bibliothèque
de classes swing que nous allons utiliser dans le dernier TP du manuscrit. Cette
bibliothèque nous fournit par exemple tous les objets permettant de construire des
applications graphiques. Pas besoin de réinventer toute la mécanique pour gérer des
fenêtres dans une application, le JFrame avec swing sait déjà faire tout ça. Nous avons
juste besoin d’utiliser un espace d’exécution appelé conteneur, dans lequel nous
pourrons mettre un objet « bouton » et un objet « zone de texte ». Ces objets héritent
tous des mêmes comportements, comme le fait d’être cliquable ou sélectionnable, etc.
De même, des composants tout faits et prêts à l’emploi peuvent être vendus par des
entreprises tierces (système de log, contrôles utilisateurs améliorés, etc …).
Il faut savoir que la POO, c’est beaucoup plus que ça et nous en verrons des subtilités
plus loin, mais comprendre ce qu’est un objet est globalement suffisant pour une grande
partie de ce manuscrit.
Si on prend l’exemple du monde réel, nous sommes entourés d’objets : une chaise, une
table, une voiture, etc. Ces objets forment un tout.
Ils possèdent des propriétés (la chaise possède quatre pieds, elle est de couleur
bleue, etc.).
Ces objets peuvent faire des actions (la voiture peut rouler, klaxonner, etc.).
Ils peuvent également interagir entre eux (l’objet conducteur démarre la voiture,
l’objet moteur fait tourner l’objet voiture, etc.).
En résumé
L’approche orientée objet permet de modéliser son application sous la forme
d’interactions entre objets.
Les objets ont des propriétés et peuvent faire des actions.
Ils masquent la complexité d’une implémentation grâce à l’encapsulation.
Les objets peuvent hériter de fonctionnalités d’autres objets s’il y a une relation
d’héritage entre eux.
L'un des principes phares de Java réside dans sa machine virtuelle : celle-ci assure à tous
les développeurs Java qu'un programme sera utilisable avec tous les systèmes
d'exploitation sur lesquels est installée une machine virtuelle Java. Lors de la phase de
compilation de notre code source, celui-ci prend une forme intermédiaire appelée byte
code : c'est le fameux code inintelligible pour votre machine, mais interprétable par la
machine virtuelle Java. Cette dernière porte un nom : on parle plus communément de
JRE (Java Runtime Environment). Plus besoin de se soucier des spécificités liées à tel ou
tel OS (Operating System, soit système d'exploitation).
Il existe deux façons de faire, soit télécharger Java Platform (JDK). Dans ce cas il faut
faire une configuration qui est fastidieuse surtout pour un débutant et vous installez en
plus un IDE (ex : Eclipse), c'est-à-dire un éditeur de codes pour développer en Java.
L’autre méthode d’installation plus simple à comprendre par l’étudiant est de
télécharger NetBeans with JDK. Si vous installez ce dernier, vous installez en même
temps NetBeans, JDK et JRE (Java Runtime Environment), comme le montre la figure
suivante :
Remarque :
Création d’un projet Java : Dans JRE : vous choisissez JavaSE-1.8, et vous passez à
l’étape suivante. On peut accéder au guide de création de projets par deux méthodes :
par le menu « File/New/Java Project… » ou par le menu contextuel du le panneau «
Package Explorer » (voir Figure 2).
Après avoir choisi « Project… », la fenêtre de création de projet (wizard) apparait (Figure
3a). Cette première étape permet de sélectionner quel type de projet l’on va créer. Pour
créer votre premier projet Java, choisissez « Java Project » et puis « Next ». La seconde
fenêtre (Figure 3b) permet de définir les propriétés essentielles du projet :
Son nom (ici ProjetTest). Ce nom sera aussi utilisé par Eclipse comme nom de
répertoire pour placer les fichiers du projet.
L’endroit où l’on veut créer le projet (« Contents »). Il est possible de créer un
nouveau projet dans le workspace en cours ou de créer un projet Eclipse à partir
de code source Java déjà existant.
La version de Java à utiliser pour compiler et exécuter le projet (« JRE »), ainsi
que des options avancées de compatibilité entre les versions de Java.
La structure du projet (« Project Layout »). Il y a deux manières de structurer les
projets : placer tous les fichiers sources à la racine du projet ou séparer les
sources et binaires dans des répertoires différents (« src » et « bin »). Ici, la
deuxième option a été choisie car plus propre. A partir de ces premiers
paramétrages, il est possible de cliquer sur « Finish » et de finaliser la création du
projet.
Création d’un package : Java permet de regrouper plusieurs classes dans un dossier
appelé package afin de faciliter la modularité. Pour cela, il vous suffit d’inclure le dossier
de votre package dans un projet et d’y importer les classes nécessaires.
Si l'instruction package était absente du fichier, alors c'est le package par défaut en Java
(‘default package’) qui est pris en considération. Ainsi toutes les classes du fichier vont
appartenir au paquetage par défaut. L’instruction permettant de nommer un package
doit figurer au début du fichier source (.java) comme suit :
---------------------------------Fichier Exemple.java------------------------------
Pour créer un nouveau package, cliquez simplement sur cette icône comme à la figure
suivante (vous pouvez aussi effectuer un clic droit puis : New > Package) :
Création d’une classe : Création de fichier avec le menu « File/New/Class …», la fenêtre
de création de classe apparait (Figure 4). Il faut spécifier le nom de la classe, et
éventuellement : le package dans lequel elle se trouve. Dans le cas de création d’une
classe principale ‘main’. En bas, vous devez cocher la case : public static void
main(String[] args).
Dans cette section, l’étudiant va apprendre la création d’un nouveau projet nommé TP0
pour coder son premier programme en Java. Pour cela, choisir New ensuite Java Project.
Vous retapez le programme ci-dessous en insérant l'instruction d’affichage d’un
message : System.out.println (" Le message à afficher"), ensuite cliquez sur Run
------------------------------------------------------------------------------------------------------------------------
/* Ce programme s'exécute dans la console d'Eclipse.
* Il affiche le texte Bonjour tout le monde à l'ecran.
*/
public class Principale { // Ne pas modifier cette ligne
public static void main(String[] args) {
// Cette méthode est le point d'entrée du programme
System.out.println("Voici un programme simple JAVA");
}
}
---------------------------------------------------------------------------------------------------------------------------
- Le symbole + ici joue le rôle de concaténation et non pas la somme puis qu’il
rassemble une variable String avec une variable de type int.
- Les commentaires sont des syntaxes qui servent à commenter son texte :
// commentaire sur une ligne
/* commentaire multi-lignes */
- Pour déclarer une variable de type chaine de caractère on utilise la commande
String suivie du nom de la variable
- Les noms de variables ne doivent contenir ni caractères accentués ni espaces et
doivent, dans la mesure du possible, respectez la convention de nommage Java.
Cette convention, la voici :
Tous les noms de classes doivent commencer par une majuscule ;
Tous les noms de variables doivent commencer par une minuscule ;
Si le nom d’une variable est composée de plusieurs mots, le premier
commence par une minuscule, le ou les autres par une majuscule, et ce,
sans séparation, par exemple : compteBancaire
- Lorsqu’on effectue des opérations sur des variables, on prend garde à leur type :
On pourra perdre en précision.
- On peut caster un résultat en ajoutant un type devant celui-ci : (int), (double),
etc.
- Les conditions vous permettent de n’exécuter que certains morceaux de code.
- Il existe plusieurs sortes de structures conditionnelles :
La structure if … elseif … else ;
La structure switch … case … default ;
La structure ? :
- Si un bloc d’instructions contient plus d’une ligne, vous devez l’entourer
d’accolades afin de bien en délimiter le début et la fin.
- Pour pouvoir mettre une condition en place, on doit comparer des variables à
l’aide d’operateurs logiques.
- On peut mettre autant de comparaisons renvoyant un boolean que vous le
souhaitez dans une condition.
- Pour la structure switch, pensez à mettre les instructions break ; si on ne
souhaite exécuter qu’un seul bloc case
- Pour créer des programmes interactifs acceptant les entrées d'un utilisateur,
vous pouvez utiliser System.in, qui fait référence au périphérique d'entrée
standard (généralement le clavier). Pour créer un objet Scanner et le connecter à
l'objet System.in, vous écrivez une instruction similaire à celle-ci:
Scanner clavier = new Scanner(System.in);
La classe Scanner contient des méthodes permettant d'extraire des valeurs d'un
périphérique d'entrée. Cela signifie que les données sont acceptées lorsqu'un
utilisateur appuie sur la touche Entrée, un espace ou une tabulation.
- La classe Scanner se trouve dans le package java.util que vous devrez importer.
Pour faire ceci, vous devrez importer la classe Scanner grâce à l’instruction
import. En introduisant la variable de type Scanner et en introduisant le point
permettant d’appeler des méthodes de l’objet, Eclipse nous propose une liste de
méthodes associées à cet objet (ceci s’appelle l’autocomplétion) comme le
montre la figure ci-dessous ; de plus, lorsque on commence à taper le début de
la méthode nextInt(), le choix se restreint jusqu'à ne laisser que cette seule
méthode.
Méthode Description
nextDouble() Récupère l’entrée en tant que Double
nextInt() Récupère l’entrée en tant que int
nextLine() Récupère la ligne de données suivante et la renvoie sous forme de chaîne
(String)
next() Récupère la prochaine entrée sous forme de chaîne
nextShort() Récupère l’entrée en tant que Short
nextByte() Récupère l’entrée en tant que octet (Byte)
nextFloat() Récupère les entrées sous forme de float. Notez que lorsque vous entrez
une valeur d’entrée qui sera stockée sous forme de float, vous ne tapez pas
de F. Le F est utilisé uniquement avec les constantes codées dans un
programme.
Méthode Description
nextLong() Récupère l’entrée en tant que long. Notez que lorsque vous entrez une
valeur d’entrée qui sera stockée longtemps, vous ne tapez pas un L. Le L
est utilisé uniquement avec des constantes codées dans un programme.
Exercice 1 :
Ecrire un programme principal qui calcule le quotient de deux entiers donnés et l’affiche
dans la console. Ce programme sera divisé en trois étapes :
Note :
- Instruction : Si… Alors … Sinon…
If (condition) {
actions
} else {
actions
}
-Operateurs de comparaison: égalité ==, différence !=
Ecrire un programme principal Java qui permet de saisir des nombres entiers à partir du
clavier. Ensuite faire un test pour afficher si le nombre X est négatif, nul, ou positif.
Note : Pour bien structurer votre programme final, allez dans : Source-- Format
Exercice 3 :
- Ecrire un programme principal Java qui calcule le prix d’un article (prixArticle)
soldé selon qu’il soit soldé à -20% ou -50%. Donc on demande à l’utilisateur de
faire la saisie du prix de l’article avant qu’il soit soldé.
- Ensuite de rentrer le code solde selon que l’article est soldé -20% (codeSolde=1)
ou -50% (codeSolde=2) et calculer le prix de l’article soldé, puis l’afficher.
- Dans le même programme, vous rajoutez un cas supplémentaire qui consiste à
ce que l’article soit soldé à -70% sans taper le codeSolde correspondant dans le
programme.
- Remplacez fonction System.out.print par la fonction System.out.println, quelle
est votre remarque ?
Dans le cas de choix multiples, il n’est pas forcément très pratique d’enchainer les ‘if
…else…’. Il est donc plus judicieux d’utiliser l’instruction à choix multiples Switch.
Un case représente un point à partir duquel l’exécution du code commencera. Si on veut
isoler chaque bloc de cas, il faut utiliser une instruction break. Au contraire, l’omission
de l’instruction break peut être pratique si on veut effectuer le même traitement pour
un ensemble de cas.