Vous êtes sur la page 1sur 55

Chapitre II

--------------------------------

Introduction à la
programmation orientée
objet
Programmation orientée objet : POO

 Objets et classes :
Classe : définitions des attributs (variables) &
fonctions (méthodes) agissant sur ces données.
Objet : élément d’une classe (instance) avec
un état.
Méthode : Fonction qui décrit le
comportement d’un objet.
Attribut : Variable contenant une donnée
propre à l’objet.
POO : Structure d’une classe

Programme Java utilise un ensemble de classes


Les classes sont regroupées par package
Une classe regroupe un ensemble d’attributs et
de méthodes
Package

Classe
Attributs

Méthodes
POO : Classes de base

 AWT : Abstract Window Toolkit


 Réseau : Sockets (serveurs, clients), Web …
 Entrées/Sorties : JAVA.io
 SQL
Swing, SWT, …
POO : Classes de base

 AWT : Abstract Windows Toolkit


 Réseau : Sockets (serveurs, clients), Web …
 Entrées/Sorties : JAVA.io
 SQL
Swing, SWT, …
java

SQL util awt net lang

Connection Date event Button Socket String


PreparedStatement Scanner List. URL Thread
… … … … … …
POO : utilisation des packages

java

SQL util awt net lang

Connection Date event Button Socket String


PreparedStatement Scanner List. URL Thread
… … … … … …

java.util.Date dateDuJour = new java.util.Date();


System.out.println(dateDujour);
POO : utilisation des packages

java

SQL util awt net lang

Connection Date event Button Socket String


PreparedStatement Scanner List. URL Thread
… … … … … …

java.util.Date dateDuJour = new java.util.Date();


System.out.println(dateDujour);
import java.util.Date;
Date dateDuJour = new Date();
System.out.println(dateDujour);
POO : utilisation des packages

java

SQL util awt net lang

Connection Date event Button Socket String


PreparedStatement Scanner List. URL Thread
… … … … … …

java.util.Date dateDuJour = new java.util.Date();


System.out.println(dateDujour);
import java.util.*;
Date dateDuJour = new Date();
System.out.println(dateDujour);
POO : Déclaration d’une classe

 Nom de classe spécifié derrière le mot


clé class
 Corps de classe délimité par des accolades
 Dans le corps on définit les attributs et les
méthodes qui constituent la classe
Class nom_de_classe {

< corps de la classe >

}
POO : Déclaration d’une classe

 Nom de classe spécifié derrière le mot


clé class
 Corps de classe délimité par des accolades
 Dans le corps on définit les attributs et les
méthodes qui constituent la classe
Class nom_de_classe {
Déclaration des attributs
Déclaration des méthodes
}
POO : Déclaration des méthodes

Type_retour nom_fct(type1 arg1, type2 arg2,…){


Bloc_instructions;
return Valeur;
}
POO : Déclaration des méthodes

Type_retour nom_fct(type1 arg1, type2 arg2,…){


Bloc_instructions;
return Valeur;
}

 Corps d’une fonction comporte un ensemble


d’instructions
 Ces instructions sont exécuté jusqu’à trouver le
mot clé ‘return’
 Ce mot clé doit être suivie d’une variable du même
type que celui qui précède le nom de la fonction
POO : Exemple d’une classe

Classe Voiture
POO : Exemple d’une classe

Attributs
Classe Voiture Type : Chaine de caractère
Modèle : entier
Matricule : Chaine de caractère
Couleur : Chaine de caractère
Vitesse Max : flottant

Méthodes
Demarrer()
Accelerer()
Changer_couleur()
Recuperer_modele()
POO : Implémentation de classe

Classe Voiture
Attributs Voiture.java
Class voiture{
Type : Chaine de caractère String Type;
Modèle : entier int Modele;
Matricule : Chaine de caractère String Matricule;
Couleur : Chaine de caractère String Couleur;
Vitesse Max : flottant float Vitesse_max;

Méthodes /* Déclaration des méthodes */
Demarrer() …
Accelerer() }
Changer_couleur()
Recuperer_modele()
POO : Implémentation de classe

Classe Voiture
Attributs Voiture.java
Type : Chaine de caractère Class voiture{
Modèle : entier String Type;
Matricule : Chaine de caractère int Modele;
Couleur : Chaine de caractère String Matricule;
Vitesse Max : flottant String Couleur;
float Vitesse_max;
Méthodes …
/* Déclaration des méthodes */
Demarrer() void Changer_couleur(String C){
Accelerer() Couleur=C;
Changer_couleur() }
Recuperer_modele() }
POO : Exemple d’une classe

