SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
TD2 Java
Exercice n°1
1. Définir une classe Personne contenant deux attributs privés : nom et prenom. Munir cette classe d'un constructeur permettant
l'initialisation de ses attributs et de la méthode toString
public class Personne {
protected String nom , prenom;
Personne(){nom="";prenom="";}
Personne(String s, String s1){nom=s;prenom=s1;}
public String toString(){return (getClass().getName()+":"+nom+" "+prenom); } }
2. Définir une classe Etudiant héritant de Personne et disposant d'un attribut privé numInscription, de type entier. Ajouter un
constructeur qui permet de créer un étudiant à partir de son nom, son prénom et son numéro d'inscription et la méthode
toString()
class Etudiant extends Personne{
private int numInscription;
Etudiant(){super(); numInscription=0;}
Etudiant(String s, String s1, int e){super(s,s1); numInscription=e;}
public String toString(){return (getClass().getName()+":"+nom+" "+prenom+" "+numInscription); } }
3. Compléter la classe Etudiants qui gère un ensemble d'étudiants et
changer les classes Etudiant et Personne en cas de besoin
class Etudiants
{ // attributs
private Etudiant [] listeEtudiants;
private int nbEtudiants ;
//constructeur, reçoit en paramètre la capacité max du tableau listeEtudiants
Etudiants (int n){// … }
// ajoute un étudiant dans le tableau s’il n’existe pas déjà et si le tableau
//n’est pas plein
void ajouterEtudiant (Etudiant e) {//….}
// retourne l'étudiant ayant le numéro d'inscription passé en paramètre et
// null sinon
Etudiant rechercherEtudiant (int num) {//…. }
// affiche les informations sur tous le étudiants dans le tableau
void listerEtudiants (){//….}
}
class Etudiants
{// attributs
private Etudiant [] listeEtudiants;
private int nbEtudiants ;
// constructeur, reçoit en paramètre la capacité max du tableau listeEtudiants
Etudiants (int n)
{listeEtudiants=new Etudiant[n];
nbEtudiants=0;}
boolean exist(Etudiant e)
{for (int i=0; i< listeEtudiants.length; i++)
if (listeEtudiants[i]==e) return true;
return false;}
// ajoute un étudiant dans le tableau s’il n’existe pas déjà et si le tableau n’est
// pas plein
void ajouterEtudiant (Etudiant e)
{if ( ! exist(e) ) listeEtudiants[++nbEtudiants] = e; }
Etudiant rechercherEtudiant (int num) {
for (int i=0; i<=nbEtudiants; i++)
{if((listeEtudiants[i]!=null)&&(listeEtudiants[i].getnumInscription())==num)
return listeEtudiants[i];}
return null;}
4. Ecrire une classe Test contenant la méthode main et dans laquelle on testera les méthodes de la classe Etudiants
public class test{
public static void main(String[] args) {
Etudiant et= new Etudiant ("Ali","Mohamed", 4);
Etudiant et1= new Etudiant ("Salah","Mohamed", 3);
Etudiants E=new Etudiants(3);
E.ajouterEtudiant(et);
E.ajouterEtudiant(et1);
E.listerEtudiants();
System.out.println(E.rechercherEtudiant(4).toString());}}
Exercice n°2
Écrire les classes nécessaires au fonctionnement du programme
suivant, en ne fournissant que les méthodes nécessaires à ce
fonctionnement :
class TestMetiers {
public static void main(String [] args) {
Personne[] personnes = new Personne[4];
personnes[0] = new Personne("Salah");
personnes[1] = new Forgeron("Ali");
personnes[2] = new Menuisier("Mohamed");
personnes[3] = new Forgeron("Amor");
for (int i=0 ; i<personnes.length ; i++)
System.out.println (personnes[i]);}
}
Sortie de ce programme :
Je suis Salah
Je suis Ali le forgeron
Je suis Mohamed le menuisier
Je suis Amor le forgeron
Solution:
public class Personne {
protected String prenom;
Personne(String s){prenom=s; }
public String toString(){return ("Je suis "+prenom); } }
class Forgeron extends Personne {
Forgeron(String s){super(s); }
public String toString(){return ("Je suis "+prenom+" le forgeron");
}}
class Menuisier extends Personne {
Menuisier(String s){super(s);}
public String toString(){return ("Je suis "+prenom+" le menuisier");
}}
Exercice n°3
Qu’obtient- on sur écran à l’exécution du programme suivant ?
interface Son { void parle(); }
abstract class Mammifere implements Son
{// Attributs
String nom, son;
int age;
Mammifere(String nom, String son, int age) // constructeur
{this.nom = nom;
this.son = son;
this.age = age; }
public void parle() // Méthode parle affiche le son d'un mammifère
{ System.out.println(son+this);}
abstract void vitesse(); // Méthode abstraite vitesse
public String toString() // Méthode toString redéfinie
{ return(" mon nom est "+nom +" j'ai "+age+" ans");}
}
class Homme extends Mammifere
{// Attributs
boolean marie;
Homme(String nom, String son, int age, boolean marie) // Constructeur
{super(nom, son, age);
this.marie = marie; }
void vitesse() // Implémentation de la méthode vitesse
{System.out.println("Je cours à une vitesse de 20km/h");}
public String toString() // Méthode toString redéfinie
{if (marie) return(super.toString()+" je suis marie");
Else return(super.toString()+ " je suis célibataire");
}
} // fin Homme
class Chien extends Mammifere
{ // Attributs
String race;
Chien(String nom, String son, int age, String race) // Constructeur
{super(nom, son, age);
this.race = race;}
void vitesse() // Implémentation de la méthode vitesse
{System.out.println("Je cours à une vitesse de 30km/h");}
public String toString() // Méthode toString redéfinie
{return(super.toString()+" j'appartient à la race des "+race);}
}
class Test{
public static void main(String [] args) {
Son []listeSons = new Son[2];
Mammifere []listeMammiferes = new Mammifere[2];
Homme h = new Homme("Ali", "Bonjour", 20, true);
Chien ch = new Chien("Snoopy", "Wouah!", 2,"caniches");
listeSons[0] = h;
listeSons[1] = ch;
listeMammiferes[0] = h;
listeMammiferes[1] = ch;
for (int i=0; i<listeSons.length; i++)
{ // la méthode parle est polymorphe
listeSons[i].parle();
// la méthode vitesse est polymorphe
listeMammiferes[i].vitesse(); }
} // fin main
} // fin Test
Solution :
Bonjour mon nom est Ali j'ai 20 ans je suis marie
Je cours à une vitesse de 20km/h
Wouah! mon nom est Snoopy j'ai 2 ans j'appartient à la race des caniches
Je cours à une vitesse de 30km/h
La classe Robot modélise l'état et le comportement de robots virtuels. Chaque robot correspond à un objet qui
est une instance de cette classe. Chaque robot :
• a un nom (attribut nom : chaîne de caractères)
• a une position : donnée par les attributs entiers x et y, sachant que x augmente en allant vers l'Est et y
augmente en allant vers le Nord,
• a une direction : donnée par l'attribut direction qui prend une des valeurs "Nord", "Est", "Sud" ou "Ouest"
• peut avancer d'un pas en avant : avec la méthode sans paramètre avance()
• peut tourner à droite de 90° pour changer de direction (si sa direction était "Nord" elle devient "Est", si c'était
"Est" elle devient "Sud", etc.) : avec la méthode sans paramètre droite(). Les robots ne peuvent pas tourner à
gauche.
• peut afficher son état en détail (avec de simples System.out.println())
Le nom, la position et la direction d'un robot lui sont donnés au moment de sa création. Le nom est obligatoire
mais on peut ne pas spécifier la position et la direction, qui sont définis par défaut à (0,0) et "Est".
Exercice n°4
Travail à faire:
1) Écrire les instructions Java qui permettent de définir la classe Robot,
public class Robot
{ private String nom;
private int x;
private int y;
private String direction;
public Robot(String nom)
{ this.nom = nom;
x = y = 0;
direction = "Est"; }
public Robot(String nom, int x, int y, String direction)
{ this(nom);
this.x = x;
this.y = y;
if (direction.equals("Nord") || direction.equals("Sud")||
direction.equals("Ouest"))
this.direction = direction; // garder "Est" si direction invalide
}
/* avance d'un pas */
public void avance()
{ if (direction.equals("Nord")) y++;
else if (direction.equals("Est")) x++;
else if (direction.equals("Sud")) y--;
else // (direction.equals("Ouest")) x--; }
/* tourne à droite de 90° */
public void droite()
{ if (direction.equals("Nord"))
direction = "Est";
else if (direction.equals("Est"))
direction = "Sud";
else if (direction.equals("Sud"))
direction = "Ouest";
else // (direction.equals("Ouest"))
direction = "Nord";
}
/* affiche l'état du robot */
public void afficher()
{ System.out.println("nom : " + nom);
System.out.println("position : (" + x + "," + y +")");
System.out.println("direction : " + direction);
}
}
2) On veut améliorer ces robots en en créant une Nouvelle Génération, les RobotNG qui ne remplacent pas les anciens robots mais
peuvent cohabiter avec eux. Les RobotNG savent faire la même chose mais aussi :
• avancer de plusieurs pas en une seule fois grâce à une méthode avance() qui prend en paramètre le nombre de pas
• tourner à gauche de 90° grâce à la méthode gauche()
• faire demi-tour grâce à la méthode demiTour()
Écrire cette nouvelle classe en spécialisant celle de la première question, sans modifier celle-ci : les nouvelles méthodes appellent les
anciennes méthodes pour implémenter le nouveau comportement : avancer de n pas se fait en avançant de 1 pas n fois, « tourner à
gauche » se fait en tournant 3 fois à droite, faire demi-tour se fait en tournant 2 fois
class RobotNG extends Robot
{
public RobotNG(String nom)
{ super(nom); }
public RobotNG(String nom, int x, int y, String direction)
{ super(nom, x, y, direction); }
/**
* avance de plusieurs pas
* @param pas le nombre de pas
*/
public void avance(int pas)
{ for (int i = 0 ; i < pas ; ++i) {
avance(); }
}
/** * tourne à gauche de 90° */
public void gauche()
{
droite();
droite();
droite();
}
/** * fait demi-tour */
public void demiTour()
{
droite();
droite();
}
}

Contenu connexe

Similaire à correctionTD2JAVA.pdf

Librairies Java qui changent la vie
Librairies Java qui changent la vieLibrairies Java qui changent la vie
Librairies Java qui changent la viecluelessjoe
 
Correction md2 fabien orienté object
Correction md2 fabien orienté objectCorrection md2 fabien orienté object
Correction md2 fabien orienté objectyahyaoui hamdi
 
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
 
16-Concurrence-APIs-Concurrentes.pdf
16-Concurrence-APIs-Concurrentes.pdf16-Concurrence-APIs-Concurrentes.pdf
16-Concurrence-APIs-Concurrentes.pdfPatiento Del Mar
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptxSafaeLhr1
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Rahma Boufalgha
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfacesAmir Souissi
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfslimyaich3
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDidier Plaindoux
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage ccoursuniv
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage Ccoursuniv
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdfAabidiHafid
 
Lect14 dev2
Lect14 dev2Lect14 dev2
Lect14 dev2moisko
 

Similaire à correctionTD2JAVA.pdf (20)

Librairies Java qui changent la vie
Librairies Java qui changent la vieLibrairies Java qui changent la vie
Librairies Java qui changent la vie
 
Correction md2 fabien orienté object
Correction md2 fabien orienté objectCorrection md2 fabien orienté object
Correction md2 fabien orienté object
 
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
 
16-Concurrence-APIs-Concurrentes.pdf
16-Concurrence-APIs-Concurrentes.pdf16-Concurrence-APIs-Concurrentes.pdf
16-Concurrence-APIs-Concurrentes.pdf
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptx
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02
 
Javascript mémo.pdf
Javascript  mémo.pdfJavascript  mémo.pdf
Javascript mémo.pdf
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Part1
Part1Part1
Part1
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
Hibernate
HibernateHibernate
Hibernate
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvements
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage c
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage C
 
Python avancé : Tuple et objet
Python avancé : Tuple et objetPython avancé : Tuple et objet
Python avancé : Tuple et objet
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdf
 
Lect14 dev2
Lect14 dev2Lect14 dev2
Lect14 dev2
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
ExJava.pdf
ExJava.pdfExJava.pdf
ExJava.pdf
 

Plus de MbarkiIsraa

correctionTD-1-vhdl2947.pptx
correctionTD-1-vhdl2947.pptxcorrectionTD-1-vhdl2947.pptx
correctionTD-1-vhdl2947.pptxMbarkiIsraa
 
Chapitre3_Partie1.pdf
Chapitre3_Partie1.pdfChapitre3_Partie1.pdf
Chapitre3_Partie1.pdfMbarkiIsraa
 
Chapitre2_Partie1.pdf
Chapitre2_Partie1.pdfChapitre2_Partie1.pdf
Chapitre2_Partie1.pdfMbarkiIsraa
 
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdfMbarkiIsraa
 
support_cours.pdf
support_cours.pdfsupport_cours.pdf
support_cours.pdfMbarkiIsraa
 
c h02EspaceProbTr.pdf
c h02EspaceProbTr.pdfc h02EspaceProbTr.pdf
c h02EspaceProbTr.pdfMbarkiIsraa
 
Ordonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdfOrdonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdfMbarkiIsraa
 
correctionTD-2-vhdl2949.pptx
correctionTD-2-vhdl2949.pptxcorrectionTD-2-vhdl2949.pptx
correctionTD-2-vhdl2949.pptxMbarkiIsraa
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfMbarkiIsraa
 
Chapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdfChapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdfMbarkiIsraa
 
Complexité_ENSI_2011.ppt
Complexité_ENSI_2011.pptComplexité_ENSI_2011.ppt
Complexité_ENSI_2011.pptMbarkiIsraa
 
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdfDiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdfMbarkiIsraa
 
Correction-TD1.pdf
Correction-TD1.pdfCorrection-TD1.pdf
Correction-TD1.pdfMbarkiIsraa
 
UML.Objet.4pp.pdf
UML.Objet.4pp.pdfUML.Objet.4pp.pdf
UML.Objet.4pp.pdfMbarkiIsraa
 

Plus de MbarkiIsraa (19)

NP-complet.ppt
NP-complet.pptNP-complet.ppt
NP-complet.ppt
 
Format.pptx
Format.pptxFormat.pptx
Format.pptx
 
correctionTD-1-vhdl2947.pptx
correctionTD-1-vhdl2947.pptxcorrectionTD-1-vhdl2947.pptx
correctionTD-1-vhdl2947.pptx
 
PCD YasBas.pptx
PCD YasBas.pptxPCD YasBas.pptx
PCD YasBas.pptx
 
PLNE.pptx
PLNE.pptxPLNE.pptx
PLNE.pptx
 
Chapitre3_Partie1.pdf
Chapitre3_Partie1.pdfChapitre3_Partie1.pdf
Chapitre3_Partie1.pdf
 
Chapitre2_Partie1.pdf
Chapitre2_Partie1.pdfChapitre2_Partie1.pdf
Chapitre2_Partie1.pdf
 
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
 
support_cours.pdf
support_cours.pdfsupport_cours.pdf
support_cours.pdf
 
c h02EspaceProbTr.pdf
c h02EspaceProbTr.pdfc h02EspaceProbTr.pdf
c h02EspaceProbTr.pdf
 
Ordonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdfOrdonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdf
 
prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
 
correctionTD-2-vhdl2949.pptx
correctionTD-2-vhdl2949.pptxcorrectionTD-2-vhdl2949.pptx
correctionTD-2-vhdl2949.pptx
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
 
Chapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdfChapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdf
 
Complexité_ENSI_2011.ppt
Complexité_ENSI_2011.pptComplexité_ENSI_2011.ppt
Complexité_ENSI_2011.ppt
 
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdfDiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
 
Correction-TD1.pdf
Correction-TD1.pdfCorrection-TD1.pdf
Correction-TD1.pdf
 
UML.Objet.4pp.pdf
UML.Objet.4pp.pdfUML.Objet.4pp.pdf
UML.Objet.4pp.pdf
 

Dernier

GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...Institut de l'Elevage - Idele
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfSophie569778
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...Institut de l'Elevage - Idele
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...Institut de l'Elevage - Idele
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 

Dernier (20)

GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 

correctionTD2JAVA.pdf

  • 2. Exercice n°1 1. Définir une classe Personne contenant deux attributs privés : nom et prenom. Munir cette classe d'un constructeur permettant l'initialisation de ses attributs et de la méthode toString public class Personne { protected String nom , prenom; Personne(){nom="";prenom="";} Personne(String s, String s1){nom=s;prenom=s1;} public String toString(){return (getClass().getName()+":"+nom+" "+prenom); } } 2. Définir une classe Etudiant héritant de Personne et disposant d'un attribut privé numInscription, de type entier. Ajouter un constructeur qui permet de créer un étudiant à partir de son nom, son prénom et son numéro d'inscription et la méthode toString() class Etudiant extends Personne{ private int numInscription; Etudiant(){super(); numInscription=0;} Etudiant(String s, String s1, int e){super(s,s1); numInscription=e;} public String toString(){return (getClass().getName()+":"+nom+" "+prenom+" "+numInscription); } }
  • 3. 3. Compléter la classe Etudiants qui gère un ensemble d'étudiants et changer les classes Etudiant et Personne en cas de besoin class Etudiants { // attributs private Etudiant [] listeEtudiants; private int nbEtudiants ; //constructeur, reçoit en paramètre la capacité max du tableau listeEtudiants Etudiants (int n){// … } // ajoute un étudiant dans le tableau s’il n’existe pas déjà et si le tableau //n’est pas plein void ajouterEtudiant (Etudiant e) {//….} // retourne l'étudiant ayant le numéro d'inscription passé en paramètre et // null sinon Etudiant rechercherEtudiant (int num) {//…. } // affiche les informations sur tous le étudiants dans le tableau void listerEtudiants (){//….} } class Etudiants {// attributs private Etudiant [] listeEtudiants; private int nbEtudiants ; // constructeur, reçoit en paramètre la capacité max du tableau listeEtudiants Etudiants (int n) {listeEtudiants=new Etudiant[n]; nbEtudiants=0;} boolean exist(Etudiant e) {for (int i=0; i< listeEtudiants.length; i++) if (listeEtudiants[i]==e) return true; return false;} // ajoute un étudiant dans le tableau s’il n’existe pas déjà et si le tableau n’est // pas plein void ajouterEtudiant (Etudiant e) {if ( ! exist(e) ) listeEtudiants[++nbEtudiants] = e; } Etudiant rechercherEtudiant (int num) { for (int i=0; i<=nbEtudiants; i++) {if((listeEtudiants[i]!=null)&&(listeEtudiants[i].getnumInscription())==num) return listeEtudiants[i];} return null;}
  • 4. 4. Ecrire une classe Test contenant la méthode main et dans laquelle on testera les méthodes de la classe Etudiants public class test{ public static void main(String[] args) { Etudiant et= new Etudiant ("Ali","Mohamed", 4); Etudiant et1= new Etudiant ("Salah","Mohamed", 3); Etudiants E=new Etudiants(3); E.ajouterEtudiant(et); E.ajouterEtudiant(et1); E.listerEtudiants(); System.out.println(E.rechercherEtudiant(4).toString());}}
  • 5. Exercice n°2 Écrire les classes nécessaires au fonctionnement du programme suivant, en ne fournissant que les méthodes nécessaires à ce fonctionnement : class TestMetiers { public static void main(String [] args) { Personne[] personnes = new Personne[4]; personnes[0] = new Personne("Salah"); personnes[1] = new Forgeron("Ali"); personnes[2] = new Menuisier("Mohamed"); personnes[3] = new Forgeron("Amor"); for (int i=0 ; i<personnes.length ; i++) System.out.println (personnes[i]);} } Sortie de ce programme : Je suis Salah Je suis Ali le forgeron Je suis Mohamed le menuisier Je suis Amor le forgeron Solution: public class Personne { protected String prenom; Personne(String s){prenom=s; } public String toString(){return ("Je suis "+prenom); } } class Forgeron extends Personne { Forgeron(String s){super(s); } public String toString(){return ("Je suis "+prenom+" le forgeron"); }} class Menuisier extends Personne { Menuisier(String s){super(s);} public String toString(){return ("Je suis "+prenom+" le menuisier"); }}
  • 6. Exercice n°3 Qu’obtient- on sur écran à l’exécution du programme suivant ? interface Son { void parle(); } abstract class Mammifere implements Son {// Attributs String nom, son; int age; Mammifere(String nom, String son, int age) // constructeur {this.nom = nom; this.son = son; this.age = age; } public void parle() // Méthode parle affiche le son d'un mammifère { System.out.println(son+this);} abstract void vitesse(); // Méthode abstraite vitesse public String toString() // Méthode toString redéfinie { return(" mon nom est "+nom +" j'ai "+age+" ans");} } class Homme extends Mammifere {// Attributs boolean marie; Homme(String nom, String son, int age, boolean marie) // Constructeur {super(nom, son, age); this.marie = marie; } void vitesse() // Implémentation de la méthode vitesse {System.out.println("Je cours à une vitesse de 20km/h");} public String toString() // Méthode toString redéfinie {if (marie) return(super.toString()+" je suis marie"); Else return(super.toString()+ " je suis célibataire"); } } // fin Homme class Chien extends Mammifere { // Attributs String race; Chien(String nom, String son, int age, String race) // Constructeur {super(nom, son, age); this.race = race;} void vitesse() // Implémentation de la méthode vitesse {System.out.println("Je cours à une vitesse de 30km/h");} public String toString() // Méthode toString redéfinie {return(super.toString()+" j'appartient à la race des "+race);} } class Test{ public static void main(String [] args) { Son []listeSons = new Son[2]; Mammifere []listeMammiferes = new Mammifere[2]; Homme h = new Homme("Ali", "Bonjour", 20, true); Chien ch = new Chien("Snoopy", "Wouah!", 2,"caniches"); listeSons[0] = h; listeSons[1] = ch; listeMammiferes[0] = h; listeMammiferes[1] = ch; for (int i=0; i<listeSons.length; i++) { // la méthode parle est polymorphe listeSons[i].parle(); // la méthode vitesse est polymorphe listeMammiferes[i].vitesse(); } } // fin main } // fin Test Solution : Bonjour mon nom est Ali j'ai 20 ans je suis marie Je cours à une vitesse de 20km/h Wouah! mon nom est Snoopy j'ai 2 ans j'appartient à la race des caniches Je cours à une vitesse de 30km/h
  • 7. La classe Robot modélise l'état et le comportement de robots virtuels. Chaque robot correspond à un objet qui est une instance de cette classe. Chaque robot : • a un nom (attribut nom : chaîne de caractères) • a une position : donnée par les attributs entiers x et y, sachant que x augmente en allant vers l'Est et y augmente en allant vers le Nord, • a une direction : donnée par l'attribut direction qui prend une des valeurs "Nord", "Est", "Sud" ou "Ouest" • peut avancer d'un pas en avant : avec la méthode sans paramètre avance() • peut tourner à droite de 90° pour changer de direction (si sa direction était "Nord" elle devient "Est", si c'était "Est" elle devient "Sud", etc.) : avec la méthode sans paramètre droite(). Les robots ne peuvent pas tourner à gauche. • peut afficher son état en détail (avec de simples System.out.println()) Le nom, la position et la direction d'un robot lui sont donnés au moment de sa création. Le nom est obligatoire mais on peut ne pas spécifier la position et la direction, qui sont définis par défaut à (0,0) et "Est". Exercice n°4
  • 8. Travail à faire: 1) Écrire les instructions Java qui permettent de définir la classe Robot, public class Robot { private String nom; private int x; private int y; private String direction; public Robot(String nom) { this.nom = nom; x = y = 0; direction = "Est"; } public Robot(String nom, int x, int y, String direction) { this(nom); this.x = x; this.y = y; if (direction.equals("Nord") || direction.equals("Sud")|| direction.equals("Ouest")) this.direction = direction; // garder "Est" si direction invalide } /* avance d'un pas */ public void avance() { if (direction.equals("Nord")) y++; else if (direction.equals("Est")) x++; else if (direction.equals("Sud")) y--; else // (direction.equals("Ouest")) x--; } /* tourne à droite de 90° */ public void droite() { if (direction.equals("Nord")) direction = "Est"; else if (direction.equals("Est")) direction = "Sud"; else if (direction.equals("Sud")) direction = "Ouest"; else // (direction.equals("Ouest")) direction = "Nord"; } /* affiche l'état du robot */ public void afficher() { System.out.println("nom : " + nom); System.out.println("position : (" + x + "," + y +")"); System.out.println("direction : " + direction); } }
  • 9. 2) On veut améliorer ces robots en en créant une Nouvelle Génération, les RobotNG qui ne remplacent pas les anciens robots mais peuvent cohabiter avec eux. Les RobotNG savent faire la même chose mais aussi : • avancer de plusieurs pas en une seule fois grâce à une méthode avance() qui prend en paramètre le nombre de pas • tourner à gauche de 90° grâce à la méthode gauche() • faire demi-tour grâce à la méthode demiTour() Écrire cette nouvelle classe en spécialisant celle de la première question, sans modifier celle-ci : les nouvelles méthodes appellent les anciennes méthodes pour implémenter le nouveau comportement : avancer de n pas se fait en avançant de 1 pas n fois, « tourner à gauche » se fait en tournant 3 fois à droite, faire demi-tour se fait en tournant 2 fois class RobotNG extends Robot { public RobotNG(String nom) { super(nom); } public RobotNG(String nom, int x, int y, String direction) { super(nom, x, y, direction); } /** * avance de plusieurs pas * @param pas le nombre de pas */ public void avance(int pas) { for (int i = 0 ; i < pas ; ++i) { avance(); } } /** * tourne à gauche de 90° */ public void gauche() { droite(); droite(); droite(); } /** * fait demi-tour */ public void demiTour() { droite(); droite(); } }