Cours Java HÉRITAGE DE TYPE

HÉRITAGE DE TYPE
OBJETS, CLASSES, INTERFACES
L’HÉRITAGE DE TYPE
LES PROPRIÉTÉS DE L’HÉRITAGE DE TYPE
HÉRITAGE MULTIPLE
RELATION ENTRE CLASSES ET INTERFACE
INTERFACE ET FACTORISATION DE CODE
HÉRITAGE DE TYPE ET DÉCOMPOSITION ENSEMBLISTE

Objets, classes, interfaces.

Une interface définit un type en déclarant seulement l’interface fonctionnelle publiques des services d’instance. Elle ne donne pas de code au service qu’elle déclare. Le seul code qui peut-être présent dans une interface est la déclaration de constante en utilisant les mots final static.
Par exemple, public interface Point2D

{
public static final PI = 3.14159;
public void homothetie(double rapport);
public void rotation(double angle);
public void translation(Point2D debut, Point2D fin);
.......
}

L’interface peut-être considérée comme l’implémentation d’un type abstrait de donnée. Elle ne fait que décrire un ensemble de services indépendamment de toute implémentation.
Pour définir une interface, il faut se poser la question de quelles sont les entités présentent dans le domaine du problème. Donner un nom à une interface ou à un type et la première étape qui permet d’obtenir une modalité correcte. Une fois que l’entité peut-être nommée, il est nécessaire de trouver l’ensemble des services que peut rendre ce type. A ce stade aucune considération d’implémentation ne doit être prise en compte, mais il faut que l’ensemble des services publics, soit complet et aussi minimal. Par exemple, si on considère l’interface Point2D.

L’héritage de type.

Une interface définit un type, l’héritage de type est une relation entre un type et un ensemble de sous type. La relation d’héritage de type se traduit comme une relation « est une sorte de » ou bien encore comme une relation « est un ». Elle établit une hiérarchie entre les types, si un Mammifère est une sorte d’animal alors le type Mammifère est un sous type du type Animal.
Par exemple,
public interface Vehicule
{
public Point2D déplace(Point2D départ);
}
L’interface Vehicule déclare un nouveau type « Véhicule » ainsi que le service déplace. On peut dire qu’un véhicule à la possibilité de se déplacer en allant d’un point à un autre.
Maintenant si je considère l’interface suivante:

public interface VehiculeTerrestre
{
public void roule();
public void freine();
public voif demarre();
}

Les propriétés de l’héritage de type.

Si une type A hérite d’un type B, alors on a les deux propriétés suivantes:
1. Principe de substitution : On peut adresser les objets du sous type en utilisant le sur-type.
Par exemple, public interface A extends B
Alors on peut écrire A a = …. et B b = a; dans ce cas on adresse un objet de type A en utilisant une référence de type B. On dira alors que le type A est compatible avec le type B.
2. Interface fonctionnelle publique de A contient tous les services de l’interface fonctionnelle de B . IFP(B) est incluse dans IFP(A). Tout ce que peut faire un objet de type B, un objet de type peut le faire et il peut aussi en faire plus ou le faire différemment. En reprenant l’exemple précédent, un véhicule peut se deplacer donc un véhicule terrestre peut aussi se déplacer même si le service deplace n’est pas explicitement déclaré dans l’interface véhicule.

LIRE AUSSI :  Modèle J2EE pour les architectures à trois niveaux

Héritage Multiple.
Une interface peut-être un sous-type de plusieurs interfaces. On parle alors d’héritage multiple de type. La syntaxe est alors la suivante:
public interface X extends Y,Z.
Un autre exemple:

public interface VehiculeNautique extends Vehicule{
public void navigue();
}
public interface Voiture extends VehiculeTerrestre{
public void changerRoue()
}
public interface VoitureAmphibie extends Voiture, VehiculeNautique{}

Relation entre classes et interface.
Rappel: une classe définit un type, on parlera alors de type concret car la classe permet de créer des objets, ce n’est pas le cas d’une interface qui elle ne fait que définir une interface fonctionnelle publique.
Une classe peut être considérée comme l’implémentation d’un type abstrait, c’est à dire qu’elle a en charge de fournir le code nécessaire à l’implémentation des services présentés dans l’interface fonctionnelle publique. Que cette interface soit celle de la classe elle-même ou celle d’une interface.
En Java, une classe peut implémenter, concrétiser, réaliser une interface. Par exemple, on peut définir l’interface du type abstrait Point2D.

public interface Point2D {
public void homothétie(double rapport);
public void translation(Point2D p, Point2D q);
public void rotation(double angle);
public double getX();
public double getY();
public double getRho();
public double getTheta();
}

Cours Java HÉRITAGE DE TYPE

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *