SlideShare une entreprise Scribd logo
Programmation Orientée Objet
Lycée lissan eddine ibn_elkhatib laayoune
Filière BTS DSI
Pr H.LAARAJ
hasLaaraj@gmail.com
http://lewebpedagogique.com/laarajbts 2015/2016
1
« Partie1 »
Classe et objets
Encapsulation
Héritage-polymorphisme
Interface –classe abstraite
Pr H.LAARAJ
hasLaaraj@gmail.com
http://lewebpedagogique.com/laarajbts 2015/2016
2
1- Introduction :
Programmation Orientée objets
3
1.2 exemple 1 :
Programme qui affiche le message « bonjour »:
package application1;
public class Principale{
public static void main(String[] args) {
String message="Bonjour";
System.out.println(message);
}
}
4
1.3 exemple 2 :
Programme qui calcule la somme de 2 nombres entiers
saisis en clavier
package application2;
public class Principale{
public static void main(String[] args) {
int a,b,som;
Scanner s = new Scanner(System.in);
a=s.nextInt();
b=s.nextInt();
som=a+b;
System.out.println("somme "+som); }
}
5
1.4 Exercice1 :
Ecrire un programme qui permet de
comparer 2 nombres
6
Exercice2
soit un tableau tab de 6 cases, écrire un code java qui
permet de:
 Saisir les éléments du tableau
 Afficher ses éléments
 Chercher un nombre saisi en clavier s’il existe ou pas
dans le tableau tab
7
2. classe et objet
8
Classe Etudiant
Nom : String
Prénom : String
Age : int
Objets
Sara Mourad Hind Adil
2.1 définitions
 Classe : c'est un ensemble de données et de fonctions regroupées dans une
même entité. Une classe est une description abstraite d'un objet.
 objet : est une instance d'une classe. Pour chaque instance d'une classe, le
code est le même, seul les données sont différentes à chaque objet.
Exemple :
Définir la classe Filiere
code : int
nomFil : String
void afficher()
Filière
Classe Filière
code = 1
nomFil = DSI
Objet f1
code = 2
nomFil = RSI
code = 3
nomFil = PME
Objet f3
Objet f2
Instanciation
9
Solution :
public class Filiere {
int code;
String nomfiliere;
public Filiere(int code, String nomfiliere) {
this.code = code;
this.nomfiliere = nomfiliere;
}
void afficher(){ System.out.println(code+" "+nomFil);}
}
// code dans la méthode main()
Filiere f1=new Filiere(1,"dsi"); f1.afficher();
Filiere f2=new Filiere(2,« rsi"); f2.afficher();
résultat :après l’exécution de ce code java le système affiche:
1 dsi
2 rsi
10
3. mot clé static
11
3.1 Les attributs statiques
Les attributs statiques(les variables de la classe) : sont des attributs marqués
par le mot clé « static », ils désignent les attributs communs entre tous les
objets.
nbreFiliere : int
code : int
nomFil : String
void afficher()
Filiere
static int nbreFiliere;
nbreFiliere est un attribut
statique
code = 1
nomFil = DSI
Objet f1
code = 2
nomFil = RSI
code = 3
nomFil = PME
Objet f3 Objet f2
Instanciation
12
On accède à la attribut statique nbreFiliere via :
• Une instance quelconque de la classe f1.nbreFiliere ou f2.nbreFiliere …
• Le nom de la classe directement. Filiere.nbreFiliere
Exemple :
public class Filiere {
static int nbrefiliere;
int code;
String nomfiliere;
public Filiere(int code, String nomfiliere) {
this.code = code;
this.nomfiliere = nomfiliere;
nbrefiliere++;
} }
// code dans la méthode main()
Filiere f1=new Filiere(1,"dsi");
Filiere f2=new Filiere(2,"Rsi");
System.out.println(Filiere.nbrefiliere);
résultat :après l’exécution de ce code java le système affiche: 2
13
Les constantes
Les constantes sont définies avec le mot clé final static :
leur valeur ne peut pas être modifiée.
Exemple:
public class MaClasse {
final static double PI=3.14 ;
}
14
3.2 Les méthodes statiques
 S’appellent aussi méthodes de classe, elles désignent les
méthodes dont les actions concernent la classe entière et
non pas un objet particulier.
 De même, l’accès à ces méthodes ne nécessite pas la
création d’un objet de la classe, car on peut appeler
directement la méthode à travers le nom de la classe.
 On peut utiliser aussi ces méthodes statiques pour
manipuler des données statiques.
15
4. Encapsulation
16
4.1 définition:
 Modificateur private : Un attribut ou une méthode déclaré "private" n'est
accessible que depuis l'intérieur de la même classe.
 Encapsulation : les attributs doivent être cachés(declarés privés). Leurs
valeurs ne doivent être visibles et modifiables qu'au travers des méthodes.
17
Objet o2
Objet o3
Attributs
privés
Méthodes
Classe
4.2 accesseur et modificateur
le créateur de la classe doit prévoir des méthodes spéciales portant l'étiquette
public, permettant de manipuler ces données.
 Les fonctions membres permettant d'accéder aux données membres sont
appelées accesseurs, parfois getter (appellation d'origine anglophone)
 Les fonctions membres permettant de modifier les données membres sont
appelées modificateurs, parfois setter (appellation d'origine anglophone)
18
4.3 exemple
1 . Créer la classe Filière qui contient les attributs suivants:
Private int code , private String nomFil
2. Ajouter a la classe filiere les méthodes :
 public void setCode(int c ) : méthode accesseur qui permet d’affecter le code par un
nombre compris entre 1 et 20
 public void setNomFil(String n ) : méthode accesseur qui permet d’affecter le nomFil
par la variable n
 public int getCode(): permet de retourner le code de la filière
 public String getNomFil(): permet de retourner le nom de la filière
3. Dans la methode main(…)
 Instancier un objet f ( 2 , ‘bts’)
 Modifier le code de l’objet f par la valeur 34
 Modifier le code de l’objet f par la valeur 5
 Afficher le nom de l’objet f
19
Solution
public class Filiere {
private int code;
private String nomfiliere;
public Filiere(int c, String nomfil) { code = c; nomfiliere = nomfil; }
public void setCode(int c ){ if(c>0 && c<=20) code=c;}
public void setNomfil(String nomfiliere ){ this.nomfiliere=nomfiliere;}
public getCode() {return code;}
public getNomFiliere() {return nomfiliere;}
}
// code dans la méthode main()
Filiere f=new Filiere(2, "bts");
f.setCode(34);
f.setCode(5);
System.out.println(f.getNomFiliere() );
20
5. héritage
21
Classe Vehicule
matricule : String
marque : String
puissance : String
void démarrer()
void accélérer()
Classe Voiture
Classe Bus Classe Moto
5.1 Définitions
 L'héritage est un mécanisme qui facilite la réutilisation du
code et la gestion de son évolution.
 Grâce à l'héritage, les objets d'une classe ont accès aux
données et aux méthodes de la classe parent.
 Une classe ne peut avoir qu'une seule classe mère : il n'y a
pas d'héritage multiple en java.
22
5.2 Syntaxe
class Mere {
…
}
class Fille1 extends mere {
…
}
class Fille2 extends mere {
…
}
23
Mere
Fille1 Fille2
5.3 exemple
24
nom : String
prenom : String
age : int
void afficher()
Personne
codeInsc : int
nbabsence : int
void afficher()
Etudiant
matiere : String
void afficher()
Professeur
Super classe
Sous classes
Relation d’héritage
5.4 Solution
public class Personne {
String nom;
String prenom;
int age;
Personne(String nom,String prenom,int age)
{
this.nom=nom;
this.prenom=prenom;
this.age=age;
}
void afficher(){
System.out.print(nom+" "+prenom+"
"+age);
}
}
25
public class Professeur extends Personne {
String matiere;
public Professeur (String n ,String p ,int a,String m){
super(n,p,a);
this.matiere = m;
}
void afficher(){
super.afficher();
System.out.println(" la matiere est :" +matiere);
}
}
public class Etudiant extends Personne {
int codeinsc;
int nbrabs;
Etudiant(String n,String p,int a,int codeinsc,int nbr)
{
super(n,p,a);
this.codeinsc=codeinsc;
this.nbrabs=nbr;
}
void afficher(){
super.afficher();
System.out.println("code "+ codeinsc+" , "+nbrabs);
}
}
5.5 la redéfinition
Les sous classes peuvent redéfinir les méthodes héritées. Les
méthodes sont redéfinies avec le même nom, les mêmes types
et le même nombre d'arguments, sinon il s'agit d'une surcharge.
Exemple:
26
class Mere
void methode(String , int)
class Fille1
void methode(String , int)
class Fille2
void methode( int)
Redéfinition Surcharge
5.6 polymorphisme
 Le nom de polymorphisme vient du grec et signifie qui peut
prendre plusieurs formes.
 une méthode polymorphe est une méthode qui a plusieurs
formes en fonction de la classe dans laquelle elle se situe.
Exemple:
27
void parler()
Animal
void parler()
Chien
void parler()
Canard
Chat
void parler()
Méthode parler() est polymorphe
woof
maoh
wack
Solution:
public class Animal {
public void parler(){
System.out.println("parler");
} }
public class Canard extends Animal {
public void parler(){
Class c=this.getClass();
System.out.println(c. getSimpleName() +"a dit
wack");
} }
public class Chat extends Animal {
public void parler(){
Class c=this.getClass();
System.out.println(c. getSimpleName() +"a dit
maoh");
} }
28
public class Chien extends Animal {
public void parler(){
Class c=this.getClass();
System.out.println(c. getSimpleName() +"a dit
woof");
}
}
public class Polymorphe {
public static void main(String[] args) {
Chat cha =new Chat();
//Chat() est un constructeur par défaut
Chien chi = new Chien();
Canard can = new Canard();
Animal tab[]=new Animal[10];
tab[0]=cha;
tab[1]=chi;
tab[2]=can;
for(int i=0;i<3;i++)
tab[i].parler();
//parler() est polymorphe car il affiche un texte
//selon le type de l’objet tab[i]
} }
Après l’exécution le système affiche :
Chat a dit maoh
Chien a dit woof
Canard a dit wack
6 classe abstraite
29
6.1 définition:
 Les méthodes abstract n’ont pas d’implémentation. Leur
déclaration doit être suivie d’un point-virgule.
 Une classe qui contient une méthode abstract doit être déclarée
abstract.
 Une classe abstract ne peut pas être instanciée.
 Une classe peut être déclarée abstract, même si elle ne comporte
pas de méthodes abstract.
 Pour pouvoir être instanciée, une sous-classe d’une classe abstract
doit redéfinir toute les méthodes abstract de la classe parente.
30
6.2 exemple
31
x : int
y : int
abstract surface() : double
deplacer(dx,dy) : void
abstract Forme
rayon : double
Circle(double r)
Circle
Cote : int
Carre(double C)
Carre
Sous classes
Définir les classes suivantes : Abstraite
Solution:
public abstract class Forme {
int x,y;
public Forme(int x, int y) {
this.x = x; this.y = y;
}
public abstract double surface();
public void deplacer(int dx,int dy){
x=x+dx;
y=y+dy;
}
public class Carre extends Forme {
int a;
public Carre(int a, int x, int y) {
super(x, y);
this.a = a;
}
32
public double surface() {
return a*a;
}
}
public class Circle extends Forme {
int r;
public Circle(int r, int x, int y) {
super(x, y);
this.r = r;
}
public double surface() {
return Math.PI*r*r;
}
}
//main()
Carre c=new Carre(4,5,6);
c.deplacer(2, 3);
System.out.print(c.surface());
Après l’exécution le système affiche :
16 (=4*4)
7 interface
33
7.1 définition
Une interface: est une sorte de contrat qui indique
ce que la classe qui l'implémente offre comme
service(méthodes).
Interface est composée d'un ensemble d'en-têtes
de méthodes et éventuellement de constantes.
Une interface n'est jamais instanciée
Elle peut servir à l'héritage multiple.
34
7.2 Exemple:
Soit la classe principale suivante:
public class CoursInterface {
public static void main(String[] args) {
Carre c=new Carre(4,13,16);
Personne p =new Personne("elfid","zaid",23);
c.info();
p.info();
}
Modifier les 2 classes Carre et Personne à fin que tous les deux doit
implémenter même méthode info()et que le résultat de l’exécution donne :
carre de surface 16.0
nazih anas 23
35
7.3 Solution
public interface Information {
public void info();
}
public abstract class Forme {
int x,y;
public Forme(int x, int y) {
this.x = x;
this.y = y;
}
public abstract double surface();
public void deplacer(int dx,int dy){
x=x+dx;
y=y+dy;
}
}
36
public class Carre extends Forme implements Information{
int a;
public Carre(int a, int x, int y) {
super(x, y);
this.a = a;
}
public double surface() {
return a*a;
}
public void info() {
System.out.println("carre de surface "+surface());
} }
public class Personne implements Information{
String nom, prenom;
int age;
Personne(String nom,String prenom,int age)
{
this.nom=nom; this.prenom=prenom; this.age=age;
}
void afficher(){
System.out.print(nom+" "+prenom+" "+age);
}
public void info() {
afficher();
}
}
8 classe Object :
37
8.1 définition
 La classe Object est la classe racine de toute la hiérarchie des objets Java.
Quelques méthodes de la classe Object:
• public String toString()
• public final Class getClass()
• public boolean equals(Object o)
• protected Object clone()
• …
38
8.2 transtypage(Casting)
Le transtypage explicite des références est utilisé pour convertir
le type d'une référence dans un type dérivé(sous classe).
Mere -> fille
Exemple :
Etudiant e =new Etudiant("elalami","adil",22,101,2) ;
Personne p=new Etudiant(« achraf","said",23,102,4) ;
e= (Etudiant) p; // Casting p vers e
e.afficher();
39
8.3 equals
 Cette méthode permet de comparer deux objets, et notamment de
savoir s'ils sont égaux
 Pour comparer 2 objets , on doit redéfinir la méthode equals().
Exemple :
Comparer 2 objets de type Personne
Solution:
Personne p1=new Personne("Boutaib","bachir",23);
Personne p2=new Personne("Boutaib","bachir",23);
if(p1.equals(p2))
System.out.println("egaux");
else
System.out.println("pas egaux");
//mais il faut redéfinir la méthode equals dans la classe Personne (voir la
page suivante)
40
Solution (suite)
public boolean equals(Object o) {
Personne p=(Personne)o;
if(!this.nom.equals(p.nom))
return false;
if(!this.prenom.equals(p.prenom))
return false;
if(this.age!=p.age)
return false;
return true;
}
/* ou bien 2eme méthode
public boolean equals(Object o) {
Personne p=(Personne)o;
return this.nom.equals(p.nom)&&this.prenom.equals(p.prenom)&&this.age==p.age;*/
}
41
8.4 Clonage
 Mécanisme qui permet de construire une copie (sûre) de l'objet, pour conserver
l'état initial d'un objet
 Pour pouvoir être clonée, une classe doit implémenter l'interface Cloneable.
Celle-ci indique que la classe peut réécrire la méthode clone() héritée de la
classe Object afin que ses instances puissent procéder à une copie de ses
attributs vers une nouvelle instance
Exemple :
Personne p1=new Personne("boutaib","bachir",27);
Personne p2=p1;
p2.nom= "faouzi";
System.out.println(p1.nom)
/* il affiche faouzi puisque p1 et p2 référencent même objet
pour créer deux objets de références différentes on doit changer l’instruction
Personne p2=p1; par Personne p2=p1.clone(); et redéfinir la méthode clone() dans la
classe Personne qui implémente l'interface Cloneable */
42
Solution (méthode clone())
class Personne implements Cloneable{
…
//1ere methode en utilisant try et catch pour traiter les erreurs de clonage
protected Personne clone() {
Personne p=null;
try{
p=(Personne) super.clone();
}
catch(CloneNotSupportedException e){
System.out.println("erreur de clonage "+e.getMessage());
}
return p;
}
/*2eme methode en utilisant throws pour traiter les erreurs de clonage(voir plus loin)
protected Personne clone() throws CloneNotSupportedException {
return (Personne) super.clone();*/
}
43
8.5 Exercice
1. Créer une classe nommée Tableau pour la gestion de tableaux d’objets. Elle aura les
caractéristiques suivantes :
 Un champ privé donnees, de type tableau d’Object.
 Un champ privé nbElts, entier, c’est le nombre d’éléments dans la tableau.
 Un constructeur admettant un argument entier, le nombre nb d’éléments du tableau.
 Une méthode public int size() renvoyant renvoyant le nombre d’éléments dans la
tableau.
 Une méthode public int indexOf(Object elem) qui renvoie l’indice dans le tableau de
l’objet dont une référence est passée en argument. On se servira, pour les
comparaisons, de la méthode boolean equals(Object elt) héritée d’Object.
 Une méthode public Object get(int index) qui renvoie une référence sur l’objet stocké à
l’indice index.
 Une méthode public void add(Object element) qui ajoute l’objet référencé par
element à la dernière indice .
2. Ajouter la méthode nommée void modifierNomPrenom(String nom, String prenom) à la
classe Personne qui change le nom et prenom de la personne courante.
44
Exercice(suite)
3. Créer une classe TableauMain, ne contenant qu’une méthode main().
Dans cette dernière, créer un Tableau de 6 cases, nommé par exemple tab, puis créer une
personne, nommé par exemple p("A", "A",22).
Effectuer ensuite les opérations suivantes :
tab.add(p);
p.modifierNomPrenom("B", "B");
tab.add(p);
p.modifierNomPrenom("C", "C");
tab.add(p);
System.out.println("index de p: "+tab.indexOf(p));
// Puis afficher les différents éléments du tableau.
Le résultat vous semble-t-il conforme à vos attentes?
45

Contenu connexe

Tendances

Cours access
Cours accessCours access
Cours accesskourbali
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-CorrectionLilia Sfaxi
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en JavaOussama BEN KHIROUN
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfacesAmir Souissi
 
Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Ahmed-Chawki Chaouche
 
Cours des bases de données
Cours des bases de données Cours des bases de données
Cours des bases de données yassine kchiri
 
La gestion des exceptions avec Java
La gestion des exceptions avec JavaLa gestion des exceptions avec Java
La gestion des exceptions avec JavaPapa Cheikh Cisse
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREGhizlane ALOZADE
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-CorrectionLilia Sfaxi
 
Notes de cours et tp - Administation Systèmes
Notes de cours et tp  - Administation Systèmes Notes de cours et tp  - Administation Systèmes
Notes de cours et tp - Administation Systèmes Ikram Benabdelouahab
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement webHouda TOUKABRI
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications AndroidLilia Sfaxi
 
Gestion des threads
Gestion des threadsGestion des threads
Gestion des threadsSana Aroussi
 

Tendances (20)

Cours de c
Cours de cCours de c
Cours de c
 
Cours access
Cours accessCours access
Cours access
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)
 
Cours des bases de données
Cours des bases de données Cours des bases de données
Cours des bases de données
 
Uml
UmlUml
Uml
 
La gestion des exceptions avec Java
La gestion des exceptions avec JavaLa gestion des exceptions avec Java
La gestion des exceptions avec Java
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIRE
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Informatique de gestion
Informatique de gestionInformatique de gestion
Informatique de gestion
 
Notes de cours et tp - Administation Systèmes
Notes de cours et tp  - Administation Systèmes Notes de cours et tp  - Administation Systèmes
Notes de cours et tp - Administation Systèmes
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications Android
 
Gestion des threads
Gestion des threadsGestion des threads
Gestion des threads
 

Similaire à POO-JAVA-partie-1.pdf

Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2Laurent BUNIET
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIJihenHedhli1
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
Introspection reflection
Introspection reflectionIntrospection reflection
Introspection reflectionEric Toguem
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
JAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAJAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAAymen Bedwivski
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaAmel Morchdi
 
POO - Chapitre6.pptx
POO - Chapitre6.pptxPOO - Chapitre6.pptx
POO - Chapitre6.pptxRAYENBOUAFIF1
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeAmir Souissi
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfAabidiHafid
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfacesAziz Darouichi
 
chapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdfchapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdfMoez Moezm
 

Similaire à POO-JAVA-partie-1.pdf (20)

Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2
 
Chapitre3 2013 POO
Chapitre3 2013 POOChapitre3 2013 POO
Chapitre3 2013 POO
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLI
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Introspection reflection
Introspection reflectionIntrospection reflection
Introspection reflection
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
JAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAJAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVA
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 java
 
Héritage et redéfinition de méthode
Héritage et redéfinition de méthodeHéritage et redéfinition de méthode
Héritage et redéfinition de méthode
 
Cours5-heritage.pptx
Cours5-heritage.pptxCours5-heritage.pptx
Cours5-heritage.pptx
 
POO
POOPOO
POO
 
POO - Chapitre6.pptx
POO - Chapitre6.pptxPOO - Chapitre6.pptx
POO - Chapitre6.pptx
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdf
 
Poo vb.net
Poo vb.netPoo vb.net
Poo vb.net
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
chapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdfchapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdf
 

Plus de YasushiTsubakik

UML-DiagrammesSequence.pdf
UML-DiagrammesSequence.pdfUML-DiagrammesSequence.pdf
UML-DiagrammesSequence.pdfYasushiTsubakik
 
Support de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdfSupport de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdfYasushiTsubakik
 
UML-DiagrammesEtatsTransitions.pdf
UML-DiagrammesEtatsTransitions.pdfUML-DiagrammesEtatsTransitions.pdf
UML-DiagrammesEtatsTransitions.pdfYasushiTsubakik
 
UML-DiagrammesEtatsTransitionsSuite.pdf
UML-DiagrammesEtatsTransitionsSuite.pdfUML-DiagrammesEtatsTransitionsSuite.pdf
UML-DiagrammesEtatsTransitionsSuite.pdfYasushiTsubakik
 
Support de cours Conception orientée objets - partie 2.pdf
Support de cours Conception orientée objets - partie 2.pdfSupport de cours Conception orientée objets - partie 2.pdf
Support de cours Conception orientée objets - partie 2.pdfYasushiTsubakik
 
UML-AssociationsDiverses-Heritage.pdf
UML-AssociationsDiverses-Heritage.pdfUML-AssociationsDiverses-Heritage.pdf
UML-AssociationsDiverses-Heritage.pdfYasushiTsubakik
 
1-UML CasUtilisation.pdf
1-UML CasUtilisation.pdf1-UML CasUtilisation.pdf
1-UML CasUtilisation.pdfYasushiTsubakik
 
UML-diagramme de classe Operations.pdf
UML-diagramme de classe Operations.pdfUML-diagramme de classe Operations.pdf
UML-diagramme de classe Operations.pdfYasushiTsubakik
 
Développement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfYasushiTsubakik
 
Développement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfDéveloppement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfYasushiTsubakik
 
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdf
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdfSupport de Cours Gestion de projets (partie 2) - Tableau de bord.pdf
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdfYasushiTsubakik
 
Planification de projet.pdf
Planification de projet.pdfPlanification de projet.pdf
Planification de projet.pdfYasushiTsubakik
 
gestion projet Planification PERT.pdf
gestion projet Planification PERT.pdfgestion projet Planification PERT.pdf
gestion projet Planification PERT.pdfYasushiTsubakik
 
Introduction Cours Gestion de projets.pdf
Introduction Cours Gestion de projets.pdfIntroduction Cours Gestion de projets.pdf
Introduction Cours Gestion de projets.pdfYasushiTsubakik
 
Les critères de performance.pdf
Les critères de performance.pdfLes critères de performance.pdf
Les critères de performance.pdfYasushiTsubakik
 
Diagramme des cas d’utilisation.pdf
 Diagramme des cas d’utilisation.pdf Diagramme des cas d’utilisation.pdf
Diagramme des cas d’utilisation.pdfYasushiTsubakik
 

Plus de YasushiTsubakik (20)

POO-JAVA-partie3.pdf
POO-JAVA-partie3.pdfPOO-JAVA-partie3.pdf
POO-JAVA-partie3.pdf
 
POO-JAVA-partie-2.pdf
POO-JAVA-partie-2.pdfPOO-JAVA-partie-2.pdf
POO-JAVA-partie-2.pdf
 
UML-DiagrammesSequence.pdf
UML-DiagrammesSequence.pdfUML-DiagrammesSequence.pdf
UML-DiagrammesSequence.pdf
 
Support de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdfSupport de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdf
 
UML-DiagrammesEtatsTransitions.pdf
UML-DiagrammesEtatsTransitions.pdfUML-DiagrammesEtatsTransitions.pdf
UML-DiagrammesEtatsTransitions.pdf
 
UML-DiagrammesEtatsTransitionsSuite.pdf
UML-DiagrammesEtatsTransitionsSuite.pdfUML-DiagrammesEtatsTransitionsSuite.pdf
UML-DiagrammesEtatsTransitionsSuite.pdf
 
UML-Scenarios.pdf
UML-Scenarios.pdfUML-Scenarios.pdf
UML-Scenarios.pdf
 
Support de cours Conception orientée objets - partie 2.pdf
Support de cours Conception orientée objets - partie 2.pdfSupport de cours Conception orientée objets - partie 2.pdf
Support de cours Conception orientée objets - partie 2.pdf
 
UML-Contraintes.pdf
UML-Contraintes.pdfUML-Contraintes.pdf
UML-Contraintes.pdf
 
UML-AssociationsDiverses-Heritage.pdf
UML-AssociationsDiverses-Heritage.pdfUML-AssociationsDiverses-Heritage.pdf
UML-AssociationsDiverses-Heritage.pdf
 
1-UML CasUtilisation.pdf
1-UML CasUtilisation.pdf1-UML CasUtilisation.pdf
1-UML CasUtilisation.pdf
 
UML-diagramme de classe Operations.pdf
UML-diagramme de classe Operations.pdfUML-diagramme de classe Operations.pdf
UML-diagramme de classe Operations.pdf
 
Développement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdf
 
Développement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfDéveloppement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdf
 
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdf
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdfSupport de Cours Gestion de projets (partie 2) - Tableau de bord.pdf
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdf
 
Planification de projet.pdf
Planification de projet.pdfPlanification de projet.pdf
Planification de projet.pdf
 
gestion projet Planification PERT.pdf
gestion projet Planification PERT.pdfgestion projet Planification PERT.pdf
gestion projet Planification PERT.pdf
 
Introduction Cours Gestion de projets.pdf
Introduction Cours Gestion de projets.pdfIntroduction Cours Gestion de projets.pdf
Introduction Cours Gestion de projets.pdf
 
Les critères de performance.pdf
Les critères de performance.pdfLes critères de performance.pdf
Les critères de performance.pdf
 
Diagramme des cas d’utilisation.pdf
 Diagramme des cas d’utilisation.pdf Diagramme des cas d’utilisation.pdf
Diagramme des cas d’utilisation.pdf
 

Dernier

Festival de Cannes 2024.pptx
Festival    de     Cannes        2024.pptxFestival    de     Cannes        2024.pptx
Festival de Cannes 2024.pptxTxaruka
 
Decret-n°19-10-du-23-janvier-2019-reglementant-lexportation-des-déchets-spéci...
Decret-n°19-10-du-23-janvier-2019-reglementant-lexportation-des-déchets-spéci...Decret-n°19-10-du-23-janvier-2019-reglementant-lexportation-des-déchets-spéci...
Decret-n°19-10-du-23-janvier-2019-reglementant-lexportation-des-déchets-spéci...zidani2
 
Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?sashaflor182
 
Webinaire Technologia | DAX : nouvelles fonctions
Webinaire Technologia | DAX : nouvelles fonctionsWebinaire Technologia | DAX : nouvelles fonctions
Webinaire Technologia | DAX : nouvelles fonctionsTechnologia Formation
 
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24BenotGeorges3
 
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptxSainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptxMartin M Flynn
 
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...Technologia Formation
 
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...Pedago Lu
 
EL KATRY Reem: Proposition de Programme Artistique et Exposition pour les Écoles
EL KATRY Reem: Proposition de Programme Artistique et Exposition pour les ÉcolesEL KATRY Reem: Proposition de Programme Artistique et Exposition pour les Écoles
EL KATRY Reem: Proposition de Programme Artistique et Exposition pour les ÉcolesSOLIANAEvelyne
 
Épreuve de leçon SII.pptx
Épreuve de leçon  SII.pptxÉpreuve de leçon  SII.pptx
Épreuve de leçon SII.pptxSAIDALI701276
 
Résultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdfRésultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdfGERESO
 

Dernier (11)

Festival de Cannes 2024.pptx
Festival    de     Cannes        2024.pptxFestival    de     Cannes        2024.pptx
Festival de Cannes 2024.pptx
 
Decret-n°19-10-du-23-janvier-2019-reglementant-lexportation-des-déchets-spéci...
Decret-n°19-10-du-23-janvier-2019-reglementant-lexportation-des-déchets-spéci...Decret-n°19-10-du-23-janvier-2019-reglementant-lexportation-des-déchets-spéci...
Decret-n°19-10-du-23-janvier-2019-reglementant-lexportation-des-déchets-spéci...
 
Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?
 
Webinaire Technologia | DAX : nouvelles fonctions
Webinaire Technologia | DAX : nouvelles fonctionsWebinaire Technologia | DAX : nouvelles fonctions
Webinaire Technologia | DAX : nouvelles fonctions
 
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
 
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptxSainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
 
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
 
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
 
EL KATRY Reem: Proposition de Programme Artistique et Exposition pour les Écoles
EL KATRY Reem: Proposition de Programme Artistique et Exposition pour les ÉcolesEL KATRY Reem: Proposition de Programme Artistique et Exposition pour les Écoles
EL KATRY Reem: Proposition de Programme Artistique et Exposition pour les Écoles
 
Épreuve de leçon SII.pptx
Épreuve de leçon  SII.pptxÉpreuve de leçon  SII.pptx
Épreuve de leçon SII.pptx
 
Résultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdfRésultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdf
 

POO-JAVA-partie-1.pdf

  • 1. Programmation Orientée Objet Lycée lissan eddine ibn_elkhatib laayoune Filière BTS DSI Pr H.LAARAJ hasLaaraj@gmail.com http://lewebpedagogique.com/laarajbts 2015/2016 1
  • 2. « Partie1 » Classe et objets Encapsulation Héritage-polymorphisme Interface –classe abstraite Pr H.LAARAJ hasLaaraj@gmail.com http://lewebpedagogique.com/laarajbts 2015/2016 2
  • 3. 1- Introduction : Programmation Orientée objets 3
  • 4. 1.2 exemple 1 : Programme qui affiche le message « bonjour »: package application1; public class Principale{ public static void main(String[] args) { String message="Bonjour"; System.out.println(message); } } 4
  • 5. 1.3 exemple 2 : Programme qui calcule la somme de 2 nombres entiers saisis en clavier package application2; public class Principale{ public static void main(String[] args) { int a,b,som; Scanner s = new Scanner(System.in); a=s.nextInt(); b=s.nextInt(); som=a+b; System.out.println("somme "+som); } } 5
  • 6. 1.4 Exercice1 : Ecrire un programme qui permet de comparer 2 nombres 6
  • 7. Exercice2 soit un tableau tab de 6 cases, écrire un code java qui permet de:  Saisir les éléments du tableau  Afficher ses éléments  Chercher un nombre saisi en clavier s’il existe ou pas dans le tableau tab 7
  • 8. 2. classe et objet 8 Classe Etudiant Nom : String Prénom : String Age : int Objets Sara Mourad Hind Adil
  • 9. 2.1 définitions  Classe : c'est un ensemble de données et de fonctions regroupées dans une même entité. Une classe est une description abstraite d'un objet.  objet : est une instance d'une classe. Pour chaque instance d'une classe, le code est le même, seul les données sont différentes à chaque objet. Exemple : Définir la classe Filiere code : int nomFil : String void afficher() Filière Classe Filière code = 1 nomFil = DSI Objet f1 code = 2 nomFil = RSI code = 3 nomFil = PME Objet f3 Objet f2 Instanciation 9
  • 10. Solution : public class Filiere { int code; String nomfiliere; public Filiere(int code, String nomfiliere) { this.code = code; this.nomfiliere = nomfiliere; } void afficher(){ System.out.println(code+" "+nomFil);} } // code dans la méthode main() Filiere f1=new Filiere(1,"dsi"); f1.afficher(); Filiere f2=new Filiere(2,« rsi"); f2.afficher(); résultat :après l’exécution de ce code java le système affiche: 1 dsi 2 rsi 10
  • 11. 3. mot clé static 11
  • 12. 3.1 Les attributs statiques Les attributs statiques(les variables de la classe) : sont des attributs marqués par le mot clé « static », ils désignent les attributs communs entre tous les objets. nbreFiliere : int code : int nomFil : String void afficher() Filiere static int nbreFiliere; nbreFiliere est un attribut statique code = 1 nomFil = DSI Objet f1 code = 2 nomFil = RSI code = 3 nomFil = PME Objet f3 Objet f2 Instanciation 12 On accède à la attribut statique nbreFiliere via : • Une instance quelconque de la classe f1.nbreFiliere ou f2.nbreFiliere … • Le nom de la classe directement. Filiere.nbreFiliere
  • 13. Exemple : public class Filiere { static int nbrefiliere; int code; String nomfiliere; public Filiere(int code, String nomfiliere) { this.code = code; this.nomfiliere = nomfiliere; nbrefiliere++; } } // code dans la méthode main() Filiere f1=new Filiere(1,"dsi"); Filiere f2=new Filiere(2,"Rsi"); System.out.println(Filiere.nbrefiliere); résultat :après l’exécution de ce code java le système affiche: 2 13
  • 14. Les constantes Les constantes sont définies avec le mot clé final static : leur valeur ne peut pas être modifiée. Exemple: public class MaClasse { final static double PI=3.14 ; } 14
  • 15. 3.2 Les méthodes statiques  S’appellent aussi méthodes de classe, elles désignent les méthodes dont les actions concernent la classe entière et non pas un objet particulier.  De même, l’accès à ces méthodes ne nécessite pas la création d’un objet de la classe, car on peut appeler directement la méthode à travers le nom de la classe.  On peut utiliser aussi ces méthodes statiques pour manipuler des données statiques. 15
  • 17. 4.1 définition:  Modificateur private : Un attribut ou une méthode déclaré "private" n'est accessible que depuis l'intérieur de la même classe.  Encapsulation : les attributs doivent être cachés(declarés privés). Leurs valeurs ne doivent être visibles et modifiables qu'au travers des méthodes. 17 Objet o2 Objet o3 Attributs privés Méthodes Classe
  • 18. 4.2 accesseur et modificateur le créateur de la classe doit prévoir des méthodes spéciales portant l'étiquette public, permettant de manipuler ces données.  Les fonctions membres permettant d'accéder aux données membres sont appelées accesseurs, parfois getter (appellation d'origine anglophone)  Les fonctions membres permettant de modifier les données membres sont appelées modificateurs, parfois setter (appellation d'origine anglophone) 18
  • 19. 4.3 exemple 1 . Créer la classe Filière qui contient les attributs suivants: Private int code , private String nomFil 2. Ajouter a la classe filiere les méthodes :  public void setCode(int c ) : méthode accesseur qui permet d’affecter le code par un nombre compris entre 1 et 20  public void setNomFil(String n ) : méthode accesseur qui permet d’affecter le nomFil par la variable n  public int getCode(): permet de retourner le code de la filière  public String getNomFil(): permet de retourner le nom de la filière 3. Dans la methode main(…)  Instancier un objet f ( 2 , ‘bts’)  Modifier le code de l’objet f par la valeur 34  Modifier le code de l’objet f par la valeur 5  Afficher le nom de l’objet f 19
  • 20. Solution public class Filiere { private int code; private String nomfiliere; public Filiere(int c, String nomfil) { code = c; nomfiliere = nomfil; } public void setCode(int c ){ if(c>0 && c<=20) code=c;} public void setNomfil(String nomfiliere ){ this.nomfiliere=nomfiliere;} public getCode() {return code;} public getNomFiliere() {return nomfiliere;} } // code dans la méthode main() Filiere f=new Filiere(2, "bts"); f.setCode(34); f.setCode(5); System.out.println(f.getNomFiliere() ); 20
  • 21. 5. héritage 21 Classe Vehicule matricule : String marque : String puissance : String void démarrer() void accélérer() Classe Voiture Classe Bus Classe Moto
  • 22. 5.1 Définitions  L'héritage est un mécanisme qui facilite la réutilisation du code et la gestion de son évolution.  Grâce à l'héritage, les objets d'une classe ont accès aux données et aux méthodes de la classe parent.  Une classe ne peut avoir qu'une seule classe mère : il n'y a pas d'héritage multiple en java. 22
  • 23. 5.2 Syntaxe class Mere { … } class Fille1 extends mere { … } class Fille2 extends mere { … } 23 Mere Fille1 Fille2
  • 24. 5.3 exemple 24 nom : String prenom : String age : int void afficher() Personne codeInsc : int nbabsence : int void afficher() Etudiant matiere : String void afficher() Professeur Super classe Sous classes Relation d’héritage
  • 25. 5.4 Solution public class Personne { String nom; String prenom; int age; Personne(String nom,String prenom,int age) { this.nom=nom; this.prenom=prenom; this.age=age; } void afficher(){ System.out.print(nom+" "+prenom+" "+age); } } 25 public class Professeur extends Personne { String matiere; public Professeur (String n ,String p ,int a,String m){ super(n,p,a); this.matiere = m; } void afficher(){ super.afficher(); System.out.println(" la matiere est :" +matiere); } } public class Etudiant extends Personne { int codeinsc; int nbrabs; Etudiant(String n,String p,int a,int codeinsc,int nbr) { super(n,p,a); this.codeinsc=codeinsc; this.nbrabs=nbr; } void afficher(){ super.afficher(); System.out.println("code "+ codeinsc+" , "+nbrabs); } }
  • 26. 5.5 la redéfinition Les sous classes peuvent redéfinir les méthodes héritées. Les méthodes sont redéfinies avec le même nom, les mêmes types et le même nombre d'arguments, sinon il s'agit d'une surcharge. Exemple: 26 class Mere void methode(String , int) class Fille1 void methode(String , int) class Fille2 void methode( int) Redéfinition Surcharge
  • 27. 5.6 polymorphisme  Le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs formes.  une méthode polymorphe est une méthode qui a plusieurs formes en fonction de la classe dans laquelle elle se situe. Exemple: 27 void parler() Animal void parler() Chien void parler() Canard Chat void parler() Méthode parler() est polymorphe woof maoh wack
  • 28. Solution: public class Animal { public void parler(){ System.out.println("parler"); } } public class Canard extends Animal { public void parler(){ Class c=this.getClass(); System.out.println(c. getSimpleName() +"a dit wack"); } } public class Chat extends Animal { public void parler(){ Class c=this.getClass(); System.out.println(c. getSimpleName() +"a dit maoh"); } } 28 public class Chien extends Animal { public void parler(){ Class c=this.getClass(); System.out.println(c. getSimpleName() +"a dit woof"); } } public class Polymorphe { public static void main(String[] args) { Chat cha =new Chat(); //Chat() est un constructeur par défaut Chien chi = new Chien(); Canard can = new Canard(); Animal tab[]=new Animal[10]; tab[0]=cha; tab[1]=chi; tab[2]=can; for(int i=0;i<3;i++) tab[i].parler(); //parler() est polymorphe car il affiche un texte //selon le type de l’objet tab[i] } } Après l’exécution le système affiche : Chat a dit maoh Chien a dit woof Canard a dit wack
  • 30. 6.1 définition:  Les méthodes abstract n’ont pas d’implémentation. Leur déclaration doit être suivie d’un point-virgule.  Une classe qui contient une méthode abstract doit être déclarée abstract.  Une classe abstract ne peut pas être instanciée.  Une classe peut être déclarée abstract, même si elle ne comporte pas de méthodes abstract.  Pour pouvoir être instanciée, une sous-classe d’une classe abstract doit redéfinir toute les méthodes abstract de la classe parente. 30
  • 31. 6.2 exemple 31 x : int y : int abstract surface() : double deplacer(dx,dy) : void abstract Forme rayon : double Circle(double r) Circle Cote : int Carre(double C) Carre Sous classes Définir les classes suivantes : Abstraite
  • 32. Solution: public abstract class Forme { int x,y; public Forme(int x, int y) { this.x = x; this.y = y; } public abstract double surface(); public void deplacer(int dx,int dy){ x=x+dx; y=y+dy; } public class Carre extends Forme { int a; public Carre(int a, int x, int y) { super(x, y); this.a = a; } 32 public double surface() { return a*a; } } public class Circle extends Forme { int r; public Circle(int r, int x, int y) { super(x, y); this.r = r; } public double surface() { return Math.PI*r*r; } } //main() Carre c=new Carre(4,5,6); c.deplacer(2, 3); System.out.print(c.surface()); Après l’exécution le système affiche : 16 (=4*4)
  • 34. 7.1 définition Une interface: est une sorte de contrat qui indique ce que la classe qui l'implémente offre comme service(méthodes). Interface est composée d'un ensemble d'en-têtes de méthodes et éventuellement de constantes. Une interface n'est jamais instanciée Elle peut servir à l'héritage multiple. 34
  • 35. 7.2 Exemple: Soit la classe principale suivante: public class CoursInterface { public static void main(String[] args) { Carre c=new Carre(4,13,16); Personne p =new Personne("elfid","zaid",23); c.info(); p.info(); } Modifier les 2 classes Carre et Personne à fin que tous les deux doit implémenter même méthode info()et que le résultat de l’exécution donne : carre de surface 16.0 nazih anas 23 35
  • 36. 7.3 Solution public interface Information { public void info(); } public abstract class Forme { int x,y; public Forme(int x, int y) { this.x = x; this.y = y; } public abstract double surface(); public void deplacer(int dx,int dy){ x=x+dx; y=y+dy; } } 36 public class Carre extends Forme implements Information{ int a; public Carre(int a, int x, int y) { super(x, y); this.a = a; } public double surface() { return a*a; } public void info() { System.out.println("carre de surface "+surface()); } } public class Personne implements Information{ String nom, prenom; int age; Personne(String nom,String prenom,int age) { this.nom=nom; this.prenom=prenom; this.age=age; } void afficher(){ System.out.print(nom+" "+prenom+" "+age); } public void info() { afficher(); } }
  • 38. 8.1 définition  La classe Object est la classe racine de toute la hiérarchie des objets Java. Quelques méthodes de la classe Object: • public String toString() • public final Class getClass() • public boolean equals(Object o) • protected Object clone() • … 38
  • 39. 8.2 transtypage(Casting) Le transtypage explicite des références est utilisé pour convertir le type d'une référence dans un type dérivé(sous classe). Mere -> fille Exemple : Etudiant e =new Etudiant("elalami","adil",22,101,2) ; Personne p=new Etudiant(« achraf","said",23,102,4) ; e= (Etudiant) p; // Casting p vers e e.afficher(); 39
  • 40. 8.3 equals  Cette méthode permet de comparer deux objets, et notamment de savoir s'ils sont égaux  Pour comparer 2 objets , on doit redéfinir la méthode equals(). Exemple : Comparer 2 objets de type Personne Solution: Personne p1=new Personne("Boutaib","bachir",23); Personne p2=new Personne("Boutaib","bachir",23); if(p1.equals(p2)) System.out.println("egaux"); else System.out.println("pas egaux"); //mais il faut redéfinir la méthode equals dans la classe Personne (voir la page suivante) 40
  • 41. Solution (suite) public boolean equals(Object o) { Personne p=(Personne)o; if(!this.nom.equals(p.nom)) return false; if(!this.prenom.equals(p.prenom)) return false; if(this.age!=p.age) return false; return true; } /* ou bien 2eme méthode public boolean equals(Object o) { Personne p=(Personne)o; return this.nom.equals(p.nom)&&this.prenom.equals(p.prenom)&&this.age==p.age;*/ } 41
  • 42. 8.4 Clonage  Mécanisme qui permet de construire une copie (sûre) de l'objet, pour conserver l'état initial d'un objet  Pour pouvoir être clonée, une classe doit implémenter l'interface Cloneable. Celle-ci indique que la classe peut réécrire la méthode clone() héritée de la classe Object afin que ses instances puissent procéder à une copie de ses attributs vers une nouvelle instance Exemple : Personne p1=new Personne("boutaib","bachir",27); Personne p2=p1; p2.nom= "faouzi"; System.out.println(p1.nom) /* il affiche faouzi puisque p1 et p2 référencent même objet pour créer deux objets de références différentes on doit changer l’instruction Personne p2=p1; par Personne p2=p1.clone(); et redéfinir la méthode clone() dans la classe Personne qui implémente l'interface Cloneable */ 42
  • 43. Solution (méthode clone()) class Personne implements Cloneable{ … //1ere methode en utilisant try et catch pour traiter les erreurs de clonage protected Personne clone() { Personne p=null; try{ p=(Personne) super.clone(); } catch(CloneNotSupportedException e){ System.out.println("erreur de clonage "+e.getMessage()); } return p; } /*2eme methode en utilisant throws pour traiter les erreurs de clonage(voir plus loin) protected Personne clone() throws CloneNotSupportedException { return (Personne) super.clone();*/ } 43
  • 44. 8.5 Exercice 1. Créer une classe nommée Tableau pour la gestion de tableaux d’objets. Elle aura les caractéristiques suivantes :  Un champ privé donnees, de type tableau d’Object.  Un champ privé nbElts, entier, c’est le nombre d’éléments dans la tableau.  Un constructeur admettant un argument entier, le nombre nb d’éléments du tableau.  Une méthode public int size() renvoyant renvoyant le nombre d’éléments dans la tableau.  Une méthode public int indexOf(Object elem) qui renvoie l’indice dans le tableau de l’objet dont une référence est passée en argument. On se servira, pour les comparaisons, de la méthode boolean equals(Object elt) héritée d’Object.  Une méthode public Object get(int index) qui renvoie une référence sur l’objet stocké à l’indice index.  Une méthode public void add(Object element) qui ajoute l’objet référencé par element à la dernière indice . 2. Ajouter la méthode nommée void modifierNomPrenom(String nom, String prenom) à la classe Personne qui change le nom et prenom de la personne courante. 44
  • 45. Exercice(suite) 3. Créer une classe TableauMain, ne contenant qu’une méthode main(). Dans cette dernière, créer un Tableau de 6 cases, nommé par exemple tab, puis créer une personne, nommé par exemple p("A", "A",22). Effectuer ensuite les opérations suivantes : tab.add(p); p.modifierNomPrenom("B", "B"); tab.add(p); p.modifierNomPrenom("C", "C"); tab.add(p); System.out.println("index de p: "+tab.indexOf(p)); // Puis afficher les différents éléments du tableau. Le résultat vous semble-t-il conforme à vos attentes? 45