POO-JAVA-partie-1.pdf

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
1 de 45

Recomendados

Cours de c por
Cours de cCours de c
Cours de cNada Riahi
3.5K vistas213 diapositivas
Exercice 2 java Héritage por
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java HéritageNadaBenLatifa
939 vistas4 diapositivas
Correction Examen 2016-2017 POO .pdf por
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfslimyaich3
414 vistas3 diapositivas
Programmation orientée objet en PHP 5 por
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Kristen Le Liboux
14K vistas69 diapositivas
Support POO Java Deuxième Partie por
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième PartieENSET, Université Hassan II Casablanca
25.7K vistas99 diapositivas
Fondamentaux java por
Fondamentaux javaFondamentaux java
Fondamentaux javaInes Ouaz
3K vistas117 diapositivas

Más contenido relacionado

La actualidad más candente

softCours design pattern m youssfi partie 9 creation des objets abstract fact... por
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...ENSET, Université Hassan II Casablanca
22.8K vistas30 diapositivas
POO Java Introduction por
POO Java IntroductionPOO Java Introduction
POO Java IntroductionMouna Torjmen
2K vistas21 diapositivas
POO Java Chapitre 4 Heritage et Polymorphisme por
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismeMouna Torjmen
4.6K vistas39 diapositivas
Python avancé : Interface graphique et programmation évènementielle por
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielleECAM Brussels Engineering School
4K vistas27 diapositivas
Python avancé : Lecture et écriture de fichiers por
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersECAM Brussels Engineering School
5.2K vistas39 diapositivas
Chapitre 2 classe et objet por
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
976 vistas12 diapositivas

La actualidad más candente(20)

POO Java Chapitre 4 Heritage et Polymorphisme por Mouna Torjmen
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et Polymorphisme
Mouna Torjmen4.6K vistas
Chapitre 2 classe et objet por Amir Souissi
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
Amir Souissi976 vistas
Chapitre8: Collections et Enumerations En Java por Aziz Darouichi
Chapitre8: Collections et Enumerations En JavaChapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En Java
Aziz Darouichi757 vistas
Chap3 Communication Inter Processus.pptx por ZohraQassimi
Chap3 Communication Inter Processus.pptxChap3 Communication Inter Processus.pptx
Chap3 Communication Inter Processus.pptx
ZohraQassimi79 vistas
Cours : les listes chainées Prof. KHALIFA MANSOURI por Mansouri Khalifa
Cours : les listes chainées  Prof. KHALIFA MANSOURI Cours : les listes chainées  Prof. KHALIFA MANSOURI
Cours : les listes chainées Prof. KHALIFA MANSOURI
Mansouri Khalifa8.9K vistas
Chapitre4: Pointeurs et références por Aziz Darouichi
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
Aziz Darouichi1.1K vistas
POO Java Chapitre 2 Encapsulation por Mouna Torjmen
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 Encapsulation
Mouna Torjmen1.4K vistas
Cours langage c por coursuniv
Cours langage cCours langage c
Cours langage c
coursuniv8.2K vistas
POO Java Chapitre 6 Exceptions por Mouna Torjmen
POO Java  Chapitre 6 ExceptionsPOO Java  Chapitre 6 Exceptions
POO Java Chapitre 6 Exceptions
Mouna Torjmen1.4K vistas
Chapitre3TableauxEnCppV2019 por Aziz Darouichi
Chapitre3TableauxEnCppV2019Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019
Aziz Darouichi358 vistas
PL/Sql et Sécurité des bases de données por smiste
PL/Sql et Sécurité des bases de donnéesPL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de données
smiste1.5K vistas
Android-Tp5 : web services por Lilia Sfaxi
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
Lilia Sfaxi5.6K vistas
Chapitre 5 classes abstraites et interfaces por Amir Souissi
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
Amir Souissi2K vistas

Similar a POO-JAVA-partie-1.pdf

Cours de C++, en français, 2002 - Cours 2.2 por
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
111 vistas94 diapositivas
Chapitre3 2013 POO por
Chapitre3 2013 POOChapitre3 2013 POO
Chapitre3 2013 POOSeif Eddine Attia
886 vistas26 diapositivas
Chapitre5: Classes et objets por
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
983 vistas142 diapositivas
Cours java smi 2007 2008 por
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
2.4K vistas272 diapositivas
Cours java smi 2007 2008 por
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
2.3K vistas272 diapositivas
Introspection reflection por
Introspection reflectionIntrospection reflection
Introspection reflectionEric Toguem
715 vistas19 diapositivas

Similar a POO-JAVA-partie-1.pdf(20)

Cours de C++, en français, 2002 - Cours 2.2 por Laurent BUNIET
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
Laurent BUNIET111 vistas
Chapitre5: Classes et objets por Aziz Darouichi
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
Aziz Darouichi983 vistas
Cours java smi 2007 2008 por Khalil Lechheb
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
Khalil Lechheb2.4K vistas
Cours java smi 2007 2008 por Khalil Lechheb
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
Khalil Lechheb2.3K vistas
Introspection reflection por Eric Toguem
Introspection reflectionIntrospection reflection
Introspection reflection
Eric Toguem715 vistas
JAVA-UIK-CHAP6-POO HERITAGE JAVA por Aymen Bedwivski
JAVA-UIK-CHAP6-POO HERITAGE JAVAJAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVA
Aymen Bedwivski873 vistas
Java uik-chap6-poo heritage v2 java por Amel Morchdi
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 java
Amel Morchdi1.2K vistas
Introduction à l’orienté objet en Python por Abdoulaye Dieng
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
Abdoulaye Dieng700 vistas
Chapitre 4 heritage et polymorphisme por Amir Souissi
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
Amir Souissi995 vistas
Héritage et Polymorphisme .pdf por AabidiHafid
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdf
AabidiHafid3 vistas
Chap 6 : classes et interfaces por Aziz Darouichi
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
Aziz Darouichi785 vistas
chapitre5-Classesabstraitesetinterfaces.pdf por Moez Moezm
chapitre5-Classesabstraitesetinterfaces.pdfchapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdf
Moez Moezm38 vistas
Interface collectionsinter por RYMAA
Interface collectionsinterInterface collectionsinter
Interface collectionsinter
RYMAA1.3K vistas

