Accueil
 Sommaire du cours
 1  Introduction à Java
 2  Concepts de bases de Java
 3  Classes et objets en Java
 4  Généralisation spécialisation en Java
 4.1  Généralisation spécialisation
 4.2  Polymorphisme
 4.3  Redéfinition de méthodes dans les classes dérivées
 4.4  Héritage, membres et visibilité
 Questions
 4.5  Classes abstraites
 4.6  Exemple de classe Abstraites
 4.6.1  Exemple : classes abstraites
 4.7  Interfaces
 5  Organisation des sources Java
 6  API Java
 7  Exceptions en Java
 8  Concepts objets avancés en Java
 Bibliographie

 Contacts

W3C validator

Département INF  
 Conception et programmation orientées objet


4.6.1 Exemple : classes abstraites
 
package studsabstract; 
2public abstract class Choix { 
    private Bulletin[] lesBulletins; 
    int nbBulletinsPour, nbBulletinsContre, indexBulletins; 
    public Choix() { 
6        lesBulletins = new Bulletin[100]; 
        indexBulletins = 0; 
        nbBulletinsPour = 0; 
        nbBulletinsContre = 0; 
10    } 
    public int addBulletin(Bulletin b) { 
        lesBulletins[indexBulletins++] = b; 
        if(b.getValue()){ 
14            nbBulletinsPour++ ; 
        } else { 
            nbBulletinsContre++ ; 
        } 
18        return indexBulletins; 
    } 
    public int getNbBulletinsPour() { 
        return nbBulletinsPour; 
22    } 
    public int getNbBulletinsContre(){ 
        return nbBulletinsContre; 
    } 
26    public int chercherRang(Bulletin b){ 
        for(int i = 0; i < indexBulletins; i++){ 
            if(b.equals(lesBulletins[i]))return i; 
        } 
30        return -1; 
    } 
    public void retirerBulletin(final Bulletin retrait) { 
        int rang = chercherRang(retrait); 
34        if(rang > -1){ 
            compacterBulletins(rang); 
        } 
    } 
38    public void compacterBulletins(int r){ 
        for(int i = r; i < indexBulletins; i++){ 
            lesBulletins[i] = lesBulletins[i+1]; 
        } 
42        indexBulletins --; 
    } 
    public void modifierBulletin(final Bulletin changed) { 
        int rang = chercherRang(changed); 
46        if (rang >=0) { 
            Bulletin aChanger = lesBulletins[rang]; 
            if (aChanger.getValue() != changed.getValue()) { 
                aChanger.setValue(changed.getValue()); 
50            } 
            if (aChanger.getValue()) { 
                nbBulletinsContre-- ; 
                nbBulletinsPour++; 
54            } else { 
                nbBulletinsContre++ ; 
                nbBulletinsPour--; 
            } 
58        } 
    } 
}
 
package studsabstract; 
public class Studs { 
  private Choix[] lesChoix; 
4  private Scrutin[] lesScrutins; 
  private Bulletin[] lesBulletins; 
  private Personne[] lesParticipants; 
  public Studs() { 
8        lesChoix = new Choix[100]; 
        lesScrutins = new Scrutin[100]; 
        lesBulletins = new Bulletin[100]; 
        lesParticipants = new Personne[100]; 
12  } 
  @Override 
  public String toString() { 
      return "Studs" + lesChoix + lesScrutins + lesBulletins + lesParticipants ; 
16  } 
}

    précédent     suivant 


Dans cet exemple, nous avons la classe abstraite Choix, qui est rendue instanciable dans la classe PlageHoraire. Les collections dans la classe Studs référencent des objets abstraits Scrutin et Choix. Les objets référencés seront bien entendu instanciés. Ce sont des objets des classes PlageHoraire ou Preference dans la collection des Choix.

Christian Bac, Denis Conan, Télécom SudParis, CSC 4002, Octobre 2015