Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.

Slides:



Advertisements
Présentations similaires
C++ 5ème cours Patrick Reuter maître de conférences
Advertisements

Spécialisation/généralisation Héritage Polymorphisme.
Spécialisation/généralisation Héritage Polymorphisme
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
(Classes prédéfinies – API Java)
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
JSP Java Server Pages. Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java propose trois solutions.
Les entrées /sorties en Java François Bonneville
Leçon 3 : Héritage IUP 2 Génie Informatique
Chapitre IV Object, interfaces, classes imbriquées.
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Faculté I&C, Claude Petitpierre, André Maurer 1 Systèmes multi-processus C. Petitpierre
Faculté I&C, Claude Petitpierre, André Maurer 1 Héritage par prototype Héritage dattributs ou de méthodes Héritage de constructeurs.
Analyse et Conception orientée objet
Javascript les spécificités du langage - Partie 2-
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Faculté I&C, Claude Petitpierre, André Maurer What is this ? (Quest ce que this ?)
Laurent Capelli Solution anti SPAM : Codage adresse mail Comment se protéger des robots chercheurs d'adresse mail éviter les chaînes du type «
Faculté I&C, Claude Petitpierre, André Maurer Les objets Introduction.
Cours du 19 octobre. POO-L3 H. Fauconnier2 E) Constructeurs et héritage Le constructeurs ne sont pas des méthodes comme les autres: le redéfinition na.
Faculté I&C, Claude Petitpierre, André Maurer setTimeout ( nomDeFonction, 1000 ) setTimeout ( instructions, 1000 ) setTimeout ( nomDeFonction(), 1000 )
Objets Javascript Mécanismes internes Le concept et la construction dobjets
La programmation objet Illustration de la POO en Pascal
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
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.
Classes abstraites et Interfaces
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Faculté I&C, Claude Petitpierre, André Maurer 1 JavaCC Java compilers compiler (version générant du Javascript)
Le patron de conception « Strategy » Simon Durocher ( )
Programmation par Objets et Java
Langage Oriente Objet Cours 2.
Programmation Orienté Objet Application Au Langage JAVA Licence professionnelle ATC ~ 07/08 Bessem BOURAOUI
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Introduction au paradigme orienté-objet (suite)
Design Pattern: Decorator
Faculté I&C, Claude Petitpierre, André Maurer Scalable vector graphics SVG (documentation en français – voir menu.
Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction.
Faculté I&C, Claude Petitpierre, André Maurer Gestion des fichiers de LemanOS Ne fonctionne que sous LemanOS. On peut voir les fichiers créés dans ce système.
Multi-Thread Jian-Yun Nie
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Badr Benmammar Formation Développeur Java Thread et Swing Badr Benmammar
Formation Développeur Java Applet et interfaces graphiques avec AWT
Cours 4 Héritage (suite).
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction.
Faculté I&C, Claude Petitpierre, André Maurer JavaCC Java compilers compiler (version générant du Javascript)
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.
JavaScript Nécessaire Web.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
11/04/ L'héritage Cours 7 Cours 7.
Tutorat en bio-informatique
Résumé des concepts liés aux objets C. Petitpierre, EPFL.
PHP 7° PARTIE : PROGRAMMATION OBJET
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
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.
Le polymorphisme.
Cours du 5 novembre.
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
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
Modules créés au moyen d’objets C. Petitpierre. Objets construits sans constructeurs ( en Java on a introduit la réflexion pour cela ) var obj1 = { }
Transcription de la présentation:

Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA

Faculté I&C, Claude Petitpierre, André Maurer 2 Héritage Javascript, rappel function Translation() { this.tPrint = function() { ctx.save() ctx.translate(this.xt,this.yt) this.print() ctx.restore() } this.initTranslation = function(xt,yt) { this.xt = xt this.yt = yt // définition des attributs } } function Cercle(x,y,r,xt,yt) { this.initTranslation(xt,yt) this.print = function() { ctx.beginPath() ctx.arc(x,y,r,0,2*Math.PI,true) ctx.stroke() } }... Cercle.prototype = new Translation() function execute() { var cercle1 = new Cercle(50,50,15,0,0) cercle1.tPrint() var cercle2 = new Cercle(50,55,15,90,90) cercle2.tPrint() }

Faculté I&C, Claude Petitpierre, André Maurer 3 Héritage en général 3 Héritage de spécialisation isA Un cercle estUn élément graphique Base pour Java (langage typé) Héritage dimplémentation hasA Un cercle aUn un transformateur Base pour Javascript Si le cercle estUn élément graphique, il aUne méthode dessiner() Si le cercle aUn opérateur de transformation, il estUn élément de lensemble des objets (classe) qui possèdent un tel opérateur.5

Faculté I&C, Claude Petitpierre, André Maurer 4 Constructeur en Javascript function Cercle(nom) { this.nom = nom this.dessiner = function() { document.write(this.nom) } }... c = new Cercle("cer") c.dessiner()

Faculté I&C, Claude Petitpierre, André Maurer 5 5 class Cercle { // enveloppe String nom; Cercle(String nom) { // constructeur this.nom = nom; } void dessiner(){ System.out.println(nom); ou } Cercle(String _nom) { }nom = _nom;... } Cercle c = new Cercle("cer"); c.dessiner(); Constructeur en Java

Faculté I&C, Claude Petitpierre, André Maurer 6 Mise en commun dobjets Javascript var els = [ ] els[0] = new Cercle("cer1") els[0].dessiner() els[1] = new Rectangle("rec1") els[1].dessiner() Java Cercle[ ] els = new Cercle [12]; els[0] = new Cercle("cer1"); els[0].dessiner(); els[1] = new Rectangle("rec1"); els[1].dessiner(); On suppose quon veut mettre différents types dobjets dans un même tableau pour les afficher en appelant leur fonction dessiner. Il faut donc quils aient (aUne) tous la fonction dessiner.

Faculté I&C, Claude Petitpierre, André Maurer 7 7 class ElementGraphique { // un ElementGraphique aUne fonction dessiner void dessiner() { } // à redéfinir } class Cercle extends ElementGraphique { // estUn ElementGraphique void dessiner(){ // redéfinition de dessiner System.out.println(nom); } ElementGraphique[ ] els = new ElementGraphique [12]; els[0] = new Cercle("cer1"); els[1] = new Rectangle("rec1"); els[0].dessiner(); els[1].dessiner(); Solution (Java)

Faculté I&C, Claude Petitpierre, André Maurer 8 Comparaison Java - Javascript En Java on définit explicitement la relation estUn. Un ElementGraphique crée un objet qui aUne fonction dessiner() et le compilateur peut ainsi assurer que les instructions quil compile nappellent que des objets de la bonne classe. En Javascript, la relation estUn est gratuite, mais si lon appelle une méthode qui na pas été définie dans un objet, le programme sarrête au moment où il appelle cette fonction.

Faculté I&C, Claude Petitpierre, André Maurer 9 Polymorphisme aUn suffit en Javascript estUn assure aUn en Java

Faculté I&C, Claude Petitpierre, André Maurer 10 Adjonction dun opérateur (aUne) On veut définir une nouvelle fonction qui dessine le nom dans une balise Java public class ElementGraphique { void nDessiner() { System.out.print(" "); dessiner(); System.out.println(" "); } void dessiner() { } // ajouté à la classe existante // héritage déjà fait par extends Javascript function Transform() { this.nDessiner = function() { document.write(" ") this.dessiner() document.write(" ") } } Cercle.prototype = new Transform()

Faculté I&C, Claude Petitpierre, André Maurer 11 Héritage multiple (en cascade) class Transformation {} class ElementGraphique extends Transformation { } class Cercle extends ElementGraphique { } function Transformation() { } ElementGraphique.prototype = new Transformation() function ElementGraphique() { } Cercle.prototype = new ElementGraphique() function Cercle(nom) { }

Faculté I&C, Claude Petitpierre, André Maurer 12 Harmonisation des noms, Attribut nom déplacé dans la super-classe class ElementGraphique { String nom; ElementGraphique(String nom) { this.nom = nom; } void dessiner() { } void nDessiner() {... } } class Cercle extends ElementGraphique { Cercle(String nom) { super(nom); } void dessiner(){ System.out.println(nom); } function ElementGraphique() { this.init = function(nom) { this.nom = nom } this.nDessiner = function() {... } } function Cercle(nom) { this.init(nom) this.dessiner = function() { document.write(this.nom) } }