Más de YasushiTsubakik

POO-JAVA-partie3.pdf por
POO-JAVA-partie3.pdfPOO-JAVA-partie3.pdf
POO-JAVA-partie3.pdfYasushiTsubakik
26 vistas29 diapositivas
POO-JAVA-partie-2.pdf por
POO-JAVA-partie-2.pdfPOO-JAVA-partie-2.pdf
POO-JAVA-partie-2.pdfYasushiTsubakik
11 vistas40 diapositivas
UML-DiagrammesSequence.pdf por
UML-DiagrammesSequence.pdfUML-DiagrammesSequence.pdf
UML-DiagrammesSequence.pdfYasushiTsubakik
9 vistas25 diapositivas
Support de cours Conception orientée objets - partie 1.pdf por
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
49 vistas143 diapositivas
UML-DiagrammesEtatsTransitions.pdf por
UML-DiagrammesEtatsTransitions.pdfUML-DiagrammesEtatsTransitions.pdf
UML-DiagrammesEtatsTransitions.pdfYasushiTsubakik
2 vistas15 diapositivas
UML-DiagrammesEtatsTransitionsSuite.pdf por
UML-DiagrammesEtatsTransitionsSuite.pdfUML-DiagrammesEtatsTransitionsSuite.pdf
UML-DiagrammesEtatsTransitionsSuite.pdfYasushiTsubakik
2 vistas14 diapositivas

Más de YasushiTsubakik(20)

Support de cours Conception orientée objets - partie 1.pdf por YasushiTsubakik
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
YasushiTsubakik49 vistas
UML-DiagrammesEtatsTransitionsSuite.pdf por YasushiTsubakik
UML-DiagrammesEtatsTransitionsSuite.pdfUML-DiagrammesEtatsTransitionsSuite.pdf
UML-DiagrammesEtatsTransitionsSuite.pdf
YasushiTsubakik2 vistas
Support de cours Conception orientée objets - partie 2.pdf por YasushiTsubakik
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
YasushiTsubakik15 vistas
UML-AssociationsDiverses-Heritage.pdf por YasushiTsubakik
UML-AssociationsDiverses-Heritage.pdfUML-AssociationsDiverses-Heritage.pdf
UML-AssociationsDiverses-Heritage.pdf
YasushiTsubakik3 vistas
UML-diagramme de classe Operations.pdf por YasushiTsubakik
UML-diagramme de classe Operations.pdfUML-diagramme de classe Operations.pdf
UML-diagramme de classe Operations.pdf
YasushiTsubakik13 vistas
Développement Web- PHP (partie I).pdf por YasushiTsubakik
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdf
YasushiTsubakik8 vistas
Développement Web- PHP (partie II).pdf por YasushiTsubakik
Développement Web- PHP (partie II).pdfDéveloppement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdf
YasushiTsubakik9 vistas
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdf por YasushiTsubakik
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
YasushiTsubakik60 vistas
gestion projet Planification PERT.pdf por YasushiTsubakik
gestion projet Planification PERT.pdfgestion projet Planification PERT.pdf
gestion projet Planification PERT.pdf
YasushiTsubakik202 vistas
Introduction Cours Gestion de projets.pdf por YasushiTsubakik
Introduction Cours Gestion de projets.pdfIntroduction Cours Gestion de projets.pdf
Introduction Cours Gestion de projets.pdf
YasushiTsubakik75 vistas

Último

ONU.pdf por
ONU.pdfONU.pdf
ONU.pdfChristopheFontaine13
34 vistas2 diapositivas
Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de... por
Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de...Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de...
Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de...M2i Formation
21 vistas36 diapositivas
Éléments visuels.pdf por
Éléments visuels.pdfÉléments visuels.pdf
Éléments visuels.pdfStagiaireLearningmat
31 vistas2 diapositivas
Cours Audit General 2019 (1).prof tatouti .pdf por
Cours Audit  General 2019 (1).prof tatouti .pdfCours Audit  General 2019 (1).prof tatouti .pdf
Cours Audit General 2019 (1).prof tatouti .pdfAbdelghani19
8 vistas230 diapositivas
FORMATION SUR LES PICTOGRAMMES DE SECURITE KKW.pptx por
FORMATION SUR LES PICTOGRAMMES DE SECURITE KKW.pptxFORMATION SUR LES PICTOGRAMMES DE SECURITE KKW.pptx
FORMATION SUR LES PICTOGRAMMES DE SECURITE KKW.pptxKOUADIO WILLIAMS KOUAME
18 vistas17 diapositivas
Abréviations et symboles (1).pdf por
Abréviations et symboles (1).pdfAbréviations et symboles (1).pdf
Abréviations et symboles (1).pdfStagiaireLearningmat
27 vistas2 diapositivas

Último(9)

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