Classe Voiture Objets instanciées


Attributs
Type : Chaine de caractère
Modèle : entier
Matricule : Chaine de caractère
Couleur : Chaine de caractère
Vitesse Max : flottant

Méthodes
Demarrer()
Accelerer()
Changer_couleur()
Recuperer_modele()
POO : Instance de classe

Classe Voiture
Attributs Type :Peugeot 206
Modèle :2005
Type : Chaine de caractère
Matricule :22-1445
Modèle : entier Couleur :Bleu Type :Honda Civic
Matricule : Chaine de caractère Vitesse Max :180 Modèle :2008
Couleur : Chaine de caractère Matricule :18-5562
Vitesse Max : flottant Couleur :Gris
Vitesse Max :210
Méthodes
Demarrer()
Accelerer()
Changer_couleur()
Recuperer_modele()
POO : Instanciation d’une classe

 Utilisation du mot clé ‘new’ pour créer l’objet


 Faut définir des constructeurs dans la classe
 Il a le même nom que la classe et ne retourne
aucune valeur
 Si aucun constructeur n’est défini explicitement,
un constructeur par défaut est fourni.
POO : Exemple de constructeur

Voiture.java
Class voiture{
String Type; int Modele; String Matricule;
String Couleur; float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax;
}
voiture(String Tp, int Mdl, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Couleur=Clr;
Vitesse_max=Vmax;
}

}
POO : instanciation d’un objet

Test.java
Class Test{
Public static void main(String[] args){
Voiture x = new voiture("Peugeot206 ",2006,22-1445,Bleu,180);
Voiture x = new voiture("HondaCivic",2008,18-5562,Gris,210);
}
}
POO : instanciation d’un objet

Test.java
Class Test{
Public static void main(String[] args){
Voiture x = new voiture("Peugeot206 ",2006,22-1445,Bleu,180);
Voiture y = new voiture("HondaCivic",2008,18-5562,Gris,210);
}
}

x
Type :Peugeot 206 Type :Honda Civic
Modèle :2005
Matricule :22-1445
Modèle :2008
Matricule :18-5562
Y
Couleur :Bleu Couleur :Gris
Vitesse Max :180 Vitesse Max :210
POO : instanciation d’un objet

Test.java
Class Test{
Public static void main(String[] args){
Voiture x = new voiture("Peugeot206 ",2006,22-1445,Bleu,180);
Voiture y = new voiture("HondaCivic",2008,18-5562,Gris,210);
Voiture z = new voiture("RenaultClio",2012, rouge,185);
}
}
Type :Renault Clio
Modèle :2012
Matricule: " "
Z
Couleur :Rouge
Vitesse Max :185
POO : instanciation d’un objet

Test.java
Class Test{
Public static void main(String[] args){
Voiture x = new voiture("Peugeot206 ",2006,22-1445,Bleu,180);
Voiture y = new voiture("HondaCivic",2008,18-5562,Gris,210);
Voiture z = new voiture("RenaultClio",2012, rouge,185);
Voiture w = new Voiture();
}
}
Type :
Modèle :
Matricule:
w
Couleur :
Vitesse Max :
POO : instanciation d’un objet

Test.java
Class Test{
Public static void main(String[] args){
Voiture x = new voiture("Peugeot206 ",2006,22-1445,Bleu,180);
Voiture y = new voiture("HondaCivic",2008,18-5562,Gris,210);
Voiture z = new voiture("RenaultClio",2012, rouge,185);
Voiture w = new Voiture();
} Erreur !!!
}
Type :
Modèle :
Matricule:
w
Couleur :
Vitesse Max :
POO : Exemple de constructeur

Voiture.java
Class voiture{
String Type; int Modele; String Matricule;
String Couleur; float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax;
}
voiture(String Tp, int Mdl, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Couleur=Clr;
Vitesse_max=Vmax;
}
voiture(){ // ajouter un constructeur par défaut sans arguments
}
}
POO : instanciation d’un objet

Test.java
Class Test{
Public static void main(String[] args){
Voiture x = new voiture("Peugeot206 ",2006,22-1445,Bleu,180);
Voiture y = new voiture("HondaCivic",2008,18-5562,Gris,210);
Voiture z = new voiture("RenaultClio",2012, rouge,185);
Voiture w = new Voiture();
}
}
Type : " "
Modèle :0
Matricule: " "
w
Couleur : " "
Vitesse Max :0.0
POO : utilisation de l’opérateur this

