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.

Slides:



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

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.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
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.
Introduction à Java - les paquetages -
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
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
Programmation orientée objet
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.
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Langage Oriente Objet Cours 4.
Principes de programmation (suite)
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.
© 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
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)
Langage Oriente Objet Cours 2.
Structures de données IFT-2000
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.
Introduction à la programmation objet Langage Java
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Introduction au paradigme orienté-objet (suite)
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Cours 4 Héritage (suite).
COURS DE PROGRAMMATION ORIENTEE OBJET :
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
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.
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.
Programmation objet La base.
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
Réaliser par: Sadok Amel Cheboui hassiba
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
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.
Le polymorphisme.
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)
Les classes Introduction aux Langages Orientés Objets
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
Héritage Conception par Objet et programmation Java
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Introduction à la Programmation Orientée Objet
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
LES CLASSES ET LES OBJETS
Spécialisation covariante cours et TP. Plan  Introduction  Rappels théoriques  Définition de la covariance  Présentation du modèle servant d'exemple.
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.
Principes de l'orienté objet Jean-Jacques LE COZ.
Transcription de la présentation:

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. Chaque objet est capable de mémoriser un état via une structure de données et est doué de comportement grâce à ses méthodes.

Objet et classe Objet Possède une identité. Est une entité réelle encore appelée instance. Il occupe de l'espace mémoire pour mémoriser son état. Il consomme des ressources CPU lorsque son comportement est invoqué. Classe Est un modèle utilisé pour créer des objets présentants des caractéristiques communes.

Identité Chaque objet possède une identité propre. L'identité est attachée à l'existence de chaque objet. L'identité est indépendante de l'état des objets. L'identité est fournie par l'environnement d'exécution. OBJET = identité + état + comportement

Identité – égalité (1) public class Personne { private String nom; public Personne() {} public Personne(String nom) { this.setNom(nom); } public void setNom(String nom) { this.nom = nom; } public String getNom() { return nom; } public boolean egalite(Personne personne) { return this.getNom().equals(personne.getNom(); } }

Identité – égalité (2) public class Main { public static void main(String args[ ]) { Personne p1 = new Personne(''Dupont''); Personne p2 = new Personne(''Dupont''); Personne p3 = p1; if(p1 == p2) System.out.println(''identiques''); // faux else System.out.println(''pas identiques''); // vrai if(p1 == p3) System.out.println(''identiques''); // vrai else System.out.println(''pas identiques''); // faux if(p1.egalite(p2)) System.out.println(''égaux''); // vrai else System.out.println(''pas égaux''); // faux }

État et comportement État Tous les objets d'une même classe ont la même structure d'état, de données. La valeur de l'état stockée par les objets dépend de chaque objet. Comportement Tous les objets d'une même classe ont le même comportement.

Classe Une classe est un modèle, un gabarit, un patron, une matrice. Une classe permet la fabrication d'objets. Une classe définit un type d'objet. Elle définit l'état des objets par des attributs. Dans les langages les attributs sont des variables. Elle définit le comportement des objets par des méthodes. Dans les langages les méthodes sont des fonctions.

Exemple de classe en Java public class Client {... private String nom; private String adresse; private int code; private double caMensuels[ ];... public double caTotal() { double total; for (int i = 0; i < caMensuels.length; i++) total += caMensuels[i]; return total; }

Notion de membre Définition Un membre est un élément constitutif d'une classe ou d'un objet. Il est soit un attribut soit une méthode. Types de membre Membre de classe. Membre d'instance ou d'objet.

Types de membre Membre de classe Portée au niveau de la classe. Partagé par tous les objets. Existence indépendante de tout objet. Membre d'instance Portée au niveau de l'objet.

Membre de classe avec Java public class Client { public Client() { nombre++; } private static int nombre; public static void initialiseNombre() {nombre = 0; }... }... // aucun objet client encore créé Client.initialiseNombre(); Client premier = new client();

Désignation des membres Tous les langages à objet permettent de désigner explicitement un membre au sein d'une classe. Par un mot réservé : this, self,... Tous les membres d'une classe sont pointés par ce lien réflexif. Dans le cas de conflit de nom ce lien aide le langage à s'y retrouver.

this en Java public class Client {... private String nom;... public void setNom(String nom) { this.nom = nom; }... } conflit

Visibilité des membres Définition La visibilité définit le niveau de protection des membres de classe et d'instance. Types de visibilité Publique Protégée Privée Paquetage

Déclaration de la visibilité La visibilité se déclare au niveau de la classe. Chaque langage de programmation propose des mots réservés pour définir la visibilité. En général : public, protected, private

La visibilité publique Un membre public est : accessible par toutes les méthodes de sa classe. accessible par toutes les méthodes de toutes les autres classes.

La visibilité protégée Un membre protégé est : accessible par toutes les méthodes de sa classe. accessible par toutes les méthodes des sous- classes de sa classe. accessible par toutes les méthodes des classes du paquetage. inaccessible dans tous les autres cas.

La visibilité privée Un membre privé est : accessible par toutes les méthodes de sa classe. inaccessible dans tous les autres cas.

La visibilité paquetage Paquetage Un paquetage définit un espace de noms. Un paquetage permet de rassembler des classes dans un même ensemble. Un membre à visibilité paquetage est : accessible par toutes les méthodes des classes du paquetage. inaccessible dans tous les autres cas.

Gestion des paquetages En Java: Le mot réservé package suivi d'un nom indique que la classe appartient à celui-ci. Le mot réservé import suivi d'un nom permet aux méthodes de la classe importatrice d'accéder aux membres publics des classes de ce package. En C++: Les mots using namespace et #include

Exemple en Java package modele; import outils.Calculette; public class Voyage {... public float convertirEnDollars() { Calculette calc = new Calculette(); return calc.calculEnDollars(this.prix); }... }

Tableau des visibilités en Java

Déclaration des visibilités En Java public String unMembreD'instanceAttribut. public void unMembreD'instanceMethode (). protected static Object unMembreDeClasse (). private int unMembreD'instanceAttribut. Double unMembreD'instanceAttribut.

Déclaration des visibilités Rappels UML : Diagramme de classe Le signe – pour privé Le signe # pour protégé Le signe + pour public Diagramme de paquetage Le diagramme de paquetage rassemble les classes du même espace de nom.

Diagrammes : rappels UML

Création des objets Par des méthodes spéciales. Appelées constructeurs. Une classe peut en déclarer plusieurs. Le langage en fournit un par défaut. Signature sans type retour et nom de la méthode identique à celui de la classe.

Constructeurs en Java public class Client { public Client() { this.initialisation(); } public Client(int code, String nom, String adresse) { this.initialisation(); this.setCode(code); this.setNom(nom); this.setAdresse(adresse); }... private String nom; private String adresse; private int code; private double caMensuels[ ];... }

Exemple de création d'objet... Client unclient = new Client();... Client unAutreclient = new Client(1515, ''Marignan'', ''PARIS'');...

Communication entre objets Les objets communiquent par message. La communication passe par l'appel de méthodes. Phénomène appelé invocation. Pour communiquer les objets doivent se connaître. Système de nommage propre aux langages.

Invocation en Java... Client unclient = new Client(1515, ''Marignan'', ''PARIS'');... System.out.println(''chiffre d'affaire : '' + unclient.caTotal());...

Navigation entre objets La navigation empreinte les chemins rendus possibles par la connaissance qu'entretiennent les objets entre eux. La navigation respecte le même système de nommage que l'invocation des méthodes.

Modèle de classes public class A { private String nom=''A''; private B monB;. public String methode() { return getB().getC().getNom(); } public B getB() { return monB; } public void setB(B b) { this.monB = b; } public String getNom() { return nom; } } public class B { private String nom=''B''; private C monC; public C getC() { return monC; } public void setC(C c) { this.monC =c; } public String getNom() { return nom; } } public class C { private String nom=''C''; public String getNom() { return nom; } }

Test navigation A unA = new A(); B unB = new B(); C unC = new C(); unA.setB(unB); // préparation navigation entre unA et unB unB.setC(unC); // préparation navigation entre unB et unC... System.out.println(unA.methode()); // affiche C...

Spécialisation des classes Mécanisme permettant de sous-typer une classe, de réutiliser une classe et d'étendre ses caractéristiques en en ajoutant de nouvelles. La classe de base est dite mère, sur-classe ou encore sur-type. La classe qui spécialise une autre est appelée sous-classe, fille, sous-type ou encore dérivée.

Relation de spécialisation La spécialisation répond à la règle du «EST-UN»

Spécialisation en UML

Spécialisation en Java public class Mere { public Mere(String nom) { this.setNom(nom); } public void setNom(String nom) { this.nom = nom; }... private String nom; } public class Fille extends Mere { public Fille(String nom, int age) { super(nom); this.setAge(age); }... public void setAge(int age) { this.age = age; } private int age;... }

Classe abstraite Il est possible d'indiquer au langage qu'une classe ne soit pas instanciable. Intéressant dans le cas d'une sur-classe représentant une entité abstraite. En Java: Le mot réservé abstract permet de préciser qu'une classe est abstraite.

Classe abstraite en Java public abstract class Mere {... } public class Fille extends Mere {... }

Membres abstraits Les membres peuvent eux aussi être abstraits. Méthodes Données Règle : Toute classe qui possède ou hérite d'un membre abstrait est considérée comme abstraite.

Classe abstraite en Java public class Mere { public abstact void methode();... } public class Fille extends Mere {... // non implémentation de methode() } Les deux classes sont considérées comme abstraites

Spécialisation des méthodes Il est possible de réécrire une méthode dans une sous-classe. Mécanisme différent de la surcharge. Override en anglais alors que surcharge se dit overload. La méthode qui spécialise possède une signature identique à celle de base.

Exemple de réécriture en Java public class Mere { public abstact void methode();... } public class Fille extends Mere {... public void methode() { // implémentation; } }

Autre exemple de réécriture public class Salarie { private float salaire; public float getSalaire() { return salaire; }... } public class Cadre extends Salarie {... private float primes;... public float getSalaire() { return salaire + primes; }... }

Spécialisation et mots réservés this et super En Java: Le mot réservé this désigne un membre local de la classe. Le mot réservé super désigne un membre de la sur-classe.

Exemple avec this et super public class Pere { public Pere(int parametre1) { attribut1 = parametre1; } public void identite() { System.out.println(''je suis un A''); } private int attribut1; } public class B extends A { public B(int parametre1, String parametre2) { super(parametre1); attribut2 = parametre2; } public void identiteDuPere() { super.identite(); } public void identite() { System.out.println(''je suis un B''); } public void famille() { super.identite(); this.identite(); } }

Interface et implémentation Une interface est un contrat public auquel s'engagent les classes qui réalisent l'implémentation A la source de méthodes de conception Design by contract Permet d'élever le niveau d'abstraction Isole davantage l'implémentation Pas disponible dans tous les langages Le langage Java permet l'écriture d'interfaces

Implémentation en UML

Implémentation en Java public interface Pensionnaire { public void dormir(); public void manger(); } public abstract class Animal implements Pensionnaire {... } public class Lion extends Animal {...

Bibliographie  Conception et Programmation Objet – B. Meyer  Design Patterns – Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides.