Programmation - Classes abstraites, Interfaces et classes imbriquées - Classes abstraites. Classe abstraite. cm03-abstraction.pdf March 22,

Documents pareils
Programmer en JAVA. par Tama

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

Projet de programmation (IK3) : TP n 1 Correction

Package Java.util Classe générique

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

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

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

Auto-évaluation Programmation en Java

TP1 : Initiation à Java et Eclipse

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

Java Licence Professionnelle CISII,

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

as Architecture des Systèmes d Information

Programmation Par Objets

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

Chapitre 10. Les interfaces Comparable et Comparator 1

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Langage Java. Classe de première SI

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

Programme Compte bancaire (code)

TD/TP PAC - Programmation n 3

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 )

Programmation par les Objets en Java

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

TD/TP PAC - Programmation n 3

Corrigé des exercices sur les références

Une introduction à Java

INITIATION AU LANGAGE JAVA

Programmation avec des objets : Cours 7. Menu du jour

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

Cours 1: Java et les objets

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

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

Threads. Threads. USTL routier 1

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

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)

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Programmation Orientée Objet

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

F. Barthélemy. 17 mai 2005

RMI le langage Java XII-1 JMF

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Corrigés des premiers exercices sur les classes

ACTIVITÉ DE PROGRAMMATION

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

Classe Interne, Anonyme & Enumération

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Développement Logiciel

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

Remote Method Invocation en Java (RMI)

Initiation à JAVA et à la programmation objet.

Un ordonnanceur stupide

Programmation en Java IUT GEII (MC-II1) 1

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

TP, première séquence d exercices.

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

Bases Java - Eclipse / Netbeans

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

LOG4430 : Architecture logicielle et conception avancée

Synchro et Threads Java TM

Remote Method Invocation (RMI)

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Chapitre VI- La validation de la composition.

Utiliser Java sans BlueJ

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

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

Derrière toi Une machine virtuelle!

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Exercices sur les interfaces

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Java 1.5 : principales nouveautés

Programmation Objet I

Dis papa, c est quoi un bus logiciel réparti?

1 Définition d une classe en Java

Java Licence Professionnelle CISII,

PROGRAMMATION PAR OBJETS

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Création d objet imbriqué sous PowerShell.

TD2 Programmation concurrentielle

Support de cours et TD Programmation Orientée Objet

INF 321 : mémento de la syntaxe de Java

Plan du cours. Historique du langage Nouveautés de Java 7

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Java c est quoi? Java pourquoi?

4. Groupement d objets

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Introduction : les processus. Introduction : les threads. Plan

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

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

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Transcription:

