0% ont trouvé ce document utile (0 vote)
4 vues8 pages

Approfondissement POO en Java 2024-2025

Ce document présente un travail pratique sur la programmation orientée objet en Java, utilisant IntelliJ IDEA et JDK 21. Il inclut des exercices sur la création de classes telles que Personne, Point, Individu, Mesure, et Livre, avec des méthodes pour manipuler et afficher des informations. Chaque exercice est accompagné de listings de code et d'explications sur les fonctionnalités implémentées.

Transféré par

zahraelamssane
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues8 pages

Approfondissement POO en Java 2024-2025

Ce document présente un travail pratique sur la programmation orientée objet en Java, utilisant IntelliJ IDEA et JDK 21. Il inclut des exercices sur la création de classes telles que Personne, Point, Individu, Mesure, et Livre, avec des méthodes pour manipuler et afficher des informations. Chaque exercice est accompagné de listings de code et d'explications sur les fonctionnalités implémentées.

Transféré par

zahraelamssane
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université cadi Ayyad P.O.

O JAVA avancée Année universitaire


FSSM ELBACHARI Essaid 2024-2025

TP N°02
Java : Approfondissement POO

Préparée par : LAMSSANE Fatima

Configuration
Pour ce travail, l’environnement de développement utilisé est IntelliJ IDEA, avec le JDK 21. Le
choix de ces outils permet d’assurer la compatibilité avec les fonctionnalités récentes de Java.

Figure 1 – Icône de IntelliJ IDEA

Implémentation :
Exercice 01 :
— Écrire une classe Personne permettant de décrire complètement une personne, avec les
informations de la phrase suivante : “M. Rafiq Ahmed est né en 1985, il est célibataire.”
1 public class Personne {
2 private String lastName;
3 private String firstName;
4 private int birthYear;
5 private boolean isSingle;
6

7 public Personne(String lastName, String firstName, int birthYear, boolean


isSingle) {
8 [Link] = lastName;
9 [Link] = firstName;
10 [Link] = birthYear;
11 [Link] = isSingle;
12 }
13 }
14

Listing 1 – Classe Personne

— Ajouter une méthode retourneInfos() qui retourne une chaîne de caractères simi-
laire à la phrase donnée.
1 public String retourneInfos() {
2 String status = isSingle ? "c libataire" : " m a r i (e)";

ISI 1 Documentation TP02 - JAVA


Université cadi Ayyad P.O.O JAVA avancée Année universitaire
FSSM ELBACHARI Essaid 2024-2025

3 return firstName + " " + lastName + " est n (e) en " + birthYear + ", il
/elle est " + status + ".";
4 }
5

Listing 2 – Méthode retourneInfos

— Écrire un programme qui déclare 3 variables de type Personne, crée 3 instances de per-
sonne et affiche leurs informations.
1 public static void main(String[] args) {
2 Personne p1 = new Personne("LAMSSANE", "Elhassan", 1979, false);
3 Personne p2 = new Personne("LAMSSANE", "Naima", 1982, false);
4 Personne p3 = new Personne("LAMSSANE", "Med Amine", 2006, true);
5

6 [Link]([Link]());
7 [Link]([Link]());
8 [Link]([Link]());
9 }
10

Listing 3 – Programme principal avec 3 instances

— Ajouter une méthode age() qui renvoie l’âge de l’individu en fonction d’une année donnée
en paramètre.
1 public int age(int currentYear) {
2 return currentYear - birthYear;
3 }
4

Listing 4 – Méthode age

— Ajouter à la classe Personne un attribut conjoint et examiner les conséquences.


1 private Personne conjoint; // Conjoint(e) de la personne
2

Listing 5 – Ajout de l’attribut conjoint

Conséquences : L’ajout de l’attribut conjoint nécessite de modifier la méthode re-


tourneInfos() pour afficher les informations du conjoint.
— Ajouter une méthode marier(Personne p) qui permet de marier une personne à
une autre.
1 public void marier(Personne p) {
2 if ([Link] && [Link]) {
3 [Link] = false;
4 [Link] = p;
5 [Link] = false;
6 [Link] = this;
7 }
8 }
9

Listing 6 – Méthode marier

ISI 2 Documentation TP02 - JAVA


Université cadi Ayyad P.O.O JAVA avancée Année universitaire
FSSM ELBACHARI Essaid 2024-2025

— Modifier la méthode retourneInfos() pour refléter le nom de mariage.


