JAVA et l'orientation objet Jean-Jacques LE COZ. Encapsulation L'encapsulation est le concept de masquer l'implémentation de la classe De ne permettre.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Spécialisation/généralisation Héritage Polymorphisme.
1 Quelques précisions sur l'héritage. 2 Signification de super.f() appel à la méthode f() masquée super : désigne l'objet appelant comme s'il était de.
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Au programme du jour …. Introduction à lhéritage Un concept important de la programmation objet Livraison de code Organisation des répertoires et packages.
Au programme du jour …. Livraison de code Organisation des répertoires et packages Ce que vous navez pas encore vraiment vu Constantes et variables de.
Approfondissement du langage
F. Voisin : Introduction à Java 1 Introduction à Java - les interfaces - Frédéric VOISIN FIIFO - « Remise à Niveau »
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
Programmation par Objets et Java
Chapitre III Héritage (début)
Programmation orientée objet
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Langage Oriente Objet Cours 4.
Premier cours (23 septembre). Cours programmation- orientée objet en Java Licence dinformatique Hugues Fauconnier
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
C++ : classes Introduction aux Langages Orientés Objets
Java Héritage, interfaces.
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.
Classes abstraites et Interfaces
POO : Objets et classes (Rappels)
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.
Interfaces : comment classifier ?
Structures de données IFT-2000
Structures de données IFT-10541
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.
Rappels Java.
Introduction au paradigme orienté-objet (suite)
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
POO-L3 H. Fauconnier1 Supplément gratuit…. POO-L3 H. Fauconnier2 Entrée-sortie public static void main(String[] args) { // sortie avec printf ou double.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Types de données abstrait et mécanismes d'encapsulation
Cours 4 Héritage (suite).
COURS DE PROGRAMMATION ORIENTEE OBJET :
Héritage et composition
Travaux Pratiques Représentation des connaissances
Objectifs À la fin de ce cours, vous serez capables de :
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
La notion de type revisitée en POO
11/04/ L'héritage Cours 7 Cours 7.
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.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
C++ L’HERITAGE Fayçal BRAÏKI DUT 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.
C# de plus près.  Ce sont globalement les mêmes que Java : ◦ Int(int16, int32), float, double, bool,…  Les classe « communes » sont également les mêmes.
Cours du 5 novembre.
Les classes Introduction aux Langages Orientés Objets
La programmation par objets Principes et concepts Etude de Smalltalk.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Chapitre VII Techniques plus avancées à travers le concept de classe.
Introduction à la programmation objet avec java
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Classes abstraites, interface Classe interne Classes enveloppes
Introduction à la Programmation Orientée Objet
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
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é.
Chapitre 7: Héritage Présentation pour Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus Java Software.
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
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.
Introduction à l'orienté objet. Définition Le terme orienté objet siginifie que l'on organise le logiciel comme une collection d'objets organisée en graphe.
Transcription de la présentation:

JAVA et l'orientation objet Jean-Jacques LE COZ

Encapsulation L'encapsulation est le concept de masquer l'implémentation de la classe De ne permettre l'accès qu'à l'interface de la classe Réalisation Positionner la visibilité des membres ne faisant pas partie de l'interface à la valeur private ou protected

Accès aux membres privés Java définit un standard pour l'accès aux membres données cachés par l'encapsulation Le standard JavaBean Méthodes d'accès Méthodes get et set dont la visibilité est public Méthodes is pour celles qui retournent un booléen

Exemple d'encapsulation public class Personne { private String nom; private boolean celibataire = true; public Personne() {} public Personne(String nom) { this.setNom(nom); } public void setNom(String nom) { this.nom = nom; } public String getNom() { return this.nom; } public boolean isCelibataire() { return celibataire; } public void setCelibataire(boolean situation) { this.celibataire = situation; } }

Visibilités Java

Variables d'instance Ce sont les membres données avec la visibilité private ou protected Accessibles que via les méthodes set et get (standard JavaBean) Attention même privées les données membres sont toutefois visibles entre objets du même type

Variables de classe Ce sont les données membres déclarées avec le mot réservé static Elles existent hors des instances Une variable de classe est partagée par toutes les instances private static String variable;

Constantes Même concept que dans le langage C Définies avec le mot réservé final private final static String CONSTANTE= ''ABCD'';

Méthodes de classe Ce sont les méthodes déclarées avec le mot réservé static Elles peuvent être invoquées hors l'existence d'une instance public class Maclasse { public static void methode() { System.out.println(''Bonjour''); }... Maclasse.methode();

Constructeur Méthode spéciale Sans type retour Ayant toujours pour nom celui de la classe Une classe peut posséder plusieurs constructeurs surchargés Si pas de constructeur défini alors le langage offre le constructeur dit par défaut

Exemple avec constructeurs public class Personne { private String nom; private String adresse; public Personne() {} public Personne(String nom) { this.nom = nom; } public Personne(String nom, String adresse) { this.nom = nom; this.adresse = adresse; }

Héritage et abstraction La relation « est un » ou « est une sorte de » IS-A relationship Basée sur la spécialisation et l'héritage Pas d'héritage multiple Implémentation Avec le mot réservé extends Pas de possibilité d'indiquer des règles d'héritage L'héritage correspond à l'héritage public du C++ Il dépend de la visibilité des membres de la sur-classe

Exemple de spécialisation public class Animal {... } public class Chat extends Animal {... }

Spécialisation Permet de définir un sous-type, une sous- classe avec le mot réservé extends Les classes définissent une hiérarchie dont la racine est la classe Object Le mécanisme d'héritage exclue l'héritage des constructeurs Le mot réservé super permet de faire référence à un membre de la sur-classe La méthode réservée super() permet de faire référence au constructeur de la sur- classe

Relation « a un » ou « a des » Si une classe possède une référence sur une autre classe on dit qu'elle a une relation « a un » HAS-A relationship public class Automobile { private Moteur moteur;... }

Exemple de HAS-A relation public class Automobile { private Moteur moteur; private Roue[ ] roues = new Roue[4] ;... }

Interfaces Le langage Java implémente le concept d'interface Une interface est un contrat de comportement public Les classes qui implémentent une interface doivent en implémenter toutes ses méthodes C'est le mot réservé implements qui permet de préciser qu'une classe implémente une interface

Définition d'interface public interface Humain { final String GENRE_MASCULIN = ''MASCULIN''; final String GENRE_FEMININ = ''FEMININ''; public void marcher(); public void parler(); public void rire(); }

Implémentation public class Personne implements Humain {... public void marcher() {.... } public void parler() {... } public void rire() {... }... }

Utilisation d'interfaces Permet de masquer les vrais types des objets Notamment dans les collections Peut servir de vecteur au polymorphisme Isolation plus sûre qu'avec les classes abstraites Exemple public class CommunautéHumaine { private Humain[ ] collection = new Personne[100];

Principe d'isolation parfait A partir d'une interface Exposition du contrat de comportement Réaliser une implémentation par une classe abstraite Factorisation des données communes Factorisation des comportements communs Réaliser une spécialisation par des classes concrètes Implémentation concrète des comportements polymorphes

Diagramme UML

Polymorphisme Capacité des objets à réagir différemment au même message. Le comportement polymorphe est obtenu par des méthodes polymorphes Le polymorphisme repose sur la dérivation de classes et/ou leur implémentation Les méthodes polymorphes sont abstraites dans les sur-classes et redéfinies dans les sous-classes concrètes

Java et le polymorphisme Possible via les classes abstraites et les interfaces Le mécanisme de choix de la méthode à exécutée se fait lors du runtime Il faut prévenir le langage que le comportement polymorphe est attendu En attachant aux objets deux types Le type déclaré et le type inhérent

Exemple UML

Exemple Java Interface instancea = new ClasseA(); Interface instanceb = new ClasseB(); instancea.methode-polymorphe(); instanceb.methode-polymorphe(); Classe-abstraite instancec = new ClasseC(); Classe-abstraite instanced = new ClasseD(); instancec.methode-polymorphe(); instanced.methode-polymorphe();

Classes imbriquées Une classe imbriquée est une classe déclarée dans une autre classe Visibilités d'une classe imbriquée public,private, protected Portées d'une classe imbriquée final, abstract, static

Exemple public class Maclasse { private MaclasseImbriquee laclasse = new MaclasseImbriquee();... protected class MaclasseImbriquee {... }

Expressions régulières

Collections Les collections sont essentielles en Java Elles couvrent un grand nombre de classes et d'interfaces Depuis Java 5 (Tiger) elles peuvent être paramétrées Par défaut elles contiennent des Object Phénomène d'aplatissement Il s'agit d'un véritable framework

Collection, interfaces, classes Collection est l'interface racine Sous-interfaces List, Set, Map Classes Implémentation de List ArrayList, LinkedList, Vector Implémentation de Set HashSet, LinkedHashSet, TreeSet Implémentation de Map HashMap, HashTable, TreeMap, LinkedHashMap

Implémentation de List Quand la collection ne nécessite pas d'être synchronisée il faut préférer la classe d'implémentation ArrayList Quand la collection nécessite d'être synchronisée et donc sûre au niveau des Threads il faut choisir la classe Vector

Accès aux membres des collections Avec l'implémentation Java du Design Pattern Iterator Avec la nouveauté Java 5: for Exemple... Iterator it = communautéHumaine.iterator(); while(it.hasNext()) { Humain courant = (Humain) it.next(); System.out.println((courant.parler()); }...

Collections typées A l'aide des Generics Nouveauté java 5 Syntaxe Collection communauté; communauté = new ArrayList ();

Nouvautés Java 5 public class Exemple { private Collection collection = new ArrayList ();... public boolean rechercher(String argument) { for(String s : collection) if(s.equals(argument)) return true; return false; }

Dates Classes pour manipuler les dates Calendar DateFormat SimpleDateformat DateFormatSymbols Création d'une instance de Date Date ladate = new Date(); Date ladate = new Date(System.currentTimeMillis());

Entrées/sorties

Ressources

Références The Java Language Specification, Gosling, J., Joy, B., and Steele, G. Addison- Wesley, 2000, ISBN Java in a Nutshell, Flanagan, D. O'Reilly & Associates, 1999, ISBN Core Java 2, Volume I - Fundamentals, Horstmann, C.S. and Cornell, G. Prentice Hall, 1999, ISBN Core Java 2, Volume II - Advanced Features, Horstmann, C.S. and Cornell, G. Prentice Hall, 2000, ISBN Sun Microsystem's Java tutorial