Vous êtes sur la page 1sur 13

Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique

et de Recherche Scientifique

P.O.O (Java)
TP3

Exercice 1 :

Les établissements universitaires comportent souvent les catégories suivantes :


étudiant, enseignant et administrateur. Ces trois catégories se caractérisent
essentiellement par :
 ncin, nom, prenom, adresse (numero, rue, code_postal, ville) et email
(caractéristiques communes).
 niveau_scolaire (caractéristique spécifique à l’étudiant).
 grade, departement (caractéristiques spécifiques à l’enseignant).
 service (caractéristique spécifique à l’administrateur).

Chaque classe contient un constructeur sans paramètre et un constructeur avec


paramètres.

Travail à faire :
Réaliser un programme java qui permet de :
 Créer des objets de type Etudiant, Enseignant et Administrateur avec un
constructeur sans paramètre.
 Créer des objets de type Etudiant, Enseignant et Administrateur avec un
constructeur paramétré.
 Afficher les informations de ces objets par l’utilisation de la méthode toString().
 Afficher le nombre total du personnel.
 Afficher le nombre du personnel par catégorie.

Remarque : veuillez utiliser les concepts fondamentaux de la programmation orienté


objet afin d’optimiser votre programme. Précisez l’avantage principal de/des
concept(s) utilisés.

1/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

Correction :

La classe Adresse :

