Chapitre 6 Abstraction et utilisation des interfaces

Documents pareils
Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Héritage presque multiple en Java (1/2)

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

INITIATION AU LANGAGE JAVA

Initiation à JAVA et à la programmation objet.

Programmer en JAVA. par Tama

TP1 : Initiation à Java et Eclipse

F. Barthélemy. 17 mai 2005

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Auto-évaluation Programmation en Java

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Diagramme de classes

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Chapitre VI- La validation de la composition.

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Université de Bangui. Modélisons en UML

Généralités sur le Langage Java et éléments syntaxiques.

Programmation par les Objets en Java

Programmation Orientée Objet en C#

TD/TP PAC - Programmation n 3

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

RMI le langage Java XII-1 JMF

Une introduction à Java

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Support de cours et TD Programmation Orientée Objet

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Classe Interne, Anonyme & Enumération

Objets et Programmation. origine des langages orientés-objet

Remote Method Invocation (RMI)

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Premiers Pas en Programmation Objet : les Classes et les Objets

Création d objet imbriqué sous PowerShell.

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Projet de programmation (IK3) : TP n 1 Correction

Remote Method Invocation en Java (RMI)

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

TP1 : Initiation à Java et Eclipse

Traduction des Langages : Le Compilateur Micro Java

Classes et Objets en Ocaml.

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Ingénérie logicielle dirigée par les modèles

Langage Java. Classe de première SI

Programmation Objet Java Correction

Composants Logiciels. Le modèle de composant de CORBA. Plan

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Environnements de développement (intégrés)

Programmation. fonctionnelle, impérative, logique et orientée objet

TP1. Outils Java Eléments de correction

Génie Logiciel avec Ada. 4 février 2013

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

TD/TP PAC - Programmation n 3

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

as Architecture des Systèmes d Information

Les frameworks au coeur des applications web

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Programmation par composants (1/3) Programmation par composants (2/3)

Programmation Orientée Objet application au langage Java Version Novembre 2007

Interfaces graphiques avec l API Swing

Package Java.util Classe générique

Projet gestion d'objets dupliqués

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Chapitre I : le langage UML et le processus unifié

Tutoriel BlueJ. Michael Kölling Mærsk Institute University of Southern Denmark. Version 1.4 fr-2 par le groupe Sigma 1 pour BlueJ Version 1.2.

Générer du code à partir d une description de haut niveau

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmation en Java IUT GEII (MC-II1) 1

et Programmation Objet

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Java DataBaseConnectivity

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Programmation Orientée Objet

Utilisation d objets : String et ArrayList

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Rapport de Projet Béatrice Frey et Cyril Crassin Printemps Projet Fourmis. Université de Technologie de Belfort-Montbéliard

Chapitre 2. Classes et objets

CPR Informatique. (poste 3159 ou 3164) Septembre 2002

Tp 1 correction. Structures de données (IF2)

Java Licence professionnelle CISII,

Design patterns. Design patterns - définition. Design patterns - avantages

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

3. UML - Unified Modeling Language Diagrammes statiques

Introduction à LDAP et à Active Directory Étude de cas... 37

IFT2255 : Génie logiciel

Transcription:

Chapitre 6 Abstraction et utilisation des interfaces 1. Les classes Abstraites Une classe abstraite est une classe qui ne permet pas d instancier des objets, elle ne peut servir que de classe de base pour une dérivation (héritage). Le recours aux classes abstraites facilite largement la conception orientée objet. On peut placer dans une classe abstraite toutes les fonctionnalités dont on souhaite disposer pour les classes descendantes sous forme de méthodes abstraites dont on est alors sûr qu elles existeront dans toute classe dérivée mais dont on ne sait pas encore leur implémentation. Dans une classe abstraite, on peut trouver classiquement des méthodes et des champs, dont héritera toute classe dérivée et on peut trouver des méthodes dites «abstraites» qui fournissent uniquement la signature (le Nom de méthode, les paramètres de la méthode et le type de retour). Le mot clé abstract s'applique aux méthodes et aux classes. Abstract indique que la classe ne pourra être instanciée telle quelle. De plus, toutes les méthodes de cette classe abstract ne sont pas implémentées et devront être redéfinies par des méthodes complètes dans ses sous classes. Remarque Une classe possédant une méthode abstraite est forcément une classe abstraite. Une classe abstraite peut ne pas contenir de méthode abstraite. Une méthode abstraite ne doit pas contenir de code source : juste la déclaration de la méthode. Elle correspond à une méthode dont on veut forcer l'implémentation dans une sous classe. L'abstraction permet une validation du code : une sous classe sans le modificateur abstract et sans définition explicite d'une ou des méthodes abstraites génère une erreur de compilation. On ne peut utiliser le mot clés «abstract» avec les attributs

1.1. Syntaxe de déclaration des classes et des méthodes abstraites public abstract class NomClasseAbstraite { public abstract typederetour NomMethodeAbstraite(type param1, type param2, ) ; public class NomClasseFille extends NomClasseAbstraite { public typederetour NomMethodeAbstraite(type param1, type param2, ) {. // définir le code source de la méthode abstraite dans la classe descendante. 1.2. Exemple public abstract class Etudiant { public abstract double calculmoyenne() ; // méthode déclarée sans code source

public class Etudiant1et2 extends Etudiant { public double calculmoyenne() { return((note1+note2)/2); public class Etudiant3 extends Etudiant { public double calculmoyenne() { return(( (note1*2)+notepfe) / 3); 2. Les interfaces Les interfaces permettent de mettre en œuvre un mécanisme d abstraction et permettent aussi de mettre en œuvre le principe d'héritage multiple où une classe peut hériter en même temps de plusieurs super classes. Une interface est un ensemble de constantes et de déclarations de méthodes correspondant un peu à une classe abstraite. Toutes les classes qui implémentent une interface possèdent les méthodes et les

constantes déclarées dans celle-ci. Plusieurs interfaces peuvent être implémentées dans une même classe. Les interfaces se déclarent avec le mot clé «interface» et sont intégrées aux autres classes avec le mot clé «implements». Une interface est implicitement déclarée avec le modificateur «abstract». Déclaration d'une interface : [public] interface nominterface [extends nominterface1, nominterface2... ] { // insérer ici des méthodes ou des champs static Implémentation d'une interface : [Modificateurs] class nomclasse [extends superclasse] [implements nominterface1, nominterface 2,...] { //insérer ici des méthodes et des champs Exemple : public interface InterfaceEtudiant { public void AfficherEtudiant(); public void saisir(); public double calculmoyenne() ;

public void affichermoyenne (); public class Etudiant implements InterfaceEtudiant { // il faut donner le code de toutes les méthodes définies dans l interface sinon une erreur sera //affichée indiquant qu il y a une méthode non encore implémentée. Remarques Importantes concernant l utilisation des interfaces Une classe qui implémente une interface doit définir le code source de toutes les méthodes définies dans l interface. Une erreur sera affichée si le programmeur oublie d implémenter une des méthodes définies dans l interface. Si la classe qui implémente une interface est définie avec «Abstract», Le programmeur peut ignorer certaines méthodes qui doivent être implémentées forcement dans les classes descendantes qui héritent de la classe abstraite. Sinon une erreur sera affichée indiquant qu une méthode n est pas encore implémentée. Toutes les méthodes d'une interface sont abstraites : elles sont implicitement déclarées comme telles même si le programmeur ne l indique pas. Les seuls attributs que l'on peut définir dans une interface sont des attributs de classe qui doivent être constantes : elles sont donc implicitement déclarées avec le modificateur «static» et «final» même si le programmeur utilise d'autres modificateurs. Une interface peut être d'accès public ou package. Si elle est publique, toutes ses méthodes sont implicitement publiques même si elles ne sont pas déclarées avec le modificateur public. Si elle est d'accès package, il s'agit d'une interface d'implémentation pour les autres classes du package et ses méthodes ont le même accès package : elles sont accessibles à toutes les classes du packages.