1 public String retourneInfos() {
2 if (conjoint != null) {
3 return "Mme " + [Link] + " n e " + lastName +
4 " est n e en " + birthYear + ", elle est m a r i e .";
5 } else {
6 String status = isSingle ? "c libataire" : " m a r i (e)";
7 return firstName + " " + lastName + " est n (e) en " + birthYear +
8 ", il/elle est " + status + ".";
9 }}
10

Listing 7 – Méthode retourneInfos modifiée

Exercice 02 :
— Définir une classe Point avec un constructeur.
1 public class Point {
2 private int x;
3 private int y;
4

5 public Point(int x, int y) {


6 this.x = x;
7 this.y = y;
8 }}
9

Listing 8 – Classe Point avec constructeur

— Ajouter des méthodes d’accès et de modification des coordonnées.


1 public int getX() {
2 return x;
3 }
4

5 public void setX(int x) {


6 this.x = x;
7 }
8

9 public int getY() {


10 return y;
11 }
12

13 public void setY(int y) {


14 this.y = y;
15 }
16

Listing 9 – Méthodes d’accès et de modification

— Ajouter une méthode deplacer() qui effectue une translation définie par les arguments.
1 public void deplacer(int dx, int dy) {
2 this.x += dx;
3 this.y += dy;}
4

Listing 10 – Méthode deplacer pour translation

ISI 3 Documentation TP02 - JAVA


Université cadi Ayyad P.O.O JAVA avancée Année universitaire
FSSM ELBACHARI Essaid 2024-2025

— Ajouter une méthode afficher() qui affiche les coordonnées du point.


1 public void afficher() {
2 [Link]("Point (" + x + ", " + y + ")");}
3

Listing 11 – Méthode afficher

— Ajouter une méthode toString() pour transformer un point en une chaîne de caractères
“(x,y)”.
1 @Override
2 public String toString() {
3 return "(" + x + ", " + y + ")";
4 }
5

Listing 12 – Méthode toString

— Écrire un programme principal pour tester la classe Point.


1 public static void main(String[] args) {
2 Point p = new Point(3, 4);
3 [Link](); // Affiche : Point (3, 4)
4 [Link]([Link]()); // Affiche : (3, 4)
5 [Link](2, 3);
6 [Link](); // Affiche : Point (5, 7)
7 }
8

Listing 13 – Programme principal de test

Exercice 03 :
— Définir une classe Individu composée d’un nom, d’une adresse, et d’un numéro de télé-
phone.
1 public class Individu {
2 private String nom;
3 private String adresse;
4 private String telephone;
5

6 public Individu(String nom, String adresse, String telephone) {


7 [Link] = nom;
8 [Link] = adresse;
9 [Link] = telephone;
10 }
11

12 public String getNom() {


13 return nom;
14 }
15

16 public void setNom(String nom) {


17 [Link] = nom;
18 }
19

20 public String getAdresse() {


21 return adresse;

ISI 4 Documentation TP02 - JAVA


Université cadi Ayyad P.O.O JAVA avancée Année universitaire
FSSM ELBACHARI Essaid 2024-2025

22 }
23

24 public void setAdresse(String adresse) {


25 [Link] = adresse;
26 }
27

28 public String getTelephone() {


29 return telephone;
30 }
31

32 public void setTelephone(String telephone) {


33 [Link] = telephone;
34 }
35 }
36

Listing 14 – Classe Individu

— Écrire une méthode pour afficher les informations de l’individu.


1 public void afficher() {
2 [Link]("Nom: " + nom);
3 [Link]("Adresse: " + adresse);
4 [Link](" T l p h o n e : " + telephone);
5 }
6

Listing 15 – Méthode afficher

Exercice 04 :
— Ajouter un compteur pour suivre le nombre d’objets créés.
1 import [Link];
2

