COURS JAVA 2023 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

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