Chapitre 1
Pensez Objets avec Java
Dr Asmaa BENGUEDDACH
1
Echange sur la plate-forme TE (Moodle)
2
Infos Utiles :
• Unité d’enseignement méthodologique : UEM
• Matière : Programmation Orientée Objet
• Crédits : 4
• Coefficient : 2
• Les devoirs seront remis sur TE
• Suivre votre progression sur TE
Objectifs du Cours
● Distinguer entre la programmation procédurale et Objets
● Développer la pensée Objet « Comment penser objet ? »
● Distinguer entre les notions de classe et d’objet
● Identifier les caractéristiques d’une classe : les attributs d’une classe
● Identifier les opérations sur les objets d’une classe : les méthodes d’une classe
● Coder le principe d’encapsulation en définissant les attributs et les méthodes d’une classe
● Définir le constructeur par défaut d’une classe
● Définir plusieurs constructeurs pour une classe
● Distinguer entre les concepts d’encapsulation et d’abstraction en java
● Coder le concept d’abstraction en définissant les méthodes setters et getters pour une classe
3
Preparing the Java Environment
● Java –version Download JDK 8
● Intellij Download 2017
● to Update
4
Pré-Requis en Java:
● Programmation Java et structures de contrôle
5
6
Assignment:
7
Install the right Environment to develop with JAVA
8
- Surface -> S
- S = ?
- S = a x b = 4 x 2 = 8
Rectangle
a = 4
b=2
Programmation Procédurale … Limites
Programmation Procédurale … Limites
class Geometrie {
public static void main(String[] args) {
double a = 4.0;
double b = 2.0;
System.out.println("Surface du rectangle :
"+ surface(a, b));
}
static double surface(double a, double b){
return (a * b);
}}
• Vos Critiques !!!
9
9. Structured Programming vs. Object
Oriented Programming
class Geometrie {
public static void main(String[] args) {
double a = 4.0;
double b = 2.0;
System.out.println("Surface du rectangle :
"+ surface(a, b));
}
static double surface(double a, double b){
return (a * b);
}
}
• Vos Critiques !!!
1. Noms de variables non significatifs a, b -> largeur
et longueur
2. Seul le message indique le sens du programme
3. Code Non réutilisable exemple si je veux calculer la
surface de deux rectangles ? Mise à jour difficile
4. Centré calculs
10
9. Structured Programming vs. Object
Oriented Programming
11
class Geometrie {
public static void main(String[] args) {
double a = 4.0;
double b = 2.0;
System.out.println("Surface du rectangle :
"+ surface(a, b));
}
static double surface(double a, double b){
return (a * b);
}
}
• Vos Critiques !!!
1. Noms de variables non significatifs a, b -> largeur
et longueur
2. Seul le message indique le sens du programme
3. Code Non réutilisable exemple si je veux calculer la
surface de deux rectangles ? Mise à jour difficile
4. Centré calculs
Programmation Procédurale … Limites
Dr Asmaa BENGUEDDACH 12
C’est quoi un Rectangle ?
Rectangle
Dr Asmaa BENGUEDDACH 13
Définition — Un rectangle est un quadrilatère qui possède
quatre angles droits.
Avant de parler de calculs (méthodes) géométrique sur
un rectangle on parle de ses propriétés géométriques
qui le définissent.
Dr Asmaa BENGUEDDACH 14Dr Asmaa BENGUEDDACH 14
Définition — Un rectangle est un quadrilatère qui possède
quatre angles droits.
Ensuite compléter sa définition en le reliant aux autres
objets du même domaine.
1. Définir le concept ou l’Objet dans son domaine «Formes
Géométriques » tel que nous le percevons «propriétés et
méthodes ».
2. Compléter sa définition en le reliant aux autres objets du même
domaine (relation d’héritage entre l’objet Carré et Rectangle)
15
16
17
18
19
20
21
22
23
24
• Informations biographiques
• Sexe Femme
• Yeux Marron[1]
• Cheveux Bruns
• Naissance 19 septembre 1979
• Sang Née-Moldue
• Baguette Bois de vigne, ventricule de dragon,
27,30 cm
• ……
Hermione Granger
25
Gryffondor
Caractéristiques
• Courage
• Hardiesse
• Force
• Bravoure
• Détermination
26
Vous rejoindrez les courageux,
Les plus hardis et les plus forts
Sont rassemblés en ce haut lieu.
— Extrait d'une chanson du Choixpeau magique
Exercice
● Ecrire un programme choixpeau ( film harry potter) qui affecte un élève dans une des maisons :
1. Poufsouffle
2. Gryffondor
3. Serdaigle
4. Serpentard
27
28
http://www.sitesbay.com/java-program/java-encapsulation-program-in-java
29
class Customer
{
int account_no;
float balance_Amt;
String name;
int age;
String address;
void balance_inquiry()
{
/* to perform balance inquiry only account number
is required that means remaining properties
are hidden for balance inquiry method */
}
void fund_Transfer()
{
/* To transfer the fund account number and
balance is required and remaining properties
are hidden for fund transfer method */
}
30
Abstraction
Abstraction montrer que les choses
importantes à l'utilisateur et cache les
détails internes.
Note L'abstraction de données peut être
utilisée pour assurer la sécurité des
données contre les méthodes non
autorisées.
class Employee
{
private String name;
public String getName()
{
return name;
}
public void setName(String name){
this.name=name;
}
}
class Demo {
public static void main(String[] args)
{
Employee e=new Employee();
e.setName(« BenMohammed");
System.out.println(e.getName());
} }
31
Encapsulation
Encapsulation est le concept qui consiste
à combiner les données et les fonctions
en une seule unité.
Notion d’Interface
32
Programmeur
utilisateur
Programmeur
concepteur/développeur
Interface
Définition d’un nouveau type
(classe)
Utilisation du type
Dr Asmaa BENGUEDDACH 33
Utilisateur/conducteur
Abstraction -Exemple de Voiture
Interface
Dr Asmaa BENGUEDDACH 34
Ingénieur automobile
Interface - Exemple de Voiture
Schéma de Conception Rectangle
35
Objet
attributs méthodes
Interface
(public)
Détails d’implémentation
(private)
surface
getLongueur
getLargeur
setHauteur
setLongueur
largeur
hauteur
Les constructeurs
Dr A. BENGUEDDACH
36
37
Rappel
// définition de la classe
class Rectangle {
// déclaration des attributs
private double hauteur;
private double largeur;
// définition des méthodes
public double surface(){
return hauteur * largeur; }
public double getHauteur() {
return hauteur; }
public double getLargeur() {
return largeur; }
public void setHauteur(double h){
hauteur = h; }
public setLargeur(double l){
largeur = l; }
}
Rappel
38
39
Rectangle(double hauteur, double largeur){
this.hauteur = hauteur;
this.largeur = largeur;
}
Un exemple de constructeur
Combien de constructeurs ?
Possibles ?
40
// Le constructeur par defaut
Rectangle() {
this.hauteur = 1.0; this.largeur = 2.0; }
// 2ème constructeur
Rectangle(double c) {
this.hauteur = c; this.largeur = 2.0*c; }
// 3ème constructeur
Rectangle(double hauteur, double largeur) {
this.hauteur = h; this.largeur = l; }
41
Autant de constructeurs que de variables
de classe
Affectation entre Objets
Rectangle r1 = new Rectangle(12.3, 24.5);
Rectangle r2 = r1;
42
Affectation entre Objets
Rectangle r1 = new Rectangle(12.3, 24.5);
Rectangle r2 = r1;
43
Constructeur de copie
Rectangle r1 = new Rectangle(12.3, 24.5);
Rectangle r2 = new Rectangle (r1);
44
class Rectangle {
private double hauteur;
private double largeur;
public Rectangle( Rectangle autre){
this.hauteur = autre.hauteur;
this.largeur = autre.largeur;}
// suite ...}
Comparaison d’Objets
//par exemple dans la méthode main()
Rectangle r1 = new Rectangle(4.0, 5.0);
Rectangle r2 = new Rectangle(4.0, 5.0);
if (r1 == r2) {
System.out.println("Rectangles identiques");
}
else {
System.out.println("Rectangles non identiques");
}
45
Comparaison d’Objets//par exemple dans la méthode main()
Rectangle r1 = new Rectangle(4.0, 5.0);
Rectangle r2 = new Rectangle(4.0, 5.0);
if (r1 == r2) {
System.out.println("Rectangles identiques");
}
else {
System.out.println("Rectangles non identiques");
} //error
class Rectangle
{
private double hauteur;
private double largeur;
//...
public boolean equals(Rectangle autre)
{
if (autre == null) {
return false;
} else {
return ( hauteur == autre.hauteur
&& largeur == autre.largeur);}}
46
Comparaison d’Objets
//par exemple dans la méthode main()
Rectangle r1 = new Rectangle(4.0, 5.0);
Rectangle r2 = new Rectangle(4.0, 5.0);
if (r1.equals(r2)) {
System.out.println("Rectangles identiques");
} else{
System.out.println("Rectangles non identiques");
}
47
Rappel
48
Exemple constructeur de Copie, Comment
ça fonctionne ?
49
Affichage d’Objets
50
Rectangle rect = new Rectangle(10.0, 20.0);
System.out.println(rect);
Affichage d’Objets
51
Rectangle rect = new Rectangle(10.0, 20.0);
System.out.println(rect);
Affichage d’Objets
class Rectangle{
private double hauteur;
private double largeur;
//...
public String toString(){
return "Rectangle " + hauteur + " x " + largeur;}
}
52
Rectangle rect = new Rectangle(10.0, 20.0);
System.out.println(rect);
53
54
55
Logiciel de caisse pour Librairie
● Vente des articles et encaissement des clients ;
● Gestion de l’inventaire, du stock et des données ;
● Achat auprès des fournisseurs ;
● Suivi de la fidélité client ;
● Historique des achats, ventes, et commandes ;
● Le logiciel d’encaissement s’adaptera à tous les besoins d’un libraire
professionnel.
56
57
58
Un client veut ce livre, ne se rappelant pas du titre, écrire un programme
qui permet de faire une recherche de livre par auteur/catégorie
Exercice

Pensez objets avec java

