La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1010 Structuration du code en utilisant les classes abstraites et les interfaces.

Présentations similaires


Présentation au sujet: "1010 Structuration du code en utilisant les classes abstraites et les interfaces."— Transcription de la présentation:

1 1010 Structuration du code en utilisant les classes abstraites et les interfaces

2 10-2 Objectifs À la fin de ce cours, vous serez capables de : Définir des classes abstraites Définir des méthodes abstraites Définir des interfaces Implémenter des interfaces À la fin de ce cours, vous serez capables de : Définir des classes abstraites Définir des méthodes abstraites Définir des interfaces Implémenter des interfaces

3 10-3 InventoryItem Vue d'ensemble Une classe abstraite ne peut pas être instanciée. Les méthodes abstraites doivent être implémentées par des sous-classes. Les interfaces supportent plusieurs héritages. Une classe abstraite ne peut pas être instanciée. Les méthodes abstraites doivent être implémentées par des sous-classes. Les interfaces supportent plusieurs héritages. Superclasse abstraite Sous-classes concrètes Car MovieVCR

4 10-4 Définition des classes abstraites dans Java Utilisez le mot-clé abstract pour déclarer une classe abstraite. Utilisez le mot-clé abstract pour déclarer une classe abstraite. public abstract class InventoryItem { private float price; public boolean isRentable()… } public class Movie extends InventoryItem { private String title; public int getLength()… public class Vcr extends InventoryItem { private int serialNbr; public void setTimer()…

5 10-5 Méthode abstraite Une méthode abstraite est un placeholder d'implémentation. Les méthodes abstraites appartiennent à une classe abstraite. Elles doivent être redéfinies par une sous-classe concrète. Chaque sous-classe concrète peut implémenter différemment la méthode. Une méthode abstraite est un placeholder d'implémentation. Les méthodes abstraites appartiennent à une classe abstraite. Elles doivent être redéfinies par une sous-classe concrète. Chaque sous-classe concrète peut implémenter différemment la méthode.

6 10-6 Définition des méthodes abstraites dans Java Utilisez le mot-clé abstract pour déclarer une méthode abstraite. –Procure uniquement la signature de la méthode. –La classe doit aussi être abstraite. En quoi est-ce utile ? Utilisez le mot-clé abstract pour déclarer une méthode abstraite. –Procure uniquement la signature de la méthode. –La classe doit aussi être abstraite. En quoi est-ce utile ? public abstract class InventoryItem { public abstract boolean isRentable(); …

7 10-7 Interfaces Une interface équivaut à une classe totalement abstraite : –Toutes ses méthodes sont abstraites. –Toutes les variables sont public static final. Une interface recense un ensemble de méthodes pouvant être implémentées par d'autres classes, mais ne fournit aucun code de méthode. Une classe peut implémenter de nombreuses interfaces, mais ne peut étendre qu'une seule classe. Une interface équivaut à une classe totalement abstraite : –Toutes ses méthodes sont abstraites. –Toutes les variables sont public static final. Une interface recense un ensemble de méthodes pouvant être implémentées par d'autres classes, mais ne fournit aucun code de méthode. Une classe peut implémenter de nombreuses interfaces, mais ne peut étendre qu'une seule classe.

8 10-8 Exemples d'interfaces Les interfaces décrivent un aspect du comportement requis par des classes différentes. Par exemple, les classes qui peuvent être dirigées supportent l'interface « dirigeable » (steerable). Les classes ne doivent pas nécessairement être connexes. Les interfaces décrivent un aspect du comportement requis par des classes différentes. Par exemple, les classes qui peuvent être dirigées supportent l'interface « dirigeable » (steerable). Les classes ne doivent pas nécessairement être connexes. Dirigeable Non dirigeable

9 10-9 Définition d'une interface Utilisez le mot-clé interface Toutes les méthodes sont public abstract Toutes les variables sont public static final Utilisez le mot-clé interface Toutes les méthodes sont public abstract Toutes les variables sont public static final public interface Steerable { int MAXTURN = 45; void turnLeft(int deg); void turnRight(int deg); }

10 10-10 Implémentation d'une interface Utilisez le mot-clé implements public class Yacht extends Boat implements Steerable public void turnLeft(int deg) {…} public void turnRight(int deg) {…} }

11 10-11 Sort (Tri) : exemple réel Utilisé par un certain nombre de classes non connexes Contient un ensemble connu de méthodes Requis pour trier tout type d'objet Les règles de comparaison sont connues uniquement pour l'objet à trier Bonne réutilisation du code Utilisé par un certain nombre de classes non connexes Contient un ensemble connu de méthodes Requis pour trier tout type d'objet Les règles de comparaison sont connues uniquement pour l'objet à trier Bonne réutilisation du code

12 10-12 Vue d'ensemble des classes public class MyApplication public class Movie implements Sortable Créées par l'expert Sort Créées par l'expert Movie public interface Sortable public abstract class Sort

13 10-13 Mode de fonctionnement de Sort MyApplication passe un array de Movies à Sort.sortObjects() 1 23 sortObjects() demande à un Movie de se comparer avec un autre Movie Movie renvoie le résultat de la comparaison 4 sortObjects() renvoie la liste triée Sort Movie MyApplication

14 10-14 L'interface Sortable Spécifie la méthode compare() public interface Sortable { // compare(): Compare this object to another object // Returns: // 0 if this object is equal to obj2 // a value < 0 if this object < obj2 // a value > 0 if this object > obj2 int compare(Object obj2); }

15 10-15 La classe Sort Maintient sortObjects() public abstract class Sort { public static void sortObjects(Sortable[] items) { // Step through the array comparing and swapping; // do this length-1 times for (int i = 1; i < items.length; i++) { for (int j = 0; j < items.length - 1; j++) { if (items[j].compare(items[j+1]) > 0) { Sortable tempitem = items[j+1]; items[j+1] = items[j]; items[j] = tempitem; } } } } }

16 10-16 La classe Movie public class Movie extends InventoryItem implements Sortable { String title; public int compare(Object movie2) { String title1 = this.title; String title2 = ((Movie)movie2).getTitle(); return(title1.compareTo(title2)); } Implémente Sortable

17 10-17 Utilisation de Sort Appelle Sort.sortObjects(Sortable []) avec un array de Movie comme clause class myApplication { Movie[] movielist; … // build the array of Movie Sort.sortObjects(movielist); }

18 10-18 Utilisation de instanceof avec des interfaces Utilisez l'opérateur instanceof pour vérifier si un objet implémente une interface. Effectuez une conversion pour appeler les méthodes définies dans l'interface. Utilisez l'opérateur instanceof pour vérifier si un objet implémente une interface. Effectuez une conversion pour appeler les méthodes définies dans l'interface. public void aMethod(Object obj) { … if (obj instanceof Sortable) ((Sortable)obj).compare(obj2); }

19 10-19 Résumé Durant ce cours, vous devriez avoir retenu que : Une classe abstraite ne peut pas être instanciée. Une méthode abstraite possède une signature, mais pas de code. Une interface est une collection de méthodes abstraites devant être implémentées ailleurs. Une classe peut implémenter de nombreuses interfaces. L'implémentation de plusieurs interfaces est comparable à l'héritage multiple. Durant ce cours, vous devriez avoir retenu que : Une classe abstraite ne peut pas être instanciée. Une méthode abstraite possède une signature, mais pas de code. Une interface est une collection de méthodes abstraites devant être implémentées ailleurs. Une classe peut implémenter de nombreuses interfaces. L'implémentation de plusieurs interfaces est comparable à l'héritage multiple.


Télécharger ppt "1010 Structuration du code en utilisant les classes abstraites et les interfaces."

Présentations similaires


Annonces Google