Classes et méthodes abstraites

 

Classe abstraite.

Voici un diagramme de classes dans lequel les produits se déclinent en deux versions, des produits frais et des produits d'épicerie.

La classe Produit est un peu particulière, car aucun Produit ne sera instancié, en effet ce seront soit des produits d'épicerie, soit des produits frais; on dit que la classe « Produit » est abstraite.

 

Les façons de représenter une classe abstraite sur un diagramme UML sont :

-          l’utilisation du style "italique" qui indique une classe abstraite.

-          Mettre le mot ‘Abstraite’ ou ‘Abstract’ devant le nom de la classe

-          Indiquer en commentaire que cette classe est abstraite

 

En Java on écrira:

 

public abstract class Produit{

   private String libelle;
   private int prix;
   private int qteStock;

   public Produit(String lbl,int px,int qt){
        libelle = lbl;
         prix = px;
         qteStock = qt;
   }
   public int valeurStock(){
         return qteStock * prix;
   }
}

 

class Epicerie extends Produit{

    private int poids;

    public Epicerie (String lbl,int px,int qt, int pds){
        super(lbl,px,qt);
        poids = pds;
    }

 


Remarque: une classe abstraite peut posséder des méthodes concrètes ou abstraites; si une classe possède une méthode abstraite, toutes les classes dérivées devront implémenter cette méthode. Par exemple, si la méthode affiche était déclarée:

 

public abstract class Produit
{

...

    public abstract void affiche();

...

}

 

Notez que la méthode abstraite n'a pas de "corps" ; on dit qu'elle constitue une promesse.

 

 

Utilisation des classes abstraites.

 

Une classe abstraite est une classe qui ne peut être instanciée. Une classe abstraite est utilisée dans deux situations particulières: 

                           1) Les sous-classes forment une couverture de la classe abstraite 

 

Commentaires : Les personnels d'un lycée sont composés soit des enseignants des administratifs ou des personnels de services. Les trois sous-classes "couvrent" l'ensemble des personnels. 

 

                               2) La classe abstraite ne contient pas suffisamment d'informations pour instancier un objet, autrement dit cette classe n'est présente que pour factoriser des propriétés. Il s'agit souvent de classe qui modélise un concept. 

 

Commentaires:  La classe courbe modélise plutôt un concept. Il existe d'autres courbes que les paraboles et hyperboles.

 

Une classe abstraite ne peut pas se trouver à la fin d'une hiérarchie de classe. Une classe abstraite doit avoir au moins une sous-classe.