Software">
Qualité et Avantages de la POO en Java
Qualité et Avantages de la POO en Java
[Link]@[Link]
Introduction
Faible cohésion (modules font Une fonction ou un module s’occupe de Responsabilité unique : une classe =
trop de choses) tâches hétérogènes → difficile à tester. un rôle précis (SRP).
1
0
•Bytecode (interprétation)
•javac → produit un fichier .class (Bytecode).
•La JVM exécute les instructions une par une.
• Très portable (Write Once, Run Anywhere).
• Plus lent (traduction instruction par
instruction).
1
Développement Orienté Objet
4
Ce que contient le JDK
❑ JDK = Java Development Kit
C’est le kit de développement officiel qui permet de programmer en Java.
❑ Il contient :
➢ Le compilateur (javac) → transforme ton code .java en bytecode .class.
➢ La JVM (Java Virtual Machine) → exécute le bytecode.
➢ Le JRE (Java Runtime Environment) → bibliothèques et classes
nécessaires à l’exécution des programmes.
➢ Des outils : javadoc, jar, jshell, débogueur, etc.
15
Développement Orienté Objet
Outils de développement java
❑ Éditeurs de texte simples
• On peut écrire du Java avec n’importe
quel éditeur (Notepad++, Sublime Text,
Vim…).
• Mais il est recommandé d’utiliser un IDE
ou un éditeur moderne qui facilite le
développement.
❑ Visual Studio Code (VS Code)
Léger, gratuit, multiplateforme.
Extensions recommandées :
• Extension Pack for Java (compilation, exécution,
débogage).
❑ IntelliJ IDEA (JetBrains)
• Version Community (gratuite) ou Ultimate
(professionnelle).
• Très utilisé en entreprise. 1
❑ VS code & NetBeans 6
• Toujours présents dans l’éducation et certains
projets.
Développement Orienté Objet
Premier programme java
Remarques:
◼ Le nom du fichier java doit être le même que celui de la classe
qui contient la fonction principale main.
◼ Pour compiler le programme source, il faut faire appel au
programme [Link] qui se trouve dans le dossier bin.
◼ Après compilation du programme [Link], il y a
génération du fichier [Link] qui représente le
ByteCode de programme.
◼ Pour exécuter ce programme en byte code, il faut faire appel au
programme [Link] qui représente l interpréter du bytecode.
1
7
18
1
Développement Orienté Objet
8
Structures fondamentales
du langage java
1
9
2
1
❑ boolean fini;
2
3
2
4
2
6
2
7
2
8
2
9
3
0
◼ L'instruction conditionnelle if
La syntaxe de l'instruction if peut être décrite de la façon suivante:
if (expression) instruction;
ou :
if (expression) {
instruction1;
instruction2;
}
◼ L'instruction conditionnelle else
if (expression) {
instruction1;
}
else {
instruction2;
}
3
1
3
2
3
4
3
6
L’orienté objet
37
1.1-Notion d'< Objet >
• Les objets sont des entités avec des propriétés et des caractéristiques bien
spécifiques
38
Programmation Orientée Objet (POO)
Objet 1 Message
Objet 3
Objet 2
Programmation Orientée Objet
Fonction 1 Fonction 2
Fonction Fonction
DONNEES 3
6
Fonction 5 Fonction 4
Programmation Orientée Objet
Résistance
SetValueR SetValueP
GetRmin R P GetValueR
GetRmax GetValueP
Exemple d’objet
42
1.2-Objets et classes d’objets
43
-Exemple: Gestion d’un zoo
• L’Héritage
• Permet de définir les bases d’un nouvel objet à partir d’un objet existant
• Le nouvel objet hérite des propriétés de l’ancêtre et peut recevoir de
nouvelles fonctionnalités
• Avantages
• Meilleures réutilisations des réalisations antérieures parfaitement au
point
Programmation Orientée Objet
• Concept de Classe
• Type réunissant une description
• D’une collection de données membres hétérogènes ayant
un lien entres elles
• D’une collection de méthodes (fonctions membres) servant
à manipuler les données membres
• Généralisation du type structure ou record des
langages non OO (classe = définition de données +
définition de méthodes)
• Possibilité de fixer la visibilité externe des différents
constituants de la classe
Programmation Orientée Objet
• Les Constructeurs
• Permettent d’initialiser l’objets lors de sa création
• copie des arguments vers les données membres
• initialisation de variables dynamiques à la création de
l’objet
• Sont appelés de manière automatique à la création de
l’objet
• Peuvent être surchargés→On peut en définir plusieurs
de même nom mais acceptant des arguments
différents
• Possèdent le même nom que la classe
Programmation Orientée Objet
• Le Destructeur
• Il est unique
• Est appelé automatiquement lors de la destruction de l’objet
• Sert généralement à éliminer les variables dynamiques de l’objet (créées
en général par le constructeur)
• Il a pour nom le nom de la classe précédé du symbole ~
Programmation Orientée Objet
• Les Accesseurs
• Catégorie de fonctions membres qui permettent l’accès et l’utilisation
des informations privées contenues dans l’objet
• Les Modificateurs
• Permettent de modifier l’état des données internes (publiques ou
privées) de l’objet
Programmation Orientée Objet
58
//Ceci importe la classe Scanner du package [Link]
import [Link];
//Ceci importe toutes les classes du package [Link]
import [Link].*;
▪ Avant d'indiquer à Java qu'il faut lire ce que nous allons taper au
clavier, nous devrons instancier un objet Scanner.
▪ Créez une nouvelle classe et tapez cette ligne de code dans votre
méthode main :
Scanner sc = new Scanner([Link]);
59
Autres types à saisir
import [Link];
public class Main { public static void main(String[] args)
{ Scanner sc = new Scanner([Link]);
[Link]("Saisissez un entier : ");
int i = [Link]();
[Link]("Saisissez une chaîne : ");
[Link]();
String str = [Link]();
[Link]("FIN ! "); } }
60
Boucles: FOR
61
Boucles: FOR
62
Boucles: L'instruction while
63
Les tableaux
Initialisation
Il est possible d’initialiser une variable de type tableau à partir
d’une liste fixe délimitée par des accolades.
65
Les tableaux
67
Les tableaux
70
Les tableaux
Tableau multi-dimensionnel
Il est possible d’initialiser un tableau à plusieurs dimensions.
int[][] tableauDeuxDimensions = {{1, 2}, {3, 4}}; int[][][]
tableauTroisDimensions = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}};
[Link](tableauDeuxDimensions[0][1]);
[Link](tableauTroisDimensions[0][1][0]);
Il est également possible de créer un tableau multi-dimensionnel
avec le mot-clé new.
int[][] tableauDeuxDimensions = new int[2][10]; int[][][]
tableauTroisDimensions = new int[2][10][5];
71
Les tableaux
72
Les tableaux
Pour comparer deux objets, il faut utiliser la méthode equals. Les tableaux en Java
disposent de la méthode equals, malheureusement, elle a exactement le même
comportement que l’utilisation de l’opérateur ==.
int[] tableau1 = {1, 2, 3, 4, 5}; int[] tableau2 = {1, 2, 3, 4, 5};
[Link]([Link](tableau1)); // true
[Link]([Link](tableau2)); // false
79
Exercice: Tableau de 10 entiers à saisir et
afficher le max, le min et la moyenne
import [Link];
80
// Saisie des 10 entiers
[Link]("Veuillez saisir 10 entiers :");
for (int i = 0; i < 10; i++) {
[Link]("Entier " + (i + 1) + ": ");
tableau[i] = [Link]();
somme += tableau[i];
}
81
// Initialisation du minimum et maximum
int min = tableau[0];
int max = tableau[0];
83
Comparer deux chaine de caractères x et y:
if ([Link](y))
{ [Link]("Les chaînes sont égales"); }
else
{ [Link]("Les chaînes sont différentes"); }
}
}
84
Les listes en Java
▪ Le Java Collection Framework contient des interfaces et des classes
très utiles qui les implémentent pour travailler avec des structures
de données.
85
Les listes en Java
▪ L'interface Java List hérite de Collection, elle hérite de toutes ses
opérations. En plus de celles-ci, les opérations suivantes sont
également possibles dans List :
▪ Accès positionnel. Chaque élément a un index et peut être
manipulé en fonction de sa position. dans la liste. Autrement
dit, vous pouvez ajouter, exclure et modifier des éléments.
▪ Recherche. Vous pouvez trouver un élément dans une liste par
son contenu et renvoyer son index.
▪ Itération. La nature séquentielle de List permet l'utilisation de
méthodes d'itération (listIterator).
▪ Gamme-vue. La méthode de sous-liste effectue des opérations
de plage arbitraires sur la liste.
86
Méthodes de liste Java
▪ Les opérations ci-dessus sont exposées dans les méthodes de l'interface
Java List. En voici quelques-uns:
▪ ajouter (élément E) Cette méthode ajoute l'élément element à la fin
de cette liste.
▪ ajouter (index int, élément) La méthode ajoute un élément à un
index particulier dans la liste. Si un paramètre nécessaire est passé, il
ajoute l'élément à la fin de la liste.
▪ addAll (index int, collection Collection) Ajoute tous les éléments de la
collection donnée à la liste. Si un seul paramètre est passé, il ajoute
tous les éléments de la collection donnée à la fin de la liste.
▪ taille() Renvoie la taille de la liste (quantité d'éléments dans la liste).
▪ obtenir (index entier) Renvoie l'élément à l'index spécifié.
▪ ensemble (index int, élément) Remplace les éléments à un index
donné par le nouvel élément et renvoie l'élément qui a été remplacé
par un nouvel élément.
▪ supprimer (index int) Supprime un élément de l'index spécifié.
87
Méthodes de liste Java
▪ supprimer (élément) Supprime la première occurrence de l'élément donné dans
la liste.
▪ clair() Supprime tous les éléments de la liste.
▪ indexOf(élément) Renvoie la première occurrence de l'élément donné. Si
l'élément n'est pas présent dans la liste, renvoie -1 .
▪ dernierIndexDe(élément) Renvoie la dernière occurrence de l'élément donné.
Si l'élément n'est pas présent dans la liste, renvoie -1 .
▪ est égal à (élément) Comparez l'égalité de l'élément donné avec les éléments de
la liste.
▪ est vide() Vérifie si la liste est vide. Renvoie vrai si la liste est vide.
▪ contient (élément) Vérifie si la liste contient l' élément . Renvoie true si la liste
contient l'élément.
▪ contientTout(Collection collection) Vérifie si la liste contient toute la collection
d'éléments.
▪ tri(Comparateur comp) Trie les éléments de la liste en fonction du comparateur
donné.
▪ subList(int fromIndex, int toIndex) Renvoie une vue de la partie de cette liste
entre le fromIndex spécifié, inclus, et le toIndex, exclusif. 88
Implémentation de la liste
•Comme List est une interface, les programmes doivent en créer
une implémentation concrète. Vous pouvez choisir entre les
implémentations List suivantes dans l'API Java Collections :
•[Link]
•[Link]
•[Link]
•[Link]
89
Vous pouvez déclarer un programme List en Java de l'une des
manières suivantes :
90
Déclaration d'interface de liste
Désormais, seules des chaînes peuvent être ajoutées à notre pile, des
entiers à linkedList , des flottants à myVector et myList est une liste de
caractères.
91
Déclaration d'interface de liste
92
import [Link].*;
Exemple de liste Java (réalisation d'Arraylist)
public class ArrayListExample2 { public static void main(String[] args)
{ List<String> myFriendsList = new ArrayList(); //we created list of some objects
[Link]( "the size of myList before init = " + [Link]());
[Link]("Alex"); [Link]("Tanya"); [Link]("Veloxy");
[Link]("Alex"); [Link]("Andrew");
[Link](myFriendsList);
[Link]( "the size of myList after init = " + [Link]());
[Link]("Ihor"); [Link](myFriendsList);
[Link]("the size of my list = " + [Link]());
//here the program will print out the first appearance of "Alex" element
[Link]([Link]("Alex"));
//program will print out the first appearance of "Alex" element starting from the element 0
[Link](3);
[Link]([Link](3));
[Link]("after removing one of Alex's there is only one Alex: " + myFriendsList);
[Link]([Link](1));
[Link]();
[Link]("the size of the vector after clear method = " + [Link]());
93
}}
Exemple de liste Java (réalisation d'Arraylist)
94
Comment fonctionne LinkedList
• Dans une LinkedList, les éléments sont en fait des liens dans la
même chaîne.
• Chaque élément, en plus des données qu'il stocke, a un lien vers
l'élément précédent et suivant.
• Ces liens permettent de naviguer d'un élément à l'autre. L'itérateur
prend en charge la traversée dans les deux sens. Implémente des
méthodes pour obtenir, supprimer et insérer au début, au milieu et à
la fin d'une liste. Vous permet d'ajouter n'importe quel élément, y
compris null.
97
Convertir un array en une liste
• Pour convertir un array, vous pouvez exécuter une liste avec des boucles et ajouter tour
à tour les éléments de l’array grâce à la méthode « .add() ».
• import [Link].*;
• public class ArrayToList{
• public static void main(String args[]){
• // Création d’un array
• String[] colors={"blue","green","red","yellow"};
• [Link]("Array: "+[Link](colors));
• //Conversion de l’array en liste
• List<String> list=new ArrayList<String>();
• for(String color: colors){
• [Link](color);
• }
• [Link]("List: "+list);
• }
• } 98
• Le résultat est le suivant :
99
Convertir une liste en un array
• Grâce à la méthode « toArray() », une liste peut être transformée en un array :
• import [Link].*;
101
Conception d’IHM en Java
Les boîtes à outils graphiques interactives de Java :
• Java propose deux boîtes à outils graphiques :
• AWT (Abstract Window Toolkit), simple, petite et limitée
• SWING, cohérente, grosse et extensible.
• Les deux peuvent s'utiliser dans les applets
• SWING facilite la transition à partir d'AWT.
• Construire une fenêtre graphique
• Objets graphiques
• Composition, affichage
• Programmation par événement
• Comment faire pour que le programme réagisse?
• Principe MVC – Modèle-Vue-Contrôle
• Package Swing
102
Conception d’IHM en Java
103
Exemple simple (Montrer)
104
Vérification de l'installation de Java
[Link]-vous d'utiliser un JDK complet :
•L'erreur peut survenir si vous n'utilisez que le JRE (Java
Runtime Environment) au lieu du JDK (Java Development Kit).
•Téléchargez et installez la dernière version du JDK
depuis OpenJDK ou le site officiel d'Oracle.
105
Configuration du projet
[Link] les propriétés du projet :
•Cliquez avec le bouton droit sur votre projet dans l'explorateur
de projets et sélectionnez Properties.
•Allez dans Java Build Path, puis dans l'onglet Libraries.
•Supprimez l'ancienne bibliothèque JRE System Library si elle
pointe vers un JRE,
• puis ajoutez la nouvelle en cliquant sur Add Library,
sélectionnez JRE System Library,
•et choisissez celle qui correspond à votre JDK.
106
3.Vérifiez les restrictions d'accès :
•Si vous utilisez des modules (Java 9 et ultérieur),
assurez-vous que votre fichier module-
[Link] contient la ligne suivante :
java
requires [Link];
107
Afficher une interface
Importer le package (les classes)
Les classes sont regroupées en package
Importer un package = importer toutes les classes du package
import [Link].*;
Créer une fenêtre graphique (JFrame, …)
Définir les paramètres (taille, …)
Afficher
Différence:
import [Link].*; les classes dans awt
import [Link].*; les classes dans event
import [Link].*;
awt: Abstract Windows Toolkit
108
Les objets graphiques
3 niveaux
Haut niveau
Définir une fenêtre
JApplet, JDialog, JFrame, JWindow
Niveau intermédiaire
Pour composer la fenêtre
JPanel, JScrollPane, JSplitPane, …
Niveau inférieur
Les éléments de base
JButton, JCheckBox, JTextField, JTextArea, …
109
Insérer des éléments dans la fenêtre
110
Ajouter des composants dans une fenêtre
111
Utilisation de GridBagLayout
[Link] GridBagLayout :
•Ce layout est plus complexe mais offre une grande
flexibilité pour positionner les composants dans une grille.
•Exemple :java
113
Exemple Application Interface graphique :
114
Exercice:
Écrire un programme Java pour créer une classe appelée « Vehicule »
avec des attributs pour la marque, le modèle et l’année. Créez des
classes fils « Voiture » et « Camion » qui ajoutent des attributs
spécifiques tels que la taille du coffre pour les voitures et la capacité
de charge pour les camions. Implémentez une méthode pour afficher
les détails du véhicule dans chaque classe fille.
115