package exercice1;
public class Adresse {
public int numero;
public String rue;
public int code_postal;
public String ville;

public Adresse() {

public Adresse(int numero, String rue, int code_postal, String ville)


{
this.numero = numero;
this.rue = rue;
this.code_postal = code_postal;
this.ville = ville;
}

@Override
public String toString() {
return "[numero=" + numero + ", rue=" + rue + ", code_postal="
+ code_postal + ", ville=" + ville + "]";
}

Il faut utiliser la notion d’héritage qui nous permet d’éviter la redondance des données.
La classe Personne :

package exercice1;

public class Personne {


public long ncin;
public String nom, prenom;
public Adresse adresse;
public static int comptePer;

public Personne(long ncin, String nom, String prenom, Adresse


adresse) {
this.ncin = ncin;
this.nom = nom;
this.prenom = prenom;
this.adresse = adresse;
comptePer++;
}

2/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

public Personne() {
comptePer++;

@Override
public String toString() {
return "Personne [ncin=" + ncin + ", nom=" + nom + ", prenom="
+ prenom + ", adresse=" + adresse + "]";
}

La classe Etudiant :

package exercice1;
public class Etudiant extends Personne {
public String niveau_scolaire;
public static int compteEtu;

public Etudiant() {
compteEtu++;
}

public Etudiant(long ncin, String nom, String prenom, Adresse


adresse, String niveau_scolaire) {
super(ncin, nom, prenom, adresse);
this.niveau_scolaire = niveau_scolaire;
compteEtu++;
}

@Override
public String toString() {
return "Etudiant : " + super.toString() + " [niveau_scolaire="
+ niveau_scolaire + "]";
}
}

La classe Enseignant :

package exercice1;
public class Enseignant extends Personne {
public String grade;
public String departement;

public static int compteEns;

public Enseignant() {
compteEns++;
}

3/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

public Enseignant(long ncin, String nom, String prenom, Adresse


adresse, String grade, String departement) {
super(ncin, nom, prenom, adresse);
this.grade = grade;
this.departement = departement;
compteEns++;
}

@Override
public String toString() {
return "Enseignant : " + super.toString() + "[grade=" + grade +
", departement=" + departement + "]";
}
}

La classe Administrateur :

package exercice1;
public class Administrateur extends Personne {
public String service;

public static int compteAdm;

public Administrateur(long ncin, String nom, String prenom, Adresse


adresse, String service) {
super(ncin, nom, prenom, adresse);
this.service = service;
compteAdm++;
}

public Administrateur() {
compteAdm++;
}

@Override
public String toString() {

return "Administrateur : " + super.toString() + " [ service=" +


service + "]";
}

La classe Test :

package exercice1;
public class Test {
public static void main(String[] args) {
Enseignant en1 = new Enseignant();
Adresse adr_en1 = new Adresse(200, "Rue de liberté", 1002,
"Tunis");

4/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

en1.adresse = adr_en1;
en1.departement = "GLSI";
en1.grade = "Assistant";
en1.ncin = 12345678;
en1.nom = "mbarki";
en1.prenom = "asma";

Enseignant en2 = new Enseignant();


Adresse adr_en2 = new Adresse(500, "Rue des fleurs", 1822,
"Ariana");
en2.adresse = adr_en2;
en2.departement = "GLSI";
en2.grade = "Maitre assistant";
en2.ncin = 0512450210;
en2.nom = "Abbes";
en2.prenom = "Fethi";

Etudiant et1 = new Etudiant();


Administrateur ad1 = new Administrateur();
Adresse adr_et1 = new Adresse(20, "Rue des mines", 1002,
"Tunis");
et1.adresse = adr_et1;
et1.niveau_scolaire = "2IRS2";
et1.ncin = 1256544;
et1.nom = "bahri";
et1.prenom = "samir";

Adresse adresse1 = new Adresse(28, "Rue de java", 1002,


"Tunis");
ad1.adresse = adresse1;
ad1.ncin = 10023562;
ad1.nom = "yahia";
ad1.prenom = "mohamed";
ad1.service = "finance";

Adresse adresse2 = new Adresse(100, "rue Palestine", 2000,


"Ariana");
Etudiant et2 = new Etudiant(12013055, "Soltani", "Amira",
adresse2, "2IRS");

Adresse adresse3 = new Adresse(22, "rue Ibn Charaf", 3000, "Ben


Arous");
Enseignant en3 = new Enseignant(12456542, "Sahbani", "Hana",
adresse3, "Professeur", "GLSI");

Adresse adresse4 = new Adresse(99, "rue Tahar Haddad", 4000,


"Manouba");
Administrateur ad2 = new Administrateur(15762002, "Baldi",
"Ali", adresse4, "finance");

System.out.println("Nombre des enseignants : " +


Enseignant.compteEns);

5/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

System.out.println("Nombre des étudiants : " +


Etudiant.compteEtu);
System.out.println("Nombre des administrateurs : " +
Administrateur.compteAdm);
System.out.println("Nombre total : " + Personne.comptePer);

System.out.println(en1);
System.out.println(en2);
System.out.println(et1);
System.out.println(et2);
System.out.println(en3);
System.out.println(ad1);
System.out.println(ad2);
}

Exercice 2 :

Réaliser un programme java qui permet de calculer la moyenne d’un étudiant. En fait,
un objet de type Etudiant se caractérise par : ncin, nom, prenom, email,
niveau_scolaire, 5 notes et moyenne. Par ailleurs, les attributs de la classe Etudiant
ne sont pas accessibles dans une autre classe.

Pour tester le programme, ajouter la classe Test contenant la méthode « main » afin
de :

 Créer deux objets de type Etudiant dont un doit utiliser un constructeur avec
paramètre.
 Afficher toutes les données de chaque objet.

Remarque :
 On ne peut pas modifier la valeur de ncin après la création de l’objet.
 Le nom et la première lettre de prénom de chaque étudiant doivent être affichés
en majuscule.

Correction :
La classe Etudiant :

package exercice2;
import java.util.Arrays;

public class Etudiant {

6/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

private long ncin;


private String nom, prenom;
private String niveau_scolaire;
private String email;
private float[] notes;
private float moyenne;

public Etudiant(long ncin, String nom, String prenom, String


niveau_scolaire, String email, float[] notes) {
this.ncin = ncin;
this.nom = nom;
this.prenom = prenom;
this.niveau_scolaire = niveau_scolaire;
this.email = email;
this.notes = notes;
}

public String getNom() {


return nom;
}

public void setNom(String nom) {


this.nom = nom;
}

public String getPrenom() {


return prenom;
}

public void setPrenom(String prenom) {


this.prenom = prenom;
}

public String getNiveau_scolaire() {


return niveau_scolaire;
}

public void setNiveau_scolaire(String niveau_scolaire) {


this.niveau_scolaire = niveau_scolaire;
}

public String getEmail() {


return email;
}

public void setEmail(String email) {


this.email = email;
}

public float[] getNotes() {


return notes;
}

7/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

public void setNotes(float[] notes) {


this.notes = notes;
}

public float getMoyenne() {


return moyenne;
}

public void setMoyenne(float moyenne) {


this.moyenne = moyenne;
}

// le ncin en mode lecture


public long getNcin() {
return ncin;
}

public float calculerMoyenne() {


float somme = 0;
for (float note : notes) {
somme += note;
}
int nombre = notes.length;
moyenne = somme / nombre;
return moyenne;
}

// public static String prenomPremiereLettre(String prenom) {


// String premierelettre = String.valueOf(prenom.charAt(0));
// premierelettre = premierelettre.toUpperCase();
// String reste = prenom.substring(1);
// prenom = premierelettre + reste;
// return prenom;
//}

public static String premiere(String prenom) {


// Character p1 = prenom.charAt(0);
// String p11 = p1.toString();
// prenom = prenom.replace(p11, p11.toUpperCase());
prenom = prenom.substring(0, 1).toUpperCase() +
prenom.substring(1);
return prenom;
}

@Override
public String toString() {
return "Etudiant [ncin=" + ncin + ", nom=" + nom + ", prenom="
+ prenom + ", niveau_scolaire=" + niveau_scolaire
+ ", email=" + email + ", notes=" +
Arrays.toString(notes) + ", moyenne=" + moyenne + "]";
}
}

8/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

La classe Test :

package exercice2;
import java.text.DecimalFormat;

public class Test {


private static final DecimalFormat df = new DecimalFormat("0.00");
public static void main(String[] args) {
float[] notes1 = { 12, 13, 10, 08.5f, 15.75f, 11 };
// float[] notes2 =new float[5];
// notes2[0]=12;
Etudiant et1 = new Etudiant(19564720, "ben mahjoub", "mohamed",
"2IRS1", "mounirb@gmail.com", notes1);
et1.setNom(et1.getNom().toUpperCase());
et1.setPrenom(Etudiant.premiere(et1.getPrenom()));

et1.calculerMoyenne();
System.out.println(et1);

float[] notes2 = { 18, 16, 19, 13.5f, 17.5f, 17 };


Etudiant et2 = new Etudiant(10213654, "thabet", "ali", "2IRS2",
"thabetali@gmail.com", notes2);
et2.setNom(et2.getNom().toUpperCase());
// et2.prenom = prenomPremiereLettre(et2.prenom);
et2.setPrenom(Etudiant.premiere(et2.getPrenom()));

// comment arrondir la moyenne à deux chiffres après la virgule


// System.out.println("la moyenne (2 chiffres) :
// "+df.format(et2.calculerMoyenne()));
String m = df.format(et2.calculerMoyenne());
m = m.replace(',', '.');
et2.setMoyenne(Float.parseFloat(m));
System.out.println(et2);
}
}

Exercice 3 :

Réaliser un programme java qui permet d’effectuer les opérations suivantes :


addition, soustraction, multiplication et division. La saisie de deux chiffres et de
l’opérateur (+ ou – ou * ou /) sera réalisé au niveau de la console. Le programme
doit fonctionner selon le modèle suivant :

Entrez le 1er chiffre :


10
Entrez le 2ème chiffre :
20
Entrez l’opérateur :

9/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

+
Le résultat est : 30

Remarque : l’utilisateur peut réaliser une ou plusieurs opérations.

Correction :
La classe Calculatrice :

package exercice3;
public class Calculatrice {
public float a,b,c;
public float calculer(float aa,float bb, String operateur) {
a =aa;
b=bb;
switch(operateur) {
case "+" : c = a+b; break;
case "-" : c = a-b; break;
case "*" : c = a*b; break;
case "/" : c = a/b; break;
}
return c;
}
}

La classe Test :

package exercice3;
import java.util.Scanner;

public class Test {

public static void main(String[] args) {


float a=0 ;
do {
Calculatrice cal = new Calculatrice();
Scanner sc = new Scanner(System.in);
System.out.println("Entrez le nombre 1 : ");
a = sc.nextFloat();

10/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

if (a<0) {
System.out.println("Programme terminé !");
System.exit(0);
}
System.out.println("Entrez le nombre 2 : ");
float b = sc.nextFloat();
System.out.println("Entrez l'opérateur : ");
String op = sc.next();
cal.calculer(a, b, op);
System.out.println("le résultat est : "+cal.c);
} while (true);
}
}

Exercice 4 :

Écrire une méthode merge qui prend comme paramètre deux tableaux contenant
des éléments de type int. La méthode doit renvoyer un nouveau tableau
d'entiers int qui contient les éléments des deux tableaux reçus en paramètre
intercalés.
Soit s1, s2, s3, ..., sm les éléments du premier tableau et t1, t2, t3, ..., tn les éléments du
second tableau.
Les éléments du tableau renvoyé sont s1, t1, s2, t2, s3, t3, etc.
Faites bien attention que les deux tableaux n'ont pas la même longueur.

Correction :

Correction :

 Solution 1
package tp2;

public class Exercice5 {


public int[] merge(int t1[], int t2[]) {
int l1 = t1.length;
int l2 = t2.length;
int taille1 = l1 * 2;
int taille2 = l2 * 2;
int l3 = l1 + l2;

11/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

int t3[] = new int[l3];


if (l1 > l2) {
for (int i = 0, j = 0; j < taille2; i++, j++) {
t3[j] = t1[i];
t3[++j] = t2[i];
}
for (int i = l2, j = taille2; j < l3; j++, i++) {
t3[j] = t1[i];
}
}
else {
for (int i = 0, j = 0; j < taille1; i++, j++) {
t3[j] = t1[i];
t3[++j] = t2[i];
}
for (int i = l1, j = taille1; j < l3; j++, i++) {
t3[j] = t2[i];
}
}
return t3;
}

public static void main(String[] args) {


int t1[] = { 1, 2, 3, 4 };
int t2[] = { 100,200,300,400,500 };
Exercice5 ex = new Exercice5();
int t3[] = ex.merge(t1, t2);
for (int el : t3)
System.out.print(el + " ");
}
}

 Solution 2 (optimale) :
package tp2;

public class Exercice5bis {


public int[] merge(int[] tab1, int[] tab2) {
int[] res = new int[tab1.length + tab2.length];
int min = Math.min(tab1.length, tab2.length);
int j = 0;
// Intercalage
for (int i = 0; i < min; i++) {
res[j++] = tab1[i];
res[j++] = tab2[i];
}

// Ajout éléments du plus long tableau


for (int i = min; i < tab1.length; i++) {

12/13 Année Universitaire 2022/2023


Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique

res[j++] = tab1[i];
}
for (int i = min; i < tab2.length; i++) {
res[j++] = tab2[i];
}
return res;
}

public static void main(String[] args) {


int t1[] = { 1, 3, 5, 17 };
int t2[] = { 2, 4, 6, 8, 20 };
int t3[] = new Exercice5bis().merge(t1, t2);
for (int e : t3)
System.out.print(e + " ");
}
}

13/13 Année Universitaire 2022/2023

Vous aimerez peut-être aussi