Voiture.java
Class voiture{
String Type; int Modele; String Matricule;
String Couleur; float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax;
}
voiture(String Tp, int Mdl, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Couleur=Clr;
Vitesse_max=Vmax;
}
voiture(){
this(Arg1, Arg2, Arg3, Arg4, Arg5);
}
}
POO : utilisation de l’opérateur this

Voiture.java
Class voiture{
String Type; int Modele; String Matricule;
String Couleur; float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax;
}
voiture(String Tp, int Mdl, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Couleur=Clr;
Vitesse_max=Vmax;
}
voiture(){
this(Arg1, Arg2, Arg3, Arg4, Arg5);
}
}
POO : utilisation de l’opérateur this

Voiture.java
Class voiture{
String Type; int Modele; String Matricule;
String Couleur; float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax;
}
voiture(String Tp, int Mdl, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Couleur=Clr;
Vitesse_max=Vmax;
}
voiture(){
this(Arg1, Arg2, Arg3, Arg4);
}
}
POO : utilisation de l’opérateur this

Voiture.java
Class voiture{
String Type; int Modele; String Matricule;
String Couleur; float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
this.Type=Tp; this.Modele=Mdl; this.Matricule=Mtr;
this.Couleur=Clr; this.Vitesse_max=Vmax;
}
voiture(String Tp, int Mdl, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Couleur=Clr;
Vitesse_max=Vmax;
}
voiture(){
this(Arg1, Arg2, Arg3, Arg4);
}
}
POO : Visibilité des attributs

Paramétre_de_visibilité Nom_Variable;
POO : Visibilité des attributs

Paramétre_de_visibilité Nom_Variable;

Paramétre_de_visibilité Nom_Variable = …;
POO : Visibilité des attributs

Parametre_de_visibilité Nom_Variable;
{Parametre_de_visibilité Nom_Variable = …;
 public : l’attribut peut être utilisé par tout utilisateur de la
classe.
 private : ne peut être utilisé qu’à l’intérieur de la classe
 protected : ne peut être utilisé qu’à l’intérieur de la classe,
ou des classes dérivées.
POO : Visibilité des attributs

Voiture.java
Class voiture{
String Type; int Modele; String Matricule;
String Couleur; float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax;
}
public static void main(String [] args){
Voiture x = new voiture("Peugeot206",2006, "22-1445", "Bleu",180);
}
}
POO : Visibilité des attributs

Voiture.java
Class voiture{
String Type; int Modele; String Matricule;
String Couleur; float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax;
}
public static void main(String [] args){
Voiture x = new voiture("Peugeot206",2006, "22-1445", "Bleu",180);
System.out.println("Le type de x est"+ x.Type);
}
}
POO : Visibilité des attributs

Voiture.java
Class voiture{
public String Type; public int Modele;
public String Matricule; public String Couleur;
public float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax;
}
public static void main(String [] args){
Voiture x = new voiture("Peugeot206",2006, "22-1445", "Bleu",180);
System.out.println("Le type de x est"+ x.Type );
}
}
POO : Visibilité des attributs

Voiture.java
Class voiture{
public String Type; public int Modele;
public String Matricule; public String Couleur;
public float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax; }
}

Test.java
Class Test{
Public static void main(String[] args){
Voiture x = new voiture("Peugeot206",2006, "22-1445", "Bleu",180);
System.out.println("Le type de x est"+ x.Type );
}
}
POO : Visibilité des attributs

Voiture.java
Class voiture{
private String Type; public int Modele;
public String Matricule; public String Couleur;
public float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax; }
}

Test.java
Class Test{
Public static void main(String[] args){
Voiture x = new voiture("Peugeot206",2006, "22-1445", "Bleu",180);
System.out.println("Le type de x est"+ x.Type );
} Erreur !!!
}
POO : Accesseurs et Modificateurs

 Étant un attribut de type type1 :


Private type1 Nom_Variable;
POO : Accesseurs et Modificateurs

 Étant un attribut de type type1 :


Private type1 Nom_Variable;
 Définir accesseur (Getter) pour cet attribut private
Public type1 nom_accesseur(){
return Nom_Variable;
}
POO : Accesseurs et Modificateurs

Voiture.java
Class voiture{
private String Type; private int Modele;
private String Matricule; private String Couleur;
private float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax; }
public String getType() { return Type; }
}

Class Test{
Public static void main(String[] args){
Voiture x = new voiture("Peugeot206",2006, "22-1445", "Bleu",180);
System.out.println("Le type de x est"+ x.getType() );
}
}
POO : Accesseurs et Modificateurs

Voiture.java
Class voiture{
private String Type; public int Modele;
public String Matricule; public String Couleur;
public float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax; }
}

