pdf - e-book - archive - github.com

2.8  Encapsulation

2.8.1  Prise en main

Exercice 1 Rationnels propres

Reprenez la classe Rationnel. Vous encapsulerez le numérateur, le dénominateur, et vous utiliserez un constructeur pour initialiser les champs privés. Vous prendrez ensuite le soin de modifier les corps des méthodes de sorte que la classe compile et fonctionne correctement.

Corrigé

2.8.2  Implémentation d’une pile

Exercice 2 Implémentation d’une pile avec un tableau

Complétez le code ci-dessous :

package encapsulation;

public class Pile
{
 /*
  * Tableau contenant les elements de la pile.
  */

 private int[] tab;

 /*
  * Taille de la pile
  */

 private final int taille;

 /*
  * Indice du premier element non occupe dans le tableau.
  */

 private int firstFree;

 /*
  * Constructeur
  */

 Pile(int taille)
 {
  this.taille = 0;
 }

 /*
  * Constructeur de copie
  */

 Pile(Pile other)
 {
  this(other.taille);
 }

 /*
  * Retourne vrai si et seulement si la pile est vide
  */

 public boolean estVide()
 {
  return true;
 }

 /*
  * Retourne vrai si et seulement si la pile est pleine.
  */

 public boolean estPleine()
 {
  return true;
 }

 /*
  * Retourne l'element se trouvant au sommet de la pile, -1 si la pile est
  * vide.
  */

 public int sommet()
 {
  return 0;
 }

 /*
  * Supprime l'element se trouvant au sommet de la pile, ne fait rien si la
  * pile est vide.
  */

 public void depile()
 {
 }

 /*
  * Ajoute data en haut de la pile, ne fait rien si la pile est pleine.
  */

 public void empile(int data)
 {
 }

 /*
  * Retourne une representation de la pile au format chaine de caracteres.
  */

 public String toString()
 {
  return null;
 }

 /*
  * Teste le fonctionnement de la pile.
  */

 public static void main(String[] args)
 {
  Pile p = new Pile(30);
  int i = 0;
  while (!p.estPleine())
   p.empile(i++);
  System.out.println(p);
  while (!p.estVide())
  {
   System.out.println(p.sommet());
   p.depile();
  }
 }
}

Télécharger le fichier

Corrigé

2.8.3  Collections

Exercice 3 Parcours

Instanciez un objet de type ArrayList<> en utilisant le type de votre choix. Placez-y des valeurs quelconques, et parcourez-le en affichant ses valeurs.

Corrigé

Exercice 4 Boucle for

Même exercice en utilisant la boucle for simplifiée.

Corrigé

Exercice 5 Miroir

Écrire une procédure inversant l’ordre des éléments d’un ArrayList<Integer>. Ne pas utiliser la méthode reverse().

Corrigé

Exercice 6 Tri

Écrire une procédure triant un ArrayList<Integer>.

Corrigé

Exercice 7 Clients et factures

Implémentez les classes suivantes :

Corrigé

Corrigé

2.8.4  Refactoring de la pile avec des ArrayList

Exercice 8 Pile

Re-téléchargez le fichier Pile.java, et sans modifier les méthodes publiques, implémentez la pile en utilisant des ( ArrayList).

Corrigé

2.8.5  Refactoring de la pile avec des listes chaînées

Exercice 9 Listes chaînées

Complétez le code ci-dessous :

package encapsulation;

public class ListeInt
{
 /*
  * Donnee stockee dans le maillon
  */

 private int data;

 /*
  * Pointeur vers le maillon suivant
  */

 private ListeInt next;

 /*
  * Constructeur initialisant la donnee et le pointeur vers l'element
  * suivant.
  */

 ListeInt(int data, ListeInt next)
 {
 }

 /*
  * Constructeur initialisant la donnee et mettant le suivant a null.
  */

 ListeInt(int data)
 {
 }

 /*
  * Constructeur recopiant tous les maillons de other.
  */

 ListeInt(ListeInt other)
 {
 }

 /*
  * Retourne la donnee.
  */

 public int getData()
 {
  return 0;
 }

 /*
  * Modifie la donnee
  */

 public void setData(int data)
 {
 }

 /*
  * Retourne le maillon suivant.
  */

 public ListeInt getNext()
 {
  return null;
 }

 /*
  * Modifie le maillon suivant
  */

 public void setNext(ListeInt next)
 {
 }

 /*
  * Retourne une représentation sous forme de chaine de la liste.
  */

 public String toString()
 {
  return null;
 }

 /*
  * Teste le fonctionnement de la liste.
  */

 public static void main(String[] args)
 {
  ListeInt l = new ListeInt(20);
  int i = 19;
  while (i >= 0)
   l = new ListeInt(i--, l);
  System.out.println(l);

 }

}

Télécharger le fichier

Corrigé

Exercice 10 Pile

Re-téléchargez le fichier Pile.java, et sans modifier les méthodes publiques, implémentez la pile en utilisant des listes chaînées ( ListeInt).

Corrigé