Академический Документы
Профессиональный Документы
Культура Документы
langage JAVA
L.M.D
2019-2020
1
Plan
Introduction
Notions d’objet et de classe
Héritage et polymorphisme
Les collections
Les exceptions
2
Introduction
3
Approche structurelle vs approche objet
4
Constats
11
Avantage POO
12
Est-ce qu’il faut oublier le C?
NON!
Vous allez avoir le
choix parmi
plusieurs
méthodes de
programmation!
Paradigme orienté objet
Comment peut on y arriver?
17
JSE
18
Modes de compilation (1)
Java est un langage interprété, ce qui signifie que:
un programme compilé n’est pas directement exécutable
par le système d’exploitation . Il doit être interprété par
un autre programme, qu’on appelle interpréteur
Trois modes de compilation:
19
Modes de compilation : le bytecode (2)
Java 6 -2006
Java 7 –2011
améliorations du langage : switch avec des chaînes,
gestion des exceptions,
amélioration des API
Java 8 –2014
améliorations du langage : lambda expressions
(programmation fonctionnelle), collections, streams…
Java 9 – 2017
Java 10 – Mars 2018 21
Installation de JDK (1/2)
22
Installation du JDK (2/2)
javac.exe : Compilateur java.
java.exe : Interpréteur du bytecode java.
appletviewer.exe : Pour tester les applets java.
Jdb.exe : Débogueur java.
Javap.exe : désassembleur du bytecode.
Javadoc.exe : Générer la documentation de vos programmes java.
Javah.exe : Permet de lier des programmes Java avec des méthodes
natives, écrites dans un autre langage et dépendant du système.
jar.exe : Permet de compresser les classes Java ainsi que tous les
fichiers nécessaires à l'exécution d'un programme (graphiques, sons,
etc.). Il permet en particulier d'optimiser le chargement des applets sur
Internet.
jarsigner.exe : Un utilitaire permettant de signer les fichiers archives
produits par jar.exe.
23
Configuration de l’environnement (1/2)
2
3
24
Configuration de l’environnement (2/2)
ClassPath =C:\Program
Files (x86)\Java\jdk1.7.0\lib\tools.jar
25
Outils de développement
26
Identificateurs
Un identificateur JAVA peut contenir:
[a..z, A..Z, $, _]{a..z, A..Z, $, _, 0..9, Unicode}
Les noms de classes commencent par une
majuscule : Etudiant
Les mots contenus dans un identificateur
commencent par une miniscule: ageEtudiant au lieu
de mettre âge étudiant
Les constantes sont en majuscules et les mots sont
séparés par le caractère souligné « _ » :
UNE_CONSTANTE
27
Concernant le fichier source JAVA
Dans un fichier source, il faut respecter les contraintes
suivantes :
un fichier source possède l'extension .java
un fichier source peut contenir plusieurs classes mais une
seule doit être publique
si un fichier contient une classe publique, celle-ci doit
porter le même nom que le fichier.
la classe contenant la méthode main doit être publique,
afin que la machine virtuelle y ait accès
une classe non publique reste accessible à toutes les
classes du même package.
28
Commentaires
29
Types de données: types primitifs (1/2)
Primitive Valeurs Taille
char 0 à 65 535 16 bits
byte -128 à +127 8 bits
short -32 768 à +32 767 16 bits
int -2 147 483 648 à
+ 2 147 483 647 32 bits
long 64 bits
float de ± 1.4E-45 à ± 3.40282347E38 32 bits
double 64 bits
boolean true ou false 1 bit
void - 0 bit 30
Types primitifs (2/2)
31
Casting des primitifs (1/4)
32
33
Casting de primitifs (2/4)
34
Casting de primitifs
35
Casting de primitifs (3/4)
36
Casting des primitifs (4/4)
37
Les wearpers de primitifs(1/3)
38
Les wearpers de primitifs (2/3)
Classe
Primitive
Character char
Byte byte
Short short
Integer int
Long long
Float float
Double double
Boolean boolean
Void -
BigInteger - -
BigDecimal -
39
Utilisation des primitives et wearpers
Exemple:
double v1=5.5; // v1 est une primitive
Double v2=new Double(5.6); // v2 est un objet
long a=5; // a est une primitive
Long b=new Long(5); // b est un objet
Long c= 5L; // c est un objet
System.out.println("a="+a);
System.out.println("b="+b.longValue());
System.out.println("c="+c.byteValue());
System.out.println("V1="+v1);
System.out.println("V2="+v2.intValue());
Résultat:
a=5
b=5
c=5
V1=5.5
V2=5
40
Wearpers de primitifs (3/3)
41
Opérateurs
Arithmétiques
+ -* /
% (modulo)
++ --(pré ou post décrémentation)
Logiques
&& (et) ||(ou) !(négation)
Relationnels
== != < > <= >=
Affectations
= += -= *= … 42
Structures de contrôle conditionnelle (1/2)
L'instruction conditionnelle if
if (expression) instruction;
ou :
if (expression) {
instruction1;
instruction2;
}
L'instruction conditionnelle else
if (expression) {
instruction1;
}
else {
instruction2;
} 43
Structures de contrôle conditionnelle (2/2)
Les instructions conditionnelles imbriquées
if (expression1) {
bloc1;
}
else if (expression2) {
bloc2;
}
else if (expression3) {
bloc3;
}
else {
bloc5; }
44
Structure de contrôle Switch (1/2)
switch( variable) {
case valeurN: instrN;break;
default: instr;break;
}
Exemple:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.print("Donner un nombre:");
Scanner clavier=new Scanner(System.in);
int nb=clavier.nextInt();
switch(nb){
case 1 : System.out.println("Lundi");break;
45
case 2 : System.out.println("Mardi");break;}}}
Structure de contrôle Switch (2/2)
48
Exercice 1
49
Correction
50
Exercice 2
51
Notions d’objet et de classes
Objet
Classe
Attribut
Méthode
52
Objet
une Voiture
un Compte
Attributs (état):
couleur = bleue Attributs :
poids = 979 kg débit
puissance = 12 CV crédit
capacité carburant = 50 l Opérations :
conducteur = Dupont déposer (somme)
vitesse instantanée = 50 km/h retirer (somme)
Opérations : avoirSolde ()
démarrer ()
déplacer ()
mettreEssence ()
54
Classe
56
Classe : Déclaration des attributs
type nomAttribut; ou
type nomAttribut = expressionInitialisation;
Import java.awt.color;
class Point {
Type double x = 0;
primitif
double y = 0;
Type Color c;
objet
...
} 57
Classe : déclaration d’une méthode
Signature d’une méthode:
<typeRetour>nomMethode(<liste
de paramètres>) {<corps de la méthode>}
float Calculer(float prix,int quantité)
60
Classe: visibilité des classes
62
Exemple (2)
63
Exemple (4)
64
Exemple (5) : contrôler l’accès aux
données
65
Exemple
L’exécution affichera :
67
Exemple
Quand le concepteur de la classe n’a pas spécifié
de mécanisme d’instanciation, Java en fournit un
par défaut, appelé constructeur par défaut.
Le constructeur par défaut initialise chaque
variable d’instance avec une valeur par défaut :null
Règles de gestion :
Une personne a toujours un nom. Ce nom ne peut pas
changer. C'est une chaîne de caractères, dans laquelle
les lettres sont en majuscules.
Une personne est capable de s'identifier en affichant les
informations qui la caractérisent.
68
Exemple : Définir un constructeur
69
Exemple : Définir constructeur
70
Exemple : Ajouter d’autres règles
71
Exemple : Ajouter d’autres règles
72
Exemple : les accesseurs
Comment changer de société ?
Aucun moyen d’associer une société à une personne
la variable d’instance sociéte est privée: il faut donc accéder via
une méthode: String taSocieté()…
73
Exemple:
74
Création des objets: la notion de
constructeur
75
Création d’un objet : la notion du
constructeur
On utilise la commande new suivie du
constructeur de la classe.
La commande new Crée un objet dans
l’espace mémoire et retourne l’adresse
mémoire de celui-ci
Cette adresse mémoire devrait être affectée à
une variable qui représente l’identité de
l’objet.
Cette référence est appelée handle.
76
Bilan
77
Notion d’envoi de message
pour "demander" à un objet d'effectuer une
opération , il faut lui envoyer un message
Un message est composé de trois parties
Une référence désigne l'objet à qui le message est
envoyé
Le nom de la méthode à exécuter
Les paramètres de la méthode
Exemple: il s’agit de demande à l’objet personne
« p » de réaliser les opérations suivantes:
p.taSociete()
p.vaTaSociete(« FST ») 78
Sécurité
int GetMois()
{
return Mois;
}
Accesseur en écriture
84
Notion d’accesseurs
public class Application {
public static void main(String[] args)
{
Personne p=new Personne();
p.setNom("Meunier");
System.out.println(p.getNom());
}
}
85
Référence et égalité des objets
86
Notion avancée: Overloading (surcharge)
Appliquée aux constructeurs et méthodes
définir des méthodes ou constructeurs possédant
le même nom mais dont les arguments diffèrent
87
Notions avancées: Modificateur « Static »
89
Notions avancées: Modificateur « Static »
En conclusion:
L’accès à une variable de classe dans le corps d’une
méthode : NomClasse.variable (ne pas mettre
(this.variable)
L’appel d’une méthode statique : NomCLasse.méthode
(ne pas mettre objet.méthode)
à l’intérieur du corps d’une méthode statique il n’est
possible d’accéder qu’aux membres statiques de 90 la
classe
Notions avancées: Modificateur « Static »
92
Signification de « system.out.println() »
93
Quelques mots sur la méthode main()
94
Exercice d’application
On souhaite créer une application qui permet de manipuler des segments.
Un segment est défini par la valeur de ses deux extrémités extr1 et extr2.
Pour créer un segment, il faut préciser les valeurs de extr1 et extr2.
Les opérations que l’on souhaite exécuter sur le segment sont :
ordonne() : méthode qui permet d’ordonner extr1 et extr2 si extr1 est supérieur à
extr2
getLongueur() : méthode qui retourne la longueur du segment.
appartient(int x) : retourne si x appartient au segment ou non.
toString() : retourne une chaîne de caractères de type SEGMENT[extr1,extr2]
Faire une représentation UML de la classe Segment.
Implémenter en java la classe Segment
Créer une application TestSegment qui permet de :
Créer objet de la classe Segment avec les valeurs extr1=24 et extr2=12.
Afficher l’état de cet objet en utilisant la méthode toString().
Afficher la longueur de ce segment.
Afficher si le point x=15, appartient à ce segment.
Changer les valeurs des deux extrémités de ce segment. 95
Afficher à nouveau la longueur du segment.