Test.java
Class Test{
Public static void main(String[] args){
Voiture x = new voiture("Peugeot206",2006, "22-1445", "Bleu",180);
x.Type = "Peugeot309";
} Erreur !!!
}
POO : Accesseurs et Modificateurs

 Étant un attribut de type type1 :


Private type1 Nom_Variable;
 Définir accesseur (Getter) pour cet attribut private:
Public type1 nom_accesseur(){
return Nom_Variable;
}
 Définir modificateur (Setter) pour cet modifier l’attribut
private:
Public void nom_modificateur(type1 arg1){
Nom_Variable=arg1;
}
POO : Accesseurs et Modificateurs

Voiture.java
Class voiture{
private String Type; private int Modele;
private String Matricule; private String Couleur;
private float Vitesse_max;
voiture(String Tp, int Mdl, String Mtr, String Clr, float Vmax){
Type=Tp; Modele=Mdl; Matricule=Mtr;
Couleur=Clr; Vitesse_max=Vmax; }
public String setType(String newType) { Type=newType; }
}
Test.java
Class Test{
Public static void main(String[] args){
Voiture x = new voiture("Peugeot206",2006, "22-1445", "Bleu",180);
x.setType("Peugeot309");
}
}
POO : Surcharge de méthode

 Définir la même fonction avec des prototype


différents en changeant soit le type ou liste des
arguments
POO : Surcharge de méthode

 Définir la même fonction avec des prototype


différents en changeant soit le type ou liste des
arguments
Type_retour1 nom_fct(type1 arg1, type2 arg2){ … }

Type_retour2 nom_fct(type1 arg1, type3 arg3){ … }

Type_retour2 nom_fct(type1 arg1, type2 arg2,type3 arg3){ … }


POO : Surcharge de méthode

 Définir la même fonction avec des prototype


différents en changeant soit le type ou liste des
arguments
Type_retour1 nom_fct(type1 arg1, type2 arg2){ … }

Type_retour2 nom_fct(type1 arg1, type3 arg3){ … }

Type_retour2 nom_fct(type1 arg1, type2 arg2,type3 arg3){ … }

 Appel de fonction : déterminer quelle version


utiliser en fonction de la signature
POO : Surcharge de méthode

 Définir la même fonction avec des prototype


différents en changeant soit le type ou liste des
arguments
 Exemple : fonction qui permettra d’afficher les
éléments d’un tableau d’entiers ou bien de chaines
de caractères.
POO : Surcharge de méthode

 Définir la même fonction avec des prototype


différents en changeant soit le type ou liste des
arguments
void parcourirTableau(String[] tab,int a){
for(int i=0;i<a;i++)
System.out.println(tab[i]);
}
void parcourirTableau(int[] tab,int a){
for(int i=0;i<a;i++)
System.out.println(tab[i]);
}
POO : Méthodes statiques

 Précédé par le mot ‘static’


 ne peut accéder qu’aux attributs de la classe
déclaré comme étant statique.
 L’appel de ce genre de méthode se fait en utilisant
la classe non plus un objet instancié.
POO : Méthodes statiques

 Précédé par le mot ‘static’


 ne peut accéder qu’aux attributs de la classe
déclaré comme étant statique.
 L’appel de ce genre de méthode se fait en utilisant
la classe non plus un objet instancié.
Static type_retour nom_fct(type1 arg1, …) { … }
POO : Méthodes statiques

 Précédé par le mot ‘static’


 ne peut accéder qu’aux attributs de la classe
déclaré comme étant statique.
 L’appel de ce genre de méthode se fait en utilisant
la classe non plus un objet instancié.
public static double mean(int[] p) {
int sum = 0;
for (int i=0; i<p.length; i++) {
sum += p[i]; }
return ((double)sum) / p.length;
}
POO : Méthodes statiques
MaClasse.java
public static double mean(int[] p) {
int sum = 0;
for (int i=0; i<p.length; i++) {
sum += p[i]; }
return ((double)sum) / p.length;
}
L’appel se fait dans la même classe contenant
MaClasse.java la déclaration de la méthode statique

Public static void main(String []args){



int[] t={1,2,3};
double moyenne = mean(attendance); … }
POO : Méthodes statiques
MaClasse.java
public static double mean(int[] p) {
int sum = 0;
for (int i=0; i<p.length; i++) {
sum += p[i]; }
return ((double)sum) / p.length;
}
L’appel se fait dans une autre classe que
Test.java celle contenant la méthode statique

Public static void main(String []args){



int[] t={1,2,3};
double moyenne = MaClasse.mean(attendance); … }

Vous aimerez peut-être aussi