55 1 3MB
PROGRAMMATION ORIENTÉE OBJET LES FONDAMENTAUX DU LANGAGE JAVA Dr Eugène PAMBA CAPO-CHICHI
[email protected]
23/01/2023
1
Plan ■ Présentation du langage JAVA ■ Bases du langage et structures de contrôle ■ Classes et objets ■ Exceptions ■ Applications Graphiques ■ Applets ■ Accès aux bases de données
23/01/2023
2
Plan ■ Présentation du langage JAVA ■ Bases du langage et structures de contrôle ■ Classes et objets ■ Exceptions ■ Applications Graphiques ■ Applets ■ Accès aux bases de données
23/01/2023
3
Qu’est ce que JAVA ?
23/01/2023
4
Plan ■ Présentation du langage JAVA – Historique & Caractéristiques ■ Bases du langage et structures de contrôle ■ Classes et objets ■ Exceptions ■ Applications Graphiques ■ Applets ■ Accès aux bases de données
23/01/2023
5
Pourquoi JAVA ? (1/3) ■ Bill Joy Ingénieur chez Sun Microsystems et son équipe de chercheurs – Projet « Green » ■ ■
Développement d’applications destinées à une large variété de périphériques et systèmes embarqués Choix de la POO et du langage C++ – Problèmes d’incompatibilité – – – –
23/01/2023
architectures matérielles (processeurs, taille, mémoires) systèmes d’exploitation adaptation des interfaces graphiques interconnexion entre les différents appareils
6
Pourquoi JAVA ? (2/3) ■
1991 : Le Langage JAVA – d’abord surnommé C++-- pour C++ sans ses défauts
■
Besoin d’une plateforme et d’un langage idéal pour le développement d’applications sécurisées, – distribuées, – portables – ■ ■ ■
sur de nombreux dispositifs – périphériques et systèmes embarqués interconnectés en réseau sur internet – clients légers sur des stations de travail
–
23/01/2023
clients lourds
7
Caractéristiques de JAVA ■
JAVA : Langage et plateforme de développement
■
Sun Microsystems caractérise JAVA : – simple – orienté objet – distribué – interprété – robuste – sécurisé – Indépendant des architectures – portable – performant – multitâche – dynamique
23/01/2023
8
Simple ■ Syntaxe simple ■ 3 types primitifs (
booléen)
numérique, caractère,
■ Les tableaux et chaines de caractères sont des objets – ce qui facilite la création et la manipulation ■ Gestion de la mémoire via le Garbage collector ■ Pas de préprocesseur et pas de fichiers d’entête ■ Pas de pointeurs en JAVA
23/01/2023
9
Distribué ■ JAVA – Implémente les protocoles réseau standard – Fournit deux API pour le développement d’applications client/serveur ■
Remote Method Invocation (RMI)
–
■
Common Object Request Broker Architecture (CORBA)
–
23/01/2023
Communication d’objets JAVA sur différentes machines virtuelles JAVA et même sur différentes machines physiques Communication des objets JAVA, C++, Lisp, Python COBOL etc..
10
Interprété ■ Un programme JAVA est interprété dans une machine virtuelle appelée JVM (Java Virtual Machine) – Pas besoin de recompiler un programme pour passer d’une machine à une autre
23/01/2023
11
Robuste ■ Double vérification de la syntaxe et des types – Compilation – Exécution ■ Gestion des pointeurs entièrement prise en charge par JAVA – Le programmeur n’a aucun moyen d’y accéder – Ce qui évite la manipulation de données corrompues
23/01/2023
12
Sécurisé ■ Moteur d’exécution JAVA : JRE – Mécanisme de veille à la sécurisation des applications et des systèmes ■
Planification mémoire des objets
– Peut être paramétré afin de contrôler les accès réseau
23/01/2023
13
Indépendant des architectures & Portable ■ Le compilateur JAVA ne produit pas du code spécifique pour un type d’architecture – Bytecode ■ C’est un langage interprété donc portable
23/01/2023
14
Performant ■ Processus d’optimisation JIT (Just In Time) – JAVA : langage interprété – Compilation du Bytecode JAVA en code natif à la volée grâce au JIT (ou HotSpot) pour atteindre des performances comparables à celles du C/C++
23/01/2023
15
Multitâche ■ Permet l’exécution simultanée en plusieurs threads (ou processus légers) – Plusieurs traitements simultanés afin d’accroître la rapidité des applications, notamment par
23/01/2023
■
Partage du temps CPU
■
Partage du traitement en plusieurs processeurs
16
Dynamique ■ Pas d’édition de liens – Compilation ■
Vérification de l’existence des classes
– Exécution ■
23/01/2023
Appel du code de la classe
17
Qu’est ce que la Programmation Orientée Objet (POO) ? Pourquoi ce type de programmation ? Quels sont les avantages de la POO ?
23/01/2023
18
JAVA : un langage Orienté Objet ■ Regroupement des données et des traitements dans une même entité appelée Objet ■ Les avantages de la POO : – Rendre les logiciels plus fiable par :
■ ■ ■ ■ 23/01/2023
la facilité d'organisation, la modularité, la réutilisation, la facilité de correction 19
■ Quelle est la différence entre un Objet et une Classe ?
23/01/2023
20
Objet Vs Classe ■ Une Classe décrit la structure d’un élément ■ Un Objet représente un exemplaire crée sur le modèle de cette structure. C’est une instance d’une classe. – Après sa création, un Objet est indépendant des objets créés à partir de la même classe
23/01/2023
21
Les classes ■ Les classes sont constituées de champs et de méthodes – Champs :
■ caractéristiques des objets représentés par des variables – Méthodes :
■ Les actions qu’un objet peut effectuer, mises en œuvre par la création de procédures ou de fonctions dans une classe 23/01/2023
22
Concepts fondamentaux de la POO ■
Encapsulation
–
consiste à cacher les éléments qui ne sont pas nécessaires pour l’utilisation d’un Objet. ■
– ■
interdiction d’agir directement sur les données d’un objet; il faut nécessairement passer par ses méthodes.
Cette technique permet de correctement utilisé.
garantir
que
l’objet
sera
Héritage
–
Permet la création d’une nouvelle classe à partir d’une classe existante. ■
–
Possibilité d’ajout de données et de nouvelles méthodes.
Cette technique favorise l’évolution et la réutilisation du code existant.
Polymorphisme… ■23/01/2023
23
Qu’est ce qu’une plate-forme ?
23/01/2023
24
Plate-forme Java ■ Plate-forme : environnement matériel et logiciel sur lequel s’exécute un programme – Ex: une machine et son système d’exploitation ■ Particularité de la Plate-forme Java – Partie uniquement logicielle qui s’exécute sur différents matériels et différents systèmes d’exploitation
23/01/2023
25
Les composants de la plateforme Java (1/2)
23/01/2023
26
Les composants de la plateforme Java (2/2) ■ Machine virtuelle Java (JVM) ■ API Java – API de bases – API d’accès aux données et d’intégration – API de gestion de l’interface utilisateur – Outils de déploiements des applications – Outils d’aide au développement
23/01/2023
27
La machine virtuelle Java ■
Nécessaire pour l’exécution de programme
■
Disponible sur de nombreux types d’ordinateurs et systèmes d’exploitation
■
Rôle : – Chargement des classes (Bytecode) – Gestion mémoire (Garbage collector) – Interfaçage avec le code natif
–
Sécurité ■
■
Vérification au chargement
–
que le programme ne fait pas appel à de la mémoire non initialisée
– –
que les conversions de types ne sont pas illégales que le programme ne manipule pas des pointeurs en mémoire
Dans le cas d’applets
–
■
Interdiction au programme l’accès à des périphériques de la machine sur laquelle l’applet s’exécute et autorise l’accès au réseau uniquement vers l’hôte qui diffuse
Principal inconvénient : moins performant que les langages natifs
23/01/2023
28
Outils d’aide au développement ■ Compilation – Javac ■ Exécution – Java ■ Génération de la documentation – Javadoc
23/01/2023
29
Les étapes de la création d’un programme Java 1.
Création du fichier source
2.
Compilation du fichier source
3.
Exécution de l’application
23/01/2023
30
Configuration de l’environnement JAVA 1. 2.
Repérer le répertoire source de JAVA : C:\Program Files\Java\jdk1.8.0_111 Définir la variable d’environnement JAVA_HOME ü Aller dans Panneau de configuration \ Système et sécurité \ Système \ Paramètres systèmes avancés \ Variable d’environnement ü Définir une variable système JAVA_HOME qui pointe vers le répertoire source JAVA ü Dans la variable système path, rajouter la ligne suivante: ; %JAVA%\bin ü En ligne de commande, tester la commande javac.
23/01/2023
31
Exemple de la structure minimum d’une application ■ Créer un fichier MonApplication.java public class MonApplication { public static void main (String arguments[]) { System.out.println ("Mon premier code Java"); } }
23/01/2023
32
La méthode « main » (1/5)
public class MonApplication { public static void main (String arguments[]) { System.out.println ("Mon premier code Java"); } }
23/01/2023
33
La méthode « main » (1/3) ■ Premier élément appelé par la machine virtuelle au lancement de l’application ■ Son corps contient les instructions nécessaires pour la lancement de l’application – Création d’instances de classes – Initialisation des variables – Appel de méthodes ■ Toujours suivant la même syntaxe: – public static void main (String arguments[]) {…}
23/01/2023
34
La méthode « main » (2/3) ■ public static void main (String arguments[]) {…} –
public : ■
–
static : ■
–
modificateur d’accès utilisé pour définir la méthode main () comme étant qui méthode de classe. La machine virtuelle peut donc appeler cette méthode sans avoir à créer une instance de la classe dans laquelle elle est définie.
void : ■
23/01/2023
modificateur d’accès utilisé pour rendre la méthode accessible à l’ensemble des autres classes et objets de l’application, et également pour que l’interpréteur JAVA puisse y accéder de l’extérieur au lancement de l’application
Mot clé pour indiquer que la méthode est une procédure qui ne retourne pas de valeur
35
La méthode « main » (3/3) ■ public static void main (String arguments[]) {…} – arguments : ■ ■
paramètre de la méthode – Tableau de chaines de caractères sert à passer des arguments en ligne de commande au lancement de l’application
– Corps du main {…} ■
23/01/2023
System.out.println (…) – Permet d’afficher un texte dans la fenêtre console
36
Compilation et exécution du programme ■
Javac MonApplication.java --> compilation
■
Java MonApplication --> exécution
public class MonApplication
{ public static void main (String arguments[])
{ System.out.println ("Mon premier code Java");
} }
23/01/2023
37
Message d’erreur ■ Java.lang.NoClassDefFoundError – Le programme ne peut être exécuté – Raisons possibles : ■ ■ ■
23/01/2023
Le nom du fichier à exécuter ne porte pas le même nom que la classe L’extension .class a été ajouté après le nom du fichier à exécuter Le fichier que vous exécutez ne contient pas la méthode main
38
Exercice I ■ Question I – Vérifier que les points suivants génèrent des erreurs ■ ■
Le nom du fichier à exécuter ne porte pas le même nom que la classe Le fichier que vous exécutez ne contient pas la méthode main
■ Question II – Afficher la liste des arguments passés en ligne de commande à votre programme (A déplacer dans la partie boucle)
23/01/2023
39
Plan ■ Présentation du langage JAVA ■ Bases du langage et structures de contrôle ■ Classes et objets ■ Exceptions ■ Applications Graphiques ■ Applets ■ Accès aux bases de données
23/01/2023
40
Plan ■
Présentation du langage JAVA
■
Bases du langage et structures de contrôle – Variables & Types – Tableaux – Opérateurs – Structures de contrôle
■
Classes et objets
■
Exceptions
■
Applications Graphiques
■
Applets
■
Accès aux bases de données
23/01/2023
41
Qu’est ce q’une variable ?
23/01/2023
42
Variable et déclaration ■ Mémorise des valeurs utiles pendant l’exécution du programme ■ Doit être déclarée avant son utilisation dans le code ■ Déclarée dans une classe – Variable d’instance (chaque instance de la classe aura son propre exemplaire de la variable) ■ Déclarée avec le mot clé static dans une classe – Variable de classe (accessible avec le nom de la classe et n’existe qu’en un seul exemplaire) ■ Déclarée dans une fonction – Variable locale (accessible uniquement pendant l’exécution de la fonction et que par le code de celle-ci)
23/01/2023
43
Nom des variables ■ Commence obligatoirement par une lettre ■ Peut être constitué de lettres, chiffres ou caractère souligné (_) ■ Les mots clés du langage ne doivent pas être utilisés comme nom de variable ■ Par convention les noms de variables sont en lettres minuscules sauf la première lettre de chaque mot si il en comporte plusieurs – ex : prenomDuProfesseur;
23/01/2023
44
Types de variable ■ Le type spécifie les informations que nous pouvons stocker dans cette variable et les opérations susceptibles d’être effectuées ■ Deux catégories : – Valeur : ■
la variable contient réellement les informations
– Référence : ■
23/01/2023
la variable contient l’adresse mémoire où se trouve les informations
45
Types numériques signés Types numériques signés byte
-128
127
1 octet (8 bits)
short
-32768
32767
2 octets
int
-2147483648
2147483647
4 octets
long
-9223372036854775808
9223372036854775807
8 octets
ü Un bit est réservé pour représenter le signe du nombre (0 pour un nombre positif et 1 pour un nombre négatif) ü Dans le choix du type des variables entières, il est important de prendre en compte les valeurs minimales et maximales que vous envisagez stocker afin d’optimiser la mémoire utilisée 23/01/2023
46
Types décimaux Types décimaux float
4 octets
double
8 octets
Différence entre double et float à ce niveau en terme d’utilisation ?
23/01/2023
47
Types caractères et booléen ■ Le mot clé char représente les caractères – une chaine de caractère représentée par l’intermédiaire de la classe String ■ Le mot clé boolean permet de représenter une valeur logique du type vrai/faux – ex: boolean disponible, modifiable; ■ ■
23/01/2023
disponible = true; Modifiable = false;
48
Conversions des types ■ Consiste à transformer une variable d’un type en un autre type ■ Il peut avoir perte d’information avec la conversion – Ex : float surface; surface=2356.8f; int approximation = (int) surface; //perte de la partie
décimale
■ Les conversions vers un type supérieur se font par simple affectation.
23/01/2023
49
Conversion vers une chaine de caractères ■ Liens\String (Java Platform SE 8 ).htm
23/01/2023
50
Polymorphisme de méthodes : surcharge
23/01/2023
51
Les constantes ■ La déclaration d’une constante se fait en rajoutant le mot clé final devant la variable – ex: final double TAUXTVA = 1,196; prixTTC = prixHT * TAUXTVA ; Mettre l’exemple de PI à ce niveau
23/01/2023
52
Niveau d’accès des variables ■ private : – La variable est utilisable uniquement dans le code de la classe où elle est définie ■ protected – La variable est utilisable dans la classe où elle est définie, dans les sous-classes de cette classe et dans les classes qui font partie du même package. ■ public – La variable est accessible à partir de n’importe quel classe indépendamment du package
23/01/2023
53
Exercice II ■ Question I – Ecrire un programme qui prend deux nombres et qui affiche :
23/01/2023
■
la somme des deux nombres
■
la moyenne des deux nombres
54
Plan ■
Présentation du langage JAVA
■
Bases du langage et structures de contrôle – Variables & Types – Tableaux – Opérateurs – Structures de contrôle
■
Classes et objets
■
Exceptions
■
Applications Graphiques
■
Applets
■
Accès aux bases de données
23/01/2023
55
Tableaux (1/3) ■ Permettent de faire référence à un ensemble de variables de même type par le même nom et d’utiliser un index pour les différencier ■ Premier élément d’un tableau : index zéro ■ Manipulation d’un tableau en trois étapes : 1. déclaration d’une variable permettant de manipuler les tableaux 2. 3.
23/01/2023
création du tableau (allocation mémoire) stockage et manipulation des éléments du tableau
56
Tableaux (2/3) 1.
Déclaration d’une variable permettant de manipuler les tableaux – int[] monPremierTableau;
2.
Création du tableau (allocation mémoire)
– –
23/01/2023
final int TAILLETABLEAU = 4; monPremierTableau = new int[TAILLETABLEAU];
57
Tableaux (3/3) 3. Stockage et manipulation des éléments du En mémoire : tableaux •
■ ■
23/01/2023
Les éléments du tableau sont accessibles 50 30de manière 20 10 classique : ü monPremierTableau[0] = 50; ü monPremierTableau[1] = 30; ü monPremierTableau[2] = 20; ü monPremierTableau[3] = 10; Une solution permettant simultanément de déclarer la variable, créer le tableau et initialiser son contenu ü int[] monPremierTableau = {50, 30, 20, 10}; Attention : ü monPremierTableau [10] => ArrayIndexOutOfBoundException !
58
Classe Arrays ■ Tri d’un tableau – La classe java.util.Arrays fournit de nombreuses méthodes static de manipulation de tableaux ■
int[] chiffreAffaire = {14500, 8000, 4500, 17000};
■
Arrays.sort(chiffreAffaire);
4500
■
23/01/2023
8000
14500
17000
Enlever les matrices après et introduire le tri à bulle
59
Tableaux à plusieurs dimensions ■
Déclaration d’une matrice
– – ■ ■
int[][] matrice; matrice = new int [2][3];
Accès aux éléments du tableau – Matrice [0][0] = 99; Déclaration création simultanément
–
et
initialisation
du
tableau
int[][] grille = {{12,45,63}, {17,5,3}, {21,42,36}}; // Tableau à deux dimensions de 3 cases sur 3 cases
23/01/2023
60
Manipulation des tableaux à plusieurs dimensions (1/2) ■ Affichage des informations du tableau
int[][] matrice; matrice = new int [8][3]; System.out.println ("le tableau comporte " + matrice.length + " cases sur " + matrice[0].length +" cases.");
23/01/2023
61
Manipulation des tableaux à plusieurs dimensions (1/2) int[][] matrice; matrice = new int [8][3]; System.out.println ("le tableau comporte " + + matrice.length + " cases sur " matrice[0].length + " cases.");
23/01/2023
62
Exercice III ■ Question I – Créer un tableau et afficher tous ses éléments ■ Question II – Trier et afficher le tableau de la Question I
23/01/2023
63
Plan ■
Présentation du langage JAVA
■
Bases du langage et structures de contrôle – Variables & Types – Tableaux – Opérateurs – Structures de contrôle
■
Classes et objets
■
Exceptions
■
Applications Graphiques
■
Applets
■
Accès aux bases de données
23/01/2023
64
Les opérateurs ■ Mots clés du langage permettant l’exécution d’opérations sur le contenu de certains éléments, en général des variables, des constantes, ou des fonctions de retour ■ Deux types d’opérateurs : – Unaires ■
ne travaillent que sur un seul opérande
– Binaires ■
23/01/2023
nécessitent deux opérandes
65
Opérateurs unaires Opérateur
Action
-
Valeur négative
~
Complément à un
++
Incrémentation
--
Décrémentation
!
Négation
23/01/2023
66
Notation postfixée et préfixée ■ Comparer les résultats des deux notations suivantes : – Postfixée: ■ ■ ■
int i; i=3; System.out.println (i++);
– Préfixée: ■ ■ ■
int i; i=3; System.out.println (++i);
– Quels résultats obtenez vous ? Pourquoi ?
23/01/2023
67
Notation postfixée et préfixée ■ Comparer les résultats des deux notations suivantes : – Postfixée: ■
int i;
■
i=3; System.out.println (i++); è 3
■
– Préfixée:
23/01/2023
■
int i;
■ ■
i=3; System.out.println (++i); è 4
68
Opérateurs arithmétiques Opérateur
Action
+
Addition
-
Soustraction
*
Multiplication
/
Division
%
Modulo (reste de la division entière)
23/01/2023
69
Opérateurs bit à bit Opérateur
Action
&
Et Binaire
|
Ou Binaire
^
Ou exclusif
>>
Décalage vers la droite (division par 2) 26 >>1 donne 13
>1 donne 52
23/01/2023
70
Opérateurs logiques Opérateur
Action
&
Et Logique (test1 & test 2 est vrai si test1 est vrai et test2 est vrai)
|
Ou Logique
^
Ou exclusif
&&
Et logique (test1 && test 2, Idem test1 & test 2, mais test2 n’est évalué que si test1 est vrai)
||
Ou Logique
23/01/2023
71
Opérateurs d’affectation ■ Opérateur = – Il peut être combiné avec un opérateur arithmétique, logique ou binaire – Ex : x=x+2; équivaut à x+=2;
23/01/2023
72
Opérateurs de concaténation ■ Opérateur + – Utilisé également pour l’addition mais effectue une concaténation si au moins une des opérandes est du type String
23/01/2023
73
Opérateurs de comparaison Opérateur
Action
==
Egalité
!=
Inégalité
Supérieur
=
Supérieur ou égal
Les opérateurs de comparaison sont utilisés dans les structures de contrôle (if, while…) et renvoient une valeur booléen …
23/01/2023
74
Exercices IV ■ Question I – Ecrire un programme qui prend deux chaines de caractères et les compare en disant si elles sont identiques ou pas ■ Question II – Ecrire un programme qui prend en argument le nom d’un fichier et confirme ou pas qu’il est de type java (extension .java)
23/01/2023
75
Plan ■
Présentation du langage JAVA
■
Bases du langage et structures de contrôle – Variables & Types – Tableaux – Opérateurs – Structures de contrôle
■
Classes et objets
■
Exceptions
■
Applications Graphiques
■
Applets
■
Accès aux bases de données
23/01/2023
76
Les structures de contrôle ■ Permettent la modification de l’ordre d’exécution des instructions dans votre code ■ Deux types de structures sont disponibles : – Les structures de décision ■
Elles aiguillent l’exécution du code en fonction des valeurs que pourra prendre une expression de test
– Les structures de boucle ■
23/01/2023
Elles font exécuter une portion de code un certain nombre de fois – Jusqu’à ce qu’une condition soit remplie – Tant qu’une condition est remplie
77
Structure if (1/4) ■
4 syntaxes possibles
if (condition) { Instruction 1; … Instruction n; }
■ condition :doit être une expression, qui évaluée, doit fournir un boolean (true ou false) .
23/01/2023
78
Structure if (2/4) if (condition) { Instruction 1; … Instruction n; } else { Instruction 1; … Instruction n; } 23/01/2023
79
Structure if (3/4) if (condition1) { Instruction 1; … Instruction n; } else if (condition2) { Instruction 1; … Instruction n; } else { Instruction 1; … Instruction n; }
23/01/2023
80
Structure if (4/4) Opérateur conditionnel pour effectuer if … else en une seule instruction : condition ? expression 1 : expression 2; équivalent à : if (condition) expression1;
else expression2; 23/01/2023
81
Exercices structure If ■ Question I – Ecrire un programme qui prend un nombre et retourne « il est pair » ou « il est impair ». ■ Question II – Ecrire un programme qui prend un nombre et retourne « positif » ou « négatif »
23/01/2023
82
Structure switch switch (expression) { case valeur1: Instruction 1; … Instruction n; break; case valeur2: Instruction 1; … Instruction n; break; Default: Instruction 1; … Instruction n; }23/01/2023
83
Exercices structure switch ■ Question I – Ecrire un programme Mention qui prend une chaine de caractères (TB, B, P) et retourne respectivement «Très Bien », « Bien », ou « Passable ». ■ Question II – Ecrire un programme Couleur qui prend une lettre (V, J, B) et retourne respectivement «Vert», « Jaune », ou « Bleu ».
23/01/2023
84
Structure while
while (condition) { Instruction 1; … Instruction n; }
23/01/2023
85
Exercices structure while (1/2) int i=0 ; while (i