Héritage

On utilise les classes Joueur et Club créées à la séance précédente, dont une solution simplifiée pour le travail proposé est ci-dessous.
class Joueur {
  private int numJoueur;
  private String nomJoueur;
  private int numClub;

  public int numéro() { return numJoueur; }

  public boolean dansClub(int club) { return numClub==club; }

  Joueur( String no, int nu, int numC) {
     nomJoueur=nomNormalisé(no); numJoueur=nu; numClub=numC;
     }

  public String toString() {
     return nomJoueur+", numéro "+numJoueur+ " club:"+numClub;
     }

  static String nomNormalisé(String nom) {
     return nom.substring(0,1).toUpperCase()+nom.substring(1).toLowerCase();
     }
  } // fin class Joueur

class Club {
  private int numClub;
  private String sigle, ville;

  public int numéro() { return numClub; }

  Club(String s, String v, int n) {
      sigle=s;ville=Joueur.nomNormalisé(v);numClub=n;
      }

  public String toString() { return sigle+": "+ville+", numéro "+numClub; }

  } // fin class Club
Comme dans la séance précédente un joueur est identifié de façon unique par son numéro, d'où la méthode numéro() de la classe Joueur. Comme nous aurons besoin de savoir si un joueur est dans un club donné, nous avons créé les méthodes 'boolean dansClub(int club)' de la classe Joueur et 'int numéro()' de la classe Club.

Pour tester les classes, nous créons la nouvelle classe TestFoot avec une méthode 'main()' pour y mettre les instructions de test. Comme pour la séance précédente, les informations sur joueurs et clubs sont fournies par la ligne de commande.

Premier exercice sur la dérivation

Créer une classe International permettant de décrire des joueurs jouant à l'étranger. Par rapport à un 'Joueur' on ajoute le nom du pays, chaîne de caractères, dans lequel évolue le joueur; le pays doit intervenir dans un constructeur et à l'affichage, mais on utilise au maximum ce qui a été développé pour la classe de base Joueur.

Créer la classe TestInternational, dont la méthode main() permet de tester la nouvelle classe créée.

Deuxième exercice sur la dérivation

La partie dérivation intervient dans la classe Equipe.

classe DesJoueurs

Dans un premier temps, créer la classe DesJoueurs qui regroupe un nombre indéterminé de joueurs, en s'assurant qu'il n'y a pas de répétition. Voici un exemple de champ et méthodes pouvant la constituer :
class DesJoueurs {
  private Vector joueurs;
  DesJoueurs() { .. à écrire .. }
  /** Ajoute un joueur; s'il est déjà présent, l'exécution doit être
   * interrompue avec le code retour 3.
   */
  void inscrire(Joueur j) { .. à écrire .. }
  /** @return true si unJ est un des joueurs de cet ensemble */
  boolean estPrésent(Joueur unJ)
  public String toString() { .. à écrire .. }
  }
Tester par la méthode main() de la classe TestDesJoueurs votre programmation.

Remarques quelques méthodes de la classe java.util.Vector pouvant être utilisées:

   Vector()                 crée un vecteur vide
   void add(Object obj)     ajout d'un élément
   int size()               nb.d'éléments à un instant donné
   Objet elementAt(int i)   fournit un élément (premier élément i=0)
   

classe Equipe

Dans un deuxième temps on s'intéresse à l'équipe d'un club, constituée de 11 joueurs du club au plus. Ecrire la classe Equipe, dérivant de la classe DesJoueurs, mais ayant au plus 11 joueurs.

Prévoyez un constructeur Equipe(Club c) et une redéfinition de la méthode toString() fournissant l'indication du club et des joueurs de l'équipe. Ecrivez la méthode inscrire(Joueur j) qui vérifie que le joueur est du bon club, que le nombre d'équipiers ne dépasse pas 11 et que le joueur n'est pas en double; en cas d'erreur l'exécution est interrompue.

Assurez vous de la validité de votre programmation avec une classe TestEquipe.

Exercice sur les commandes javac et java.

Vous placez dans un répertoire, appelé foot, tous les fichiers sources .java que vous programmez; créez ensuite un sous répertoire de nom 'classes', qui contiendra les classes créées.
Vous lancerez toutes les commandes, javac ou java, en ayant foot comme répertoire courant.

Demander à la commande javac de placer les fichiers '.class' dans le répertoire 'classes'.
Utiliser ces classes par la commande java, le répertoire courant étant foot.