TD 6: Amis

amis

Nous avons une class Ami qui représente une personne possédant un pseudonyme et pouvant avoir jusqu'à 10 amis. Outre le pseudonyme, elle contient un tableau d'objets Ami nommé amis (des amis proches) et ayant une taille fixe de 10 éléments ainsi qu'un attribut nbAmis qui correspond au nombre d'amis actuellement définis. Les amis sont ajoutés au début du tableau. Ainsi, seuls les nbAmis premiers élément du tableau contiennent des références à des objets Ami valides. Attention: deux personnes différentes peuvent avoir le même pseudonyme, et deux références sur des objet Ami sont la même personne si et seulement si elles sont indentiques.

Etant donné le code incomplet ci-dessous, nous allons le compléter. Pour chaque méthode, vous pouvez vérifier votre implémentation en décommentant les testes dans la méthode main()

public class Ami {

   String pseudo;
   Ami[] amis;
   int nbAmis;

   // Question 1 
   public Ami (String pseudo)

   // Question 2 
   public boolean hasMaxAmis ()

   // Question 3
   public boolean containsAmi (Ami ami)

   // Question 4 
   public boolean addAmi (Ami ami)

   // Question 5 
   public int addAllAmiDirectOf (Ami ami)

   // Question 6 
   public String listeAmisToString () 

   // Question 7 
   public String amiToString ()

   // Question 8
   public int addAllOf (Ami ami)

   public static void main(String[] args) {
     /*
     // Test question 1
     System.out.println("Test question 1: ...... ok"); 
     Ami krypto = new Ami("Krypto"); 
     Ami lana = new Ami("Lana"); 
     Ami pete = new Ami("Pete"); 
     Ami superman = new Ami("Superman"); 
     Ami supergirl = new Ami("Supergirl");

     // Test question 4
     System.out.println("Test question 4: ....... ok"); 
     supergirl.addAmi(superman); 
     superman.addAmi(krypto);
     superman.addAmi(lana); 
     superman.addAmi(pete); 
     superman.addAmi(supergirl); 
    
     // Test question 5
     System.out.println("Test question 5: ....... ok"); 
     krypto.addAllAmiDirectOf(superman);

     // Test question 6
     System.out.println("Test question 6"); 
     System.out.println(krypto.listeAmiToString()); 
     System.out.println(lana.listeAmiToString()); 
     System.out.println(pete.listeAmiToString()); 
     System.out.println(superman.listeAmiToString());

     // Test question 7
     System.out.println(); 
     System.out.println("Test question 7"); 
     System.out.println(supergirl.amiToString()); 
     System.out.println(superman.amiToString()); 
     System.out.println(krypto.amiToString());
     
     System.out.println();
     if (supergirl.containsAmi(superman))
           System.out.println("Supergirl ne connaît pas Superman"); 
     if (!supergirl.containsAmi(pete))
           System.out.println("Supergirl ne connaît pas Pete"); 
     supergirl.addAmi(pete);
     if (supergirl.containsAmi(pete)) 
           System.out.println("Supergirl connaît Pete");
     
     System.out.println(); 
     System.out.println(supergirl.amiToString());

     // Test question 8
     System.out.println(); 
     System.out.println("Test question 8"); 
     System.out.println(supergirl.amiToString()); 
     int n = supergirl.addAllOf(supergirl); 
     System.out.println(supergirl.amiToString()); 
     System.out.println("	" + n + " n'ont ps pu être ajoutés !");

     System.out.println(); 
     System.out.println("Autres tests");

     System.out.println(superman.amiToString()); 
     superman.addAmi(superman);
     System.out.println(superman.amiToString());
     
     System.out.println(supergirl.amiToString()); 
     supergirl.addAmi(superman);
     System.out.println(supergirl.amiToString());
     */
  }
}
  1. Complétez le constructeur de la classe qui prend en argument un pseudonyme.
  2. Complétez la méthode hasMaxAmis vérifiant si le nombre maximal d'amis a été atteint.
  3. Complétez la méthode containsAmi qui teste la présence d'un ami proche.
  4. Complétez la méthode addAmi ajoute la personne en argument dans le tableau d'ami. L'ami ajouté ne doit être ni l'objet Ami lui-même ni un ami déjà présent.
  5. Complétez la méthode addAllAmiDirectOf ajoute l'ami et tous ses amis à cet objet. L'ami ajouté ne doit être ni l'objet Ami lui-même ni un ami déjà présent.
  6. Nous allons construire un représentation de tous les pseudonymes des amis actuels de cet objet Ami sous la forme d'éléments séparés par des virgules. Complétez la méthode listeAmisToString pour ce but.
  7. Nous allons construire un représentation de cet objet Ami avec son pseudonyme suivi de la liste des pseudonymes de ses amis actuels entre parenthèses. Complétez la méthode amisToString pour ce but.
  8. Maintenant, nous allons construire une méthode qui prend un ami en argument et ajoute cet ami avec tous ses amis ainsi que les amis d'amis. Comme toujours, l'ami ajouté ne doit être ni l'objet Ami lui-même ni un ami déjà présent. La méthode retourn le nombre de personnes n'ayant pas pu être ajoutés en dehors de ceux interdits. Complétez la méthode addAllOf pour ce but. Si besoin, vous pourrez écrire d'autre méthodes intermédiaires. Le paquetage ArrayList pourrait être utilisé en simlifiant les méthodes.



Dernière mise à jour : 10/04/2013

Pour tout commentaire : thang [arobase] ibisc [point] fr