  • 1.
    Chapitre 1 Pensez Objetsavec Java Dr Asmaa BENGUEDDACH 1
  • 2.
    Echange sur laplate-forme TE (Moodle) 2 Infos Utiles : • Unité d’enseignement méthodologique : UEM • Matière : Programmation Orientée Objet • Crédits : 4 • Coefficient : 2 • Les devoirs seront remis sur TE • Suivre votre progression sur TE
  • 3.
    Objectifs du Cours ●Distinguer entre la programmation procédurale et Objets ● Développer la pensée Objet « Comment penser objet ? » ● Distinguer entre les notions de classe et d’objet ● Identifier les caractéristiques d’une classe : les attributs d’une classe ● Identifier les opérations sur les objets d’une classe : les méthodes d’une classe ● Coder le principe d’encapsulation en définissant les attributs et les méthodes d’une classe ● Définir le constructeur par défaut d’une classe ● Définir plusieurs constructeurs pour une classe ● Distinguer entre les concepts d’encapsulation et d’abstraction en java ● Coder le concept d’abstraction en définissant les méthodes setters et getters pour une classe 3
  • 4.
    Preparing the JavaEnvironment ● Java –version Download JDK 8 ● Intellij Download 2017 ● to Update 4
  • 5.
    Pré-Requis en Java: ●Programmation Java et structures de contrôle 5
  • 6.
  • 7.
    Assignment: 7 Install the rightEnvironment to develop with JAVA
  • 8.
    8 - Surface ->S - S = ? - S = a x b = 4 x 2 = 8 Rectangle a = 4 b=2 Programmation Procédurale … Limites
  • 9.
    Programmation Procédurale …Limites class Geometrie { public static void main(String[] args) { double a = 4.0; double b = 2.0; System.out.println("Surface du rectangle : "+ surface(a, b)); } static double surface(double a, double b){ return (a * b); }} • Vos Critiques !!! 9
  • 10.
    9. Structured Programmingvs. Object Oriented Programming class Geometrie { public static void main(String[] args) { double a = 4.0; double b = 2.0; System.out.println("Surface du rectangle : "+ surface(a, b)); } static double surface(double a, double b){ return (a * b); } } • Vos Critiques !!! 1. Noms de variables non significatifs a, b -> largeur et longueur 2. Seul le message indique le sens du programme 3. Code Non réutilisable exemple si je veux calculer la surface de deux rectangles ? Mise à jour difficile 4. Centré calculs 10
  • 11.
    9. Structured Programmingvs. Object Oriented Programming 11 class Geometrie { public static void main(String[] args) { double a = 4.0; double b = 2.0; System.out.println("Surface du rectangle : "+ surface(a, b)); } static double surface(double a, double b){ return (a * b); } } • Vos Critiques !!! 1. Noms de variables non significatifs a, b -> largeur et longueur 2. Seul le message indique le sens du programme 3. Code Non réutilisable exemple si je veux calculer la surface de deux rectangles ? Mise à jour difficile 4. Centré calculs Programmation Procédurale … Limites
  • 12.
    Dr Asmaa BENGUEDDACH12 C’est quoi un Rectangle ? Rectangle
  • 13.
    Dr Asmaa BENGUEDDACH13 Définition — Un rectangle est un quadrilatère qui possède quatre angles droits. Avant de parler de calculs (méthodes) géométrique sur un rectangle on parle de ses propriétés géométriques qui le définissent.
  • 14.
    Dr Asmaa BENGUEDDACH14Dr Asmaa BENGUEDDACH 14 Définition — Un rectangle est un quadrilatère qui possède quatre angles droits. Ensuite compléter sa définition en le reliant aux autres objets du même domaine.
  • 15.
    1. Définir leconcept ou l’Objet dans son domaine «Formes Géométriques » tel que nous le percevons «propriétés et méthodes ». 2. Compléter sa définition en le reliant aux autres objets du même domaine (relation d’héritage entre l’objet Carré et Rectangle) 15
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
    24 • Informations biographiques •Sexe Femme • Yeux Marron[1] • Cheveux Bruns • Naissance 19 septembre 1979 • Sang Née-Moldue • Baguette Bois de vigne, ventricule de dragon, 27,30 cm • …… Hermione Granger
  • 25.
  • 26.
    26 Vous rejoindrez lescourageux, Les plus hardis et les plus forts Sont rassemblés en ce haut lieu. — Extrait d'une chanson du Choixpeau magique
  • 27.
    Exercice ● Ecrire unprogramme choixpeau ( film harry potter) qui affecte un élève dans une des maisons : 1. Poufsouffle 2. Gryffondor 3. Serdaigle 4. Serpentard 27
  • 28.
  • 29.
  • 30.
    class Customer { int account_no; floatbalance_Amt; String name; int age; String address; void balance_inquiry() { /* to perform balance inquiry only account number is required that means remaining properties are hidden for balance inquiry method */ } void fund_Transfer() { /* To transfer the fund account number and balance is required and remaining properties are hidden for fund transfer method */ } 30 Abstraction Abstraction montrer que les choses importantes à l'utilisateur et cache les détails internes. Note L'abstraction de données peut être utilisée pour assurer la sécurité des données contre les méthodes non autorisées.
  • 31.
    class Employee { private Stringname; public String getName() { return name; } public void setName(String name){ this.name=name; } } class Demo { public static void main(String[] args) { Employee e=new Employee(); e.setName(« BenMohammed"); System.out.println(e.getName()); } } 31 Encapsulation Encapsulation est le concept qui consiste à combiner les données et les fonctions en une seule unité.
  • 32.
  • 33.
    Dr Asmaa BENGUEDDACH33 Utilisateur/conducteur Abstraction -Exemple de Voiture Interface
  • 34.
    Dr Asmaa BENGUEDDACH34 Ingénieur automobile Interface - Exemple de Voiture
  • 35.
    Schéma de ConceptionRectangle 35 Objet attributs méthodes Interface (public) Détails d’implémentation (private) surface getLongueur getLargeur setHauteur setLongueur largeur hauteur
  • 36.
  • 37.
    37 Rappel // définition dela classe class Rectangle { // déclaration des attributs private double hauteur; private double largeur; // définition des méthodes public double surface(){ return hauteur * largeur; } public double getHauteur() { return hauteur; } public double getLargeur() { return largeur; } public void setHauteur(double h){ hauteur = h; } public setLargeur(double l){ largeur = l; } }
  • 38.
  • 39.
    39 Rectangle(double hauteur, doublelargeur){ this.hauteur = hauteur; this.largeur = largeur; } Un exemple de constructeur
  • 40.
    Combien de constructeurs? Possibles ? 40
  • 41.
    // Le constructeurpar defaut Rectangle() { this.hauteur = 1.0; this.largeur = 2.0; } // 2ème constructeur Rectangle(double c) { this.hauteur = c; this.largeur = 2.0*c; } // 3ème constructeur Rectangle(double hauteur, double largeur) { this.hauteur = h; this.largeur = l; } 41 Autant de constructeurs que de variables de classe
  • 42.
    Affectation entre Objets Rectangler1 = new Rectangle(12.3, 24.5); Rectangle r2 = r1; 42
  • 43.
    Affectation entre Objets Rectangler1 = new Rectangle(12.3, 24.5); Rectangle r2 = r1; 43
  • 44.
    Constructeur de copie Rectangler1 = new Rectangle(12.3, 24.5); Rectangle r2 = new Rectangle (r1); 44 class Rectangle { private double hauteur; private double largeur; public Rectangle( Rectangle autre){ this.hauteur = autre.hauteur; this.largeur = autre.largeur;} // suite ...}
  • 45.
    Comparaison d’Objets //par exempledans la méthode main() Rectangle r1 = new Rectangle(4.0, 5.0); Rectangle r2 = new Rectangle(4.0, 5.0); if (r1 == r2) { System.out.println("Rectangles identiques"); } else { System.out.println("Rectangles non identiques"); } 45
  • 46.
    Comparaison d’Objets//par exempledans la méthode main() Rectangle r1 = new Rectangle(4.0, 5.0); Rectangle r2 = new Rectangle(4.0, 5.0); if (r1 == r2) { System.out.println("Rectangles identiques"); } else { System.out.println("Rectangles non identiques"); } //error class Rectangle { private double hauteur; private double largeur; //... public boolean equals(Rectangle autre) { if (autre == null) { return false; } else { return ( hauteur == autre.hauteur && largeur == autre.largeur);}} 46
  • 47.
    Comparaison d’Objets //par exempledans la méthode main() Rectangle r1 = new Rectangle(4.0, 5.0); Rectangle r2 = new Rectangle(4.0, 5.0); if (r1.equals(r2)) { System.out.println("Rectangles identiques"); } else{ System.out.println("Rectangles non identiques"); } 47
  • 48.
  • 49.
    Exemple constructeur deCopie, Comment ça fonctionne ? 49
  • 50.
    Affichage d’Objets 50 Rectangle rect= new Rectangle(10.0, 20.0); System.out.println(rect);
  • 51.
    Affichage d’Objets 51 Rectangle rect= new Rectangle(10.0, 20.0); System.out.println(rect);
  • 52.
    Affichage d’Objets class Rectangle{ privatedouble hauteur; private double largeur; //... public String toString(){ return "Rectangle " + hauteur + " x " + largeur;} } 52 Rectangle rect = new Rectangle(10.0, 20.0); System.out.println(rect);
  • 53.
  • 54.
  • 55.
  • 56.
    Logiciel de caissepour Librairie ● Vente des articles et encaissement des clients ; ● Gestion de l’inventaire, du stock et des données ; ● Achat auprès des fournisseurs ; ● Suivi de la fidélité client ; ● Historique des achats, ventes, et commandes ; ● Le logiciel d’encaissement s’adaptera à tous les besoins d’un libraire professionnel. 56
  • 57.
  • 58.
    58 Un client veutce livre, ne se rappelant pas du titre, écrire un programme qui permet de faire une recherche de livre par auteur/catégorie Exercice