3 public class Individu {


4 private static int nbIndividus = 0; // Compteur d'objets crees
5 private static Vector<Individu> listeIndividus = new Vector<>();
6 private String nom;
7 private String adresse;
8 private String telephone;
9

10 public Individu(String nom, String adresse, String telephone) {


11 [Link] = nom;
12 [Link] = adresse;
13 [Link] = telephone;
14 nbIndividus++;
15 [Link](this); // Ajouter l'individu a la liste}
16

17 public static int getNbIndividus() {


18 return nbIndividus;}
19 public static void afficherListeIndividus() {
20 for (Individu individu : listeIndividus) {
21 [Link]([Link] + " - " + [Link] + " -
" + [Link]);}}}
22

Listing 16 – Ajout du compteur et liste

ISI 5 Documentation TP02 - JAVA


Université cadi Ayyad P.O.O JAVA avancée Année universitaire
FSSM ELBACHARI Essaid 2024-2025

— Afficher le nombre d’individus créés.


1 public static void main(String[] args) {
2 Individu i1 = new Individu("ElHassan", "Safi", "0600000001");
3 Individu i2 = new Individu("Naima", "Safi", "0600000002");
4 Individu i3 = new Individu("Med Amine", "Safi", "0600000003");
5

6 [Link]("Nombre total d'individus c r s : " + Individu.


getNbIndividus());
7 [Link]();
8 }
9

Listing 17 – Affichage du nombre d’individus

Exercice 05 :
— Définir la classe Mesure avec ses attributs.
1 public class Mesure {
2 private int valeur; // Valeur de la mesure
3 private static final int MIN = -100; // Limite minimale
4 private static final int MAX = 100; // Limite maximale
5

6 // Attributs statiques pour suivre le nombre de mesures et la somme des


valeurs
7 private static int nbMesures = 0;
8 private static int sommeMesures = 0;
9

10 public Mesure(int val) {


11 if (val >= MIN && val <= MAX) {
12 [Link] = val;
13 nbMesures++;
14 sommeMesures += val;
15 } else {
16 [Link]("Mesure hors intervalle");
17 }
18 }
19

20 public static void afficherMoyenne() {


21 if (nbMesures > 0) {
22 double moyenne = (double) sommeMesures / nbMesures;
23 [Link]("La moyenne des " + nbMesures + " mesures est
: " + moyenne);
24 } else {
25 [Link](" Z r o mesures");
26 }
27 }
28 }
29

Listing 18 – Classe Mesure

ISI 6 Documentation TP02 - JAVA


Université cadi Ayyad P.O.O JAVA avancée Année universitaire
FSSM ELBACHARI Essaid 2024-2025

— Écrire la classe principale EntrerMesures pour tester l’application.


1 import [Link].*;
2

3 public class EntrerMesures {


4 public static void main(String[] args) throws IOException {
5 int valeur;
6 BufferedReader entree = new BufferedReader(new InputStreamReader(
[Link]));
7 do {
8 [Link]("Entrez une mesure : ");
9 valeur = [Link]([Link]());
10 if (valeur != 0) {
11 new Mesure(valeur);
12 }
13 } while (valeur != 0);
14

15 [Link]();
16 }
17 }
18

Listing 19 – Classe EntrerMesures

Exercice 06 :
— Définir la classe Livre avec ses attributs et ses constructeurs.
1 public class Livre {
2 private String auteur;
3 private String titre;
4 private int nbPages;
5 private String editeur;
6

7 private static int numLivre = 0; // Compteur de livres


8 private int numero; // N u m r o du livre
9

10 // Constructeur avec nombre de pages et diteur (optionnels)


11 public Livre(String auteur, String titre, int nbPages, String editeur) {
12 [Link] = auteur;
13 [Link] = titre;
14 [Link] = nbPages;
15 [Link] = editeur;
16 [Link] = ++numLivre;}
17

18 // Constructeur sans nombre de pages ni diteur


19 public Livre(String auteur, String titre) {
20 this(auteur, titre, 0, "Inconnu");}
21

22 @Override
23 public String toString() {
24 return "Livre #" + numero + " : " + titre + " par " + auteur +
25 (nbPages > 0 ? ", " + nbPages + " pages" : "") +
26 (editeur != null ? ", dit par " + editeur : "");}}
27

Listing 20 – Classe Livre

ISI 7 Documentation TP02 - JAVA


Université cadi Ayyad P.O.O JAVA avancée Année universitaire
FSSM ELBACHARI Essaid 2024-2025

— Écrire un programme principal pour tester la classe Livre.


1 public static void main(String[] args) {
2 Livre l1 = new Livre("Zahrae", "After the Sunset", 380, "Editor");
3 Livre l2 = new Livre("Zahrae", "Masacre bajo el Cobertizo");
4 Livre l3 = new Livre("Dan Brown", "Inferno", 642, "Jason Kaufman");
5

6 [Link]([Link]());
7 [Link]([Link]());
8 [Link]([Link]());
9 }
10

Listing 21 – Programme principal de test

ISI 8 Documentation TP02 - JAVA

Vous aimerez peut-être aussi