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.