Objectifs À la fin de ce cours, vous serez capables de :

Slides:



Advertisements
Présentations similaires
Gestion des événements (suite)
Advertisements

SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Calculs de complexité d'algorithmes
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Approfondissement du langage
F. Voisin : Introduction à Java 1 Introduction à Java - les interfaces - Frédéric VOISIN FIIFO - « Remise à Niveau »
Programmer en JAVA par Tama
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Introduction à la POO: Les classes vs les objets
Chapitre III Héritage (début)
Principes de programmation (suite)
Programmation orientée objet
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Principes de la technologie orientée objets
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Langage Oriente Objet Cours 4.
COURS DE PROGRAMMATION ORIENTEE OBJET :
POO-L3 H. Fauconnier1 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X(); //non xA[1]=new Z(); //non Object XX[]int[] YZY[]Z[]
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
IFT1025, Programmation 2 Jian-Yun Nie
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Classes abstraites et Interfaces
Interfaces (fin) classes locales et internes, Object, clonage.
1 Objectifs de ce cours (I21) Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde Résumé du cours précédent.
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Interfaces : comment classifier ?
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
Introduction au paradigme orienté-objet (suite)
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Chapitre 9 Les sous-programmes.
Formation Développeur Java Programmation objet avec JAVA Partie 2
Cours 5 Héritage, Interfaces, classes internes. POO-L3 H. Fauconnier2 La classe Object Toutes les classes héritent de la classe Object Object méthodes:
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
Héritage et composition
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Les principes de la modélisation de systèmes
Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.
11/04/ L'héritage Cours 7 Cours 7.
Algorithmique et programmation (1)‏
Programmation objet La base.
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
Cours 7 Classes locales Clonage Divers: tableaux.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Tutorat en bio-informatique
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Cours du 5 novembre.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Classes abstraites, interface Classe interne Classes enveloppes
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Template Method Design Pattern. But Définir le squelette d’un algorithme tout en déléguant certaines étapes aux sous-classes. Les sous-classes peuvent.
Retour sur les interfaces Les méthodes définies dans une interface sont des méthodes qui doivent absolument être implémentées par une ou des sous-classes.
Transcription de la présentation:

Structuration du code en utilisant les classes abstraites et les interfaces

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

Superclasse abstraite Sous-classes concrètes 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. Superclasse abstraite InventoryItem Sous-classes concrètes Car Movie VCR

Définition des classes abstraites dans Java 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()…

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.

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 ? public abstract class InventoryItem { public abstract boolean isRentable(); …

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.

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. Non dirigeable Dirigeable

Définition d'une interface 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); }

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) {…} }

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

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

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

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); }

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; } } } } }

La classe Movie Implémente Sortable 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)); }

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); }

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. public void aMethod(Object obj) { … if (obj instanceof Sortable) ((Sortable)obj).compare(obj2); }

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.