Académique Documents
Professionnel Documents
Culture Documents
22/09/23 06:47 PM 1
Le langage Java
Langage de programmation
Développé par SUN microsystems en 1995
Initialement orienté web
Syntaxe proche du langage C
C’est un langage interprété et compilé
C’est un langage orienté-objet
22/09/23 06:47 PM 2
Rappel sur Programmation
Orientée Objet (POO)
22/09/23 06:47 PM 3
Programmation orientée-objet
22/09/23 06:47 PM 4
Exemple: gestion d’une bibliothèque
Avec une programmation procédurale (ex:
C), on cherchera à écrire des fonctions pour :
22/09/23 06:47 PM 5
Exemple: gestion d’une bibliothèque
Avec un langage de programmation orienté-objet,
on définit le contenu des classes d’objets manipulés
:
String getTitre() {
return titre;
}
22/09/23 06:47 PM 8
Droits d'accès
22/09/23 06:47 PM 9
Exemple: droits d'accès
public class Livre {
private String titre; public class BonExemple {{
public class MauvaisExemple
private int numero;
Lecteur emprunteur; public String getDescription(Livre
public String getDescription(Livre l) { l)
{
String str = l.titre;
public String getTitre() { String str = l.getTitre();
if (l.estEmprunte())
return titre; if (l.estEmprunte())
str = str + "
} emprunte"; str = str + "
emprunte";
else
public boolean estEmprunte() { else
str = str + "libre;
if (emprunteur == null) str = str + "
libre"; return str;
return false; }
else return true; return str;
} }
}
} }
22/09/23 06:47 PM 10
Objet
22/09/23 06:47 PM 11
Constructeur
22/09/23 06:47 PM 12
Constructeur Livre
class Livre {
…
Livre() { …
titre = null; Livre monLivre;
emprunteur = null; monLivre = new Livre();
numero = 0; …
} Livre unLivre;
unLivre = new Livre("Java",123);
Livre(String t, int n) {
titre = t; …
numero = n;
emprunteur = null;
}
…
}
22/09/23 06:47 PM 13
Méthode main
22/09/23 06:47 PM 14
Syntaxe du langage
22/09/23 06:47 PM 15
Types primitifs
Même types
Plus deux nouveaux types :
qu'en C: • boolean
• int • byte
• float
Plus la classe :
• double • String
• short
• long
Déclaration :
• int monEntier;
• char • String chaine;
• void • boolean test;
22/09/23 06:47 PM 16
Structures de contrôle
Instruction conditionnelle
Exemple :
if ( emprunteur.getStatut() = = "employe") {
unLivre.setDateRetour(30);
} else {
unLivre.setDateRetour(15);
}
22/09/23 06:47 PM 17
Structures de contrôle
Instruction itérative
Exemple :
22/09/23 06:47 PM 18
Structures de contrôle
Instruction itérative
Exemple :
22/09/23 06:47 PM 19
Structures de contrôle
22/09/23 06:47 PM 20
Environnement Java
22/09/23 06:47 PM 21
Packages
Un package regroupe des classes et des sous-
packages sous un thème précis. Exemple :
Le package java contient des classes de base du
langage.
Le package java.net contient des classe pour la
programmation réseau.
22/09/23 06:47 PM 23
Import
import java.util.*;
/* import java.util.Vector; marche aussi */
22/09/23 06:47 PM 24
Langage interprété ?
Code source
Compilateur
Bytecode
Interpréteur
Code machine
Système d'exploitation
22/09/23 06:47 PM 25
Compilation
Exemple :
javac –d C:\MesProgs\classes -classpath C:\MesProgs\src Livre.java
22/09/23 06:47 PM 26
Exécution
Exemple :
java -classpath C:\MesProgs\classes exemples.bibliotheque.Livre
22/09/23 06:47 PM 27
Documentation
22/09/23 06:47 PM 28
Tags de documentation
22/09/23 06:47 PM 29
Application Programming Interface
(API)
22/09/23 06:47 PM 30
Application Programming Interface
22/09/23 06:47 PM 31
Packages java, javax et org
22/09/23 06:47 PM 32
Quelques packages
22/09/23 06:47 PM 33
Classe java.lang.String
22/09/23 06:47 PM 34
Classe java.util.Vector
22/09/23 06:47 PM 35
Classe java.lang.Math
Pas de constructeur
Uniquement des méthodes et variables static:
Math.PI, Math.E
double cos(double a);
double sqrt(double a);
double pow(double a, double b);
int round(float a);
int max(int a, int b);
22/09/23 06:47 PM 36
Attributs d'instance ou de classe
Une variable ou méthode appartient à une
instance sauf si elle est static auquel cas elle
appartient à la classe.
Attribut d'instance Attribut de classe
public String getTitre() … Class Integer {…
s'appelle sur un objet static int MAX_VALUE…}
s'appelle sur une classe
Livre monLivre = newLivre();
monLivre.getTitre();
int val = Integer.MAX_VALUE;
Livre.getTitre();
22/09/23 06:47 PM 37
La relation d'héritage
22/09/23 06:47 PM 38
Introduction
Avantages :
Effectuer un même traitement sur des objets de classes
différentes;
Éviter la redondance de structure.
22/09/23 06:47 PM 39
Introduction
Lecteur Employé
String nom; String nom;
String prenom; String prenom;
String adresse; String adresse;
Statut statut;
Livre[] emprunts;
22/09/23 06:47 PM 40
Introduction
Personne
String nom;
String prenom;
String adresse;
Lecteur Employé
Statut statut;
Livre[] emprunts;
22/09/23 06:47 PM 41
Héritage des données
22/09/23 06:47 PM 43
Héritage des méthodes
22/09/23 06:47 PM 44
Surcharge de méthodes
22/09/23 06:47 PM 45
Exemple de surcharge
22/09/23 06:47 PM 46
Polymorphisme
22/09/23 06:47 PM 48
L'héritage est transitif
Date duree;
void passer(Ordre)
22/09/23 06:47 PM 49
Interfaces & classes abstraites
22/09/23 06:47 PM 50
Héritage multiple
Rectangle Losange
String description() { String description() {
return "4 angles droit"; return "4 côtés égaux";
} }
Carre
Si description() n'est pas surchargée quelle méthode doit être appelée pour les
objets de la classe Carré ?
22/09/23 06:47 PM 51
Héritage multiple
22/09/23 06:47 PM 52
Interfaces
Personne
String nom;
String adresse;
Employé Client
double salaire; Compte compte;
double getSalaire() {…} Compte getCompte() {…}
22/09/23 06:47 PM 54
Exemple d'interface
Client Personne
String nom;
Compte renvoieCompte();
String adresse;
ClientExterne Employé
Compte compte; double salaire;
Compte getCompte() {…} double getSalaire() {…}
ClientInterne
Compte compte;
Compte getCompte() {…}
22/09/23 06:47 PM 55
Exemple d'interface
22/09/23 06:47 PM 56
Niveaux d'abstraction des objets
Classe Classe
Traitements des méthodes
Classe abstraite Classe abstraite
Interface
Signatures des méthodes Classe abstraite Classe ?
abstraite
22/09/23 06:47 PM 57
Classes abstraites
22/09/23 06:47 PM 58
Exemple de classe abstraite
Salarie
double salaire;
double getSalaire() {
return salaire;
}
verserSalaire();
ClientInterne Employe
Compte compte; verserSalaire() {
Compte getCompte() {…} envoyerCheque(salaire);
verserSalaire() { }
compte.credite(salaire);
}
22/09/23 06:47 PM 59
Exemple de classe abstraite
22/09/23 06:47 PM 60
Gestion des exceptions
22/09/23 06:47 PM 61
Notion d'exception
22/09/23 06:47 PM 62
Classes d'exceptions
22/09/23 06:47 PM 63
Déclaration des exceptions possibles
22/09/23 06:47 PM 64
Émission et création d'exceptions
22/09/23 06:47 PM 65
Traitement des exceptions
22/09/23 06:47 PM 66
Propagation d'exceptions
22/09/23 06:47 PM 67
Interception d'exceptions
22/09/23 06:47 PM 68