Plan Classes abstraites Interface Classes/Interfaces internes Plan Classes abstraites Interface Classes/Interfaces internes Programmation - Classes abstraites, Interfaces et classes imbriquées - Nicolas Malandain 1 Classes abstraites En Java Exemple 2 Interface En Java Exemple 1 Exemple 2 March 22, 2005 as 3 Classes/Interfaces internes s Exemple : interne static Exemple : interne as Architecture des Systèmes d Information Architecture des Systèmes d Information Classes abstraites, Interfaces et classes imbriquées 1 / 21 Classes abstraites, Interfaces et classes imbriquées 2 / 21 Plan Classes abstraites Interface Classes/Interfaces internes En Java Exemple Classes abstraites Plan Classes abstraites Interface Classes/Interfaces internes En Java Exemple Classe abstraite Permet la définition de types incomplets le comportement est connu mais non défini (méthode abstraite classe abstraite) le comportement est incomplet (classe abstraite) Permet de définir un type commun à plusieurs classes concrètes Définition Classe considérée incomplète donc non instanciable Syntaxe abstract class ClasseAbstraite {... Classes abstraites, Interfaces et classes imbriquées 3 / 21 Classes abstraites, Interfaces et classes imbriquées 4 / 21 cm03-abstraction.pdf March 22, 2005 1

Plan Classes abstraites Interface Classes/Interfaces internes En Java Exemple Méthode abstraite Définition Méthode incomplète : déclarée mais non définie (pas de corps) classe abstraite Syntaxe Remarque abstract class ClasseAbstraite { abstract void methodeabstraite(...); Toute classe héritant d une classe contenant des méthodes abstraites est abtraite si elle ne définit pas toutes les méthodes abstraites Plan Classes abstraites Interface Classes/Interfaces internes En Java Exemple Figure.java public abstract class Figure { private static int compteuridentifiant; private int identifiant; public Figure() { identifiant=compteuridentifiant++; public abstract double surface(); public String tostring() { return getclass().getsimplename()+"("+identifiant+") : "+surface(); Classes abstraites, Interfaces et classes imbriquées 5 / 21 Classes abstraites, Interfaces et classes imbriquées 6 / 21 Plan Classes abstraites Interface Classes/Interfaces internes En Java Exemple Plan Classes abstraites Interface Classes/Interfaces internes En Java Exemple LeRectangle.java public class LeRectangle extends Figure { private double longueur, largeur; public LeRectangle(double _longueur, double _largeur) { longueur = _longueur; largeur = _largeur; public double surface() { return longueur*largeur; LeCarre.java public class LeCarre extends LeRectangle { public LeCarre(double cote) { super(cote,cote); LeCercle.java public class LeCercle extends Figure { private double rayon; public LeCercle(double _rayon) { rayon = _rayon; public double surface() { return Math.PI*rayon*rayon; ClassesAbstraites.java import java.util.arrays; public class ClassesAbstraites { public static void main(string[] args) { Figure[] figures={ new LeCarre(20), new LeRectangle(15,10), new LeCercle(10); System.out.println(Arrays.toString(figures)); Classes abstraites, Interfaces et classes imbriquées 7 / 21 Classes abstraites, Interfaces et classes imbriquées 8 / 21 cm03-abstraction.pdf March 22, 2005 2

Interface Métaphore Les interfaces sont un peu comme les décorations des scouts. Lorsqu un scout a appris à construire une cabane, il peut se promener avec une petite décoration sur l une de ses manches. Cela indique à tout le monde : je sais comment construire une cabane Java par la pratique (O Reilly) P. Niemeyer & J. Peck. Une interface est quasi équivalente à une classe abstraite pure Son utilisation peut être vue comme un héritage comportementale Elle permet la déclaration de comportement identiques dans des arbres de classes différents Propriétés : Syntaxe les attributs sont public static final ( constantes) les méthodes sont toutes abstract public les interfaces acceptent l héritage multiple entre elles une seule interface public par fichier (idem class) non instanciable Déclaration interface NomInterface { // attributs (par défaut public, static, final) // méthodes (par défaut abstract, public) Utilisation class LaClasse implements NomInterface1,... { Classes abstraites, Interfaces et classes imbriquées 9 / 21 Classes abstraites, Interfaces et classes imbriquées 10 / 21 Rotation.java public interface Rotation { void tourner(int px, int py, int angle); Translation.java public interface Translation { void translater(int vx, int vy); Transformation.java public interface Transformation extends Rotation, Translation { Toute classe peut maintenant implémenter une ou plusieurs de ces interfaces Classes abstraites, Interfaces et classes imbriquées 11 / 21 ClassesAbstraitesInterfaces.java import java.util.arrays; public class ClassesAbstraitesInterfaces { public static void main(string[] args) { Figure[] figures={ new LeCarre(20), new LeRectangle(15,10), new LeCercle(10); Ordre.trier(figures); System.out.println(Arrays.toString(figures)); Voiture[] voitures={ new Voiture("1234SZ76",6), new Voiture("5678AZ27",10), new Voiture("910XE61",2); Ordre.trier(voitures); System.out.println(Arrays.toString(voitures)); InterfaceComparable public interface InterfaceComparable { int comparea(interfacecomparable comparable); Classes abstraites, Interfaces et classes imbriquées 12 / 21 cm03-abstraction.pdf March 22, 2005 3

Ordre.java public class Ordre { private static void echanger(interfacecomparable[] tableau, int a, int b) { InterfaceComparable tmp; tmp=tableau[a]; tableau[a]=tableau[b]; tableau[b]=tmp; private static int trouverindicedumax(interfacecomparable[] tableau, int debut, int fin) { if (debut<0 fin>=tableau.length debut>fin) return -1; int indicedumax=debut; for(int i=debut; i<=fin; i++) if (tableau[indicedumax].comparea(tableau[i])<0) indicedumax = i; return indicedumax; public static void trier(interfacecomparable[] tableau) { if (tableau.length<2) return; int indicedumax; for(int derniereplace=tableau.length-1; derniereplace>0; derniereplace--) { indicedumax=trouverindicedumax(tableau,0,derniereplace); echanger(tableau,indicedumax,derniereplace); Classes abstraites, Interfaces et classes imbriquées 13 / 21 reprise de Figure.java public abstract class Figure implements InterfaceComparable {... public abstract double surface(); public int comparea(interfacecomparable c) { if (c instanceof Figure) if (surface() > ((Figure)c).surface()) return 1; if (surface() < ((Figure)c).surface()) return -1; return 0;... Classes abstraites, Interfaces et classes imbriquées 14 / 21 Voiture.java public class Voiture implements InterfaceComparable { private String immatriculation; private int puissance; public Voiture(String _immatriculation, int _puissance) { immatriculation = _immatriculation; puissance = _puissance; public int getpuissance() { return puissance; public String getimmatriculation() { return immatriculation; public int comparea(interfacecomparable c) { if (c instanceof Voiture) if (puissance > ((Voiture)c).getPuissance()) return 1; if (puissance < ((Voiture)c).getPuissance()) return -1; return 0; public String tostring() { return immatriculation+"("+puissance+")"; Plan Classes abstraites Interface Classes/Interfaces internes s Exemple : interne static Exemple : interne Description Déclaration d une classe dans une autre Les classes internes permettent de renforcer les relations entre deux classes. Par exemple : un curseur texte n a de sens que dans un composant texte (Tutoriel Java de SUN, http: // java. sun. com ) Classes abstraites, Interfaces et classes imbriquées 15 / 21 Classes abstraites, Interfaces et classes imbriquées 16 / 21 cm03-abstraction.pdf March 22, 2005 4

Plan Classes abstraites Interface Classes/Interfaces internes s Exemple : interne static Exemple : interne Quatre types de classes internes... Plan Classes abstraites Interface Classes/Interfaces internes s Exemple : interne static Exemple : interne classe interne (inner class) Une instance n existe que dans une instance englobante. Tous les membres de classe englobante lui sont accessibles (références : this et ClasseEnglobante.this). Une interface ne peut être de ce type car non instanciable classe interne static (nested class) Elle accède aux membres statiques de la classe englobante. Elle ne possède pas de référence sur l objet englobant l ayant créé classe locale Ce type de classe est déclaré dans une méthode et à le même comportement qu une classe interne. Sa portée est locale au bloc, elle peut accéder aux membres de la classe englobante et uniquement aux variables locales final du bloc. classe anonyme Il s agit d une classe locale ne portant de nom (hériste d une classe abstraite ou non, ou implémente une interface). Elle est instancié au moment de sa déclaration. Elle est utilisée lors d un besoin unique. Classes abstraites, Interfaces et classes imbriquées 17 / 21 Classes abstraites, Interfaces et classes imbriquées 18 / 21 Plan Classes abstraites Interface Classes/Interfaces internes s Exemple : interne static Exemple : interne ListeChainee.java public class ListeChainee { private Noeud tete; public static class Noeud { private Object valeur; private Noeud suivant; public Noeud(Object valeur) { this.valeur = valeur; public Noeud(Object valeur, Noeud suivant) { this.valeur = valeur; this.suivant = suivant; public void setvaleur(object valeur) { this.valeur = valeur; public Object getvaleur() { return valeur; public Noeud getnoeudsuivant() { return suivant; public void setnoeudsuivant(noeud suivant) { this.suivant = suivant; public ListeChainee() { public ListeChainee(Object valeur) { tete = new Noeud(valeur); public Noeud gettete() { return tete; public void ajouterentete(object valeur) { tete = new Noeud(valeur, tete); public Object retirertete() { Object obj=tete.getvaleur(); tete=tete.getnoeudsuivant(); return obj; public String tostring() { StringBuffer sb = new StringBuffer(); sb.append("listechainee : "); Noeud courant = tete; while (courant!= null) { sb.append(courant.getvaleur()); sb.append(" / "); courant = courant.getnoeudsuivant(); return sb.tostring(); Classes abstraites, Interfaces et classes imbriquées 19 / 21 Plan Classes abstraites Interface Classes/Interfaces internes s Exemple : interne static Exemple : interne Jeu.java... public class Jeu { private Plateau plateau; private Personnage[] personnages; private int nbpersonnages; private interface Joueur { public void jouer(); public abstract class Personnage { protected int pv; protected int vitesse; public Personnage(int pv, int vitesse) { this.pv = pv; this.vitesse = vitesse; public void setvitesse(int vitesse) { this.vitesse = vitesse; public int getvitesse() { return vitesse; public void setpointvie(int pv) { this.pv = pv; public int getpointvie() { return pv; private class Monstre extends Personnage implements Joueur { public Monstre() { super(5, 10); public void jouer() { System.out.println("Gnark gnark gnark!!!"); private class Homme extends Personnage implements Joueur { public Homme() { super(10, 4); public void setvitesse(int vitesse) { if (plateau.aubord(this)) super.setvitesse(0); super.setvitesse(vitesse); public void jouer() { System.out.println("Je me promène"); Classes abstraites, Interfaces et classes imbriquées 20 / 21 cm03-abstraction.pdf March 22, 2005 5

Plan Classes abstraites Interface Classes/Interfaces internes s Exemple : interne static Exemple : interne Jeu.java (fin) public Jeu(int nbpersonnagesmax) { personnages=new Personnage[nbPersonnagesMax]; public Personnage creerpersonnage() { if ( nbpersonnages < personnages.length) if ((Math.random()*2) >= 1) return personnages[nbpersonnages++]=new Monstre(); return personnages[nbpersonnages++]=new Homme(); return null; public void effectuertourjeu() { for(int i=0; i<nbpersonnages; i++) ((Joueur)personnages[i]).jouer(); idée générale : un jeu où un maître du jeu peut créer des Personnage, il peut uniquement modifier les vitesses ou les points de vie, mais en aucun cas les faire jouer un par un il ne peut qu effectuer un tour de jeu pour tous via la classe Jeu. Plateau.java public class Plateau { // méthodes et attributs permettant de gérer un plateau de jeu public boolean aubord(jeu.personnage p) { return (Math.random()*2)>=1; // devrait tester la case Classes abstraites, Interfaces et classes imbriquées 21 / 21 cm03-abstraction.pdf March 22, 2005 6