La programmation objet Illustration de la POO en Pascal

Slides:



Advertisements
Présentations similaires
Prmt For imbriqués.
Advertisements

La programmation orientée objet avec Java L3-MIAGE Plan
Sémantique des déclarations pour le langage Z minimal
Algorithmes et structures de données 9ème cours Patrick Reuter maître de conférences
C++ 5ème cours Patrick Reuter maître de conférences
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
C.
Windows XP Professionnel
Section VII Programmation modulaire Algorithmes et résolution de problèmes FGE.
Points importants de la semaine Les pointeurs. Les chaînes de caractères.
Technologie Voix sur IP - Avril 2004 Présentation : Serge LAWSON.
Leçon 3 : Héritage IUP 2 Génie Informatique
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Chapitre III Héritage (début)
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Programmation orientée objet
Cours VHDL Chap 3: sémantique VHDL
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Algorithmique et Programmation
Dérécursivation Dérécursiver, c’est transformer un algorithme récursif en un algorithme équivalent ne contenant pas d’appels récursifs. Récursivité terminale.
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.
Objets Javascript Mécanismes internes Le concept et la construction dobjets
TP Enregistrements Avril Un enregistrement permet de regrouper des éléments ayant des types différents au sein dune même structure de données (chose.
Chapitre VIII Structures dobjets. Chapitre VIII - Structures d'objets2 Structures d objets Il existe plusieurs relations entre les classes. Lhéritage.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
DESS CCI POO-JAVA TD n°7 exercice n°1
Programmation Orienté Objet Application Au Langage JAVA Licence professionnelle ATC ~ 07/08 Bessem BOURAOUI
27/04/05SE Info2 - S. L'haire UNIGE1 Pointeurs sur tableaux ouverts POINTER TO ARRAY OF CHAR Structure de tableaux à taille variable On a des types tableaux.
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 Le parallélisme Introduction.
Multi-Thread Jian-Yun Nie
Chapitre 9 Les sous-programmes.
Formation Développeur Java Applet et interfaces graphiques avec AWT
Héritage et composition
LANGAGE PASCAL Introduction rapide….
23/03/05SE Info2 - S. L'haire UNIGE1 TP 7 PROCEDURE Inserer(VAR a, crt : AgendaPtr; j, h : INTEGER; IN s : Chaine); VAR nouveau, temp : AgendaPtr; BEGIN.
27/02/2006L3 MIAGE - GLO ADA1 Les Paquetages Permettent d’encapsuler un groupe d’entités logiquement reliées. Comme toute unité de programme, le paquetage.
Implémentation Ada Gestion de la mémoire. Put 20 L'affectation de Comptes (σ-modèle) La sémantique intuitive des comptes ne laisse guère de place à l'affectation.
JavaScript Nécessaire Web.
Les Structures De Contrôle Itératives Complètes
11/04/ L'héritage Cours 7 Cours 7.
Programmation objet La base.
Créer des packages.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Sémantique des expressions arithmétiques pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Tables de compilation pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
12/04/ Le polymorphisme Cours 8 Cours 8.
Tutorat en bio-informatique
Exemple à faire: N°2 Ecrire l’Algorithme et le Programme PASCAL qui affiche la somme de deux nombres entiers donnés.
PHP 7° PARTIE : PROGRAMMATION OBJET
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Réaliser par: Sadok Amel Cheboui hassiba
Structures de données avancées : Arbres ‘Left Leaning Red-Black’
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
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.
Structures simples et tableaux Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
1 Deuxième journée La programmation procédurale. 2 Unité de programmation : la procédure ou fonction Très semblable au math Un programme est un ensemble.
Cours LCS N°4 Présenté par Mr: LALLALI
Algorithmique et programmation en
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Héritage Conception par Objet et programmation Java
1 Cours 6 Définitions de nouvelles procédures Transmissions de données/résultats Déclarations globales/locales Visibilités Interface/implementation.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
Les Instructions Itératives (Les Boucles)
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Analyse et programmation langage ADA
Transcription de la présentation:

La programmation objet Illustration de la POO en Pascal B. Illustration de la POO en Pascal Définition d'objet ( encapsulation ) Héritage Redéfinition de méthode(surcharge) Objets dynamiques Polymorphisme Méthodes virtuelles

La programmation objet Illustration de la POO en Pascal { ENCAPSULATION : Unité contenant une définition d'objet } UNIT U0; INTERFACE Type Emplacement = Object Abscisse : real; Ordonnee : real; Procedure Init(x, y : real); Procedure Deplace(dx, dy : real); Procedure Situe; End;

La programmation objet Illustration de la POO en Pascal IMPLEMENTATION Procedure Emplacement.Init (x, y : real); Begin abscisse := x ; Ordonnee := y ; End; Procedure Emplacement.Deplace( dx, dy : real ); Begin Abscisse := Abscisse + dx ; Ordonnee := Ordonnee + dy ; Procedure Emplacement.Situe; Begin Writeln('Coordonnées : ', abscisse : 5: 1, ' ', Ordonnee:5:1); END.

La programmation objet Illustration de la POO en Pascal { HERITAGE :L'objet Point hérite de l'objet Emplacement. Il possède donc tous les champs et les méthodes de Emplacement. En plus, il possède le champ couleur et la méthode Colore } Program P1; Uses U0; Type Point = Object ( Emplacement ) Couleur : byte; Procedure Colore ( c : byte ); End;

La programmation objet Illustration de la POO en Pascal Procedure Point.Colore( c : byte ); Begin couleur := c End; Var pt : point; Pt.init (5, 3); Pt.colore(10); Pt.situe; End.

La programmation objet Illustration de la POO en Pascal { Héritage : redéfinition de méthode (SURCHARGE) On redéfinit dans l'objet Point la méthode Situe avec cette fois-ci deux paramètres. Si dans un arbre d'héritage, il y a plusieurs redéfinitions, le compilateur recherche la première définition dans le sens ascendant. Les affectations entre objets sont toujours dans le sens descendant. Les champs communs sont affectés Il ya deux façons de redéfinir la méthode Init : - avec appel à la méthode existante - sans appel }

La programmation objet Illustration de la POO en Pascal Program P2; Uses U0; Type Point = Object ( Emplacement ) Procedure Situe ( var x, y : real ); End; Procedure Point.Situe( var x, y : real ); Begin x := Abscisse; y := Ordonnee

La programmation objet Illustration de la POO en Pascal Var pt : point; pos : emplacement; a, b : real; Begin Pos.init (5, 3); Pos.Situe; Pt.init(10,20); Pt.situe(a, b); Writeln('a = ', a:5:1, ' b = ', b:5:1) ; Pos := Pt; {affectation permise car sens descendant} Pos.situe; {Pt := Pos ;Non Permise, affectation toujours dans le sens descendant } End.

La programmation objet Illustration de la POO en Pascal {Héritage : objets dynamiques : Les objets peuvent être alloués dynamiquement. Après l'affectation Pos = Pt, Pos pointe un objet de type Point. Remarquez que le compilateur ne signale pas d'erreur. Mais remarquez aussi que, bien que Pos pointe un objet de type Point, Il n'est pas possible d'accèder au champ c. On ne peut non plus faire Pos^.init(3, 3, 12) par exemple. Ceci constitue un mauvais cas de polymorphisme

La programmation objet Illustration de la POO en Pascal Program P4; Uses U0; Type Point = Object ( Emplacement ) couleur : byte; Procedure Init (x, y : Real; c : Byte ); End; Procedure Point.Init( x,y : Real; c : byte ); Begin Emplacement.Init (x, y) ; { equivalent à abscisse := x ; Ordonnee := y ;} couleur := c;

La programmation objet Illustration de la POO en Pascal Var pt : ^Point; pos : ^Emplacement; Begin New(pt); New(Pos); pt^.Init (2,5,10); pt^.situe; {2, 5} Pos^.init(3,3); Pos^.situe; {3, 3} Pos^:= Pt^; { Affectation entre deux objets } Pos^.situe; {2, 5} Pos := Pt; { Pos pointe un objet de type Point } { Writeln(' couleur = ', Pos^.c ); non accepté } { Pos^.init(3, 3, 12); non accepté } Pos^.init(3, 3); { accepté mais designe la méthode Init de Pos } END.

La programmation objet Illustration de la POO en Pascal { POLYMORPHISME : { Introduction aux méthodes virtuelles : On ajoute à l'objet Emplacement la méthode Identifie ( qui permet d'identifier l'objet). Dans la méthode Situe, on ajoute un appel à Identifie. } UNIT U1; INTERFACE Type Emplacement = Object Abscisse : real; Ordonnee : real; Procedure Init(x, y : real); Procedure Deplace(dx, dy : real); Procedure Situe; Procedure Identifie; End;

La programmation objet Illustration de la POO en Pascal IMPLEMENTATION Procedure Emplacement.Init (x, y : real); Begin abscisse := x ; Ordonnee := y ; End; Procedure Emplacement.Deplace( dx, dy : real ); Abscisse := Abscisse + dx ; Ordonnee := Ordonnee + dy ;

La programmation objet Illustration de la POO en Pascal Procedure Emplacement.Situe; Begin Writeln('Coordonnées : ', abscisse : 5: 1, ' ', Ordonnee:5:1); Identifie; End; Procedure Emplacement.Identifie; Writeln(' Je suis un objet de type Emplacement '); END.

La programmation objet Illustration de la POO en Pascal Ensuite, on redéfinit la méthode Identifie pour l'objet Point. Quand on appelle à la méthode situe de Pt, c'est le module Identifie de l'objet Pos qui s'exécute, d'où le message inattendu. Si l'on veut que Pt affiche son identité, il faut rendre la méthode Identifie "virtuelle" }

La programmation objet Illustration de la POO en Pascal Program P5; Uses U1; Type Point = Object ( Emplacement ) couleur : byte; Procedure colore(c : byte ); Procedure Identifie; End; Procedure Point.Colore( c : byte ); Begin couleur := c End; Procedure Point.Identifie; Begin Writeln(' Je suis un objet de type Point de couleur ', couleur );

La programmation objet Illustration de la POO en Pascal Var pt : Point; pos : Emplacement; Begin Pos.init(7, 7); Pos.Situe; {affich de "objet de type emplac..} pt.Init (2,5); pt.situe; {affich de "objet de type emplac..} END.

La programmation objet Illustration de la POO en Pascal { POLYMORPHISME : { Méthodes Virtuelles : concepts Quand une méthode est déclarée "Virtuelle", son adresse n'est connue qu'au moment de l'éxécution. Tout objet contenant au moins une méthode virtuelle - doit posséder un Constructeur. ( Procédure spéciale) - possède un champ spécial (rajouté par le compilateur) destiné à recevoir à l'éxécution l'adresse de la TMV.

La programmation objet Illustration de la POO en Pascal { POLYMORPHISME : Au moment de la compilation : 1. A tout objet contenant une méthode virtuelle, le compilateur associe une TMV : table des méthodes virtuelles. La structure d'un élément peut être ( nom de la méthode, Adresse de son code) 2. Pour chaque appel à une méthode virtuelle, le compilateur génère la séquence suivante : - Récupérer l'adresse de la TMV de l'objet. - Récupérer l'adresse de la méthode virtuelle - Retrouver le code de la méthode et en faire l'appel. On dit qu'il laisse l'appel à blanc. Puis au moment de l'éxécution il fait ce qu'on appelle la ligature dynamique.

La programmation objet Illustration de la POO en Pascal { POLYMORPHISME : Au moment de l'exécution : 1.Le constructeur range l'adresse de la TMV dans l'objet. Remarques : 1. Pour des contraintes de compilation, toutes les méthodes redéfinies déclarées virtuelles doivent avoir le même nombre de paramètres 2. Dans la plupart des cas, le Constructeur est la première procedure appelée. }

La programmation objet Illustration de la POO en Pascal UNIT U2; INTERFACE Type Emplacement = Object Abscisse : real; Ordonnee : real; CONSTRUCTOR Init(x, y : real); Procedure Deplace(dx, dy : real); Procedure Situe; Procedure Identifie ; VIRTUAL; End; IMPLEMENTATION CONSTRUCTOR Emplacement.Init (x, y : real); Begin abscisse := x ; Ordonnee := y ;End;

La programmation objet Illustration de la POO en Pascal Procedure Emplacement.Deplace( dx, dy : real ); Begin Abscisse := Abscisse + dx ; Ordonnee := Ordonnee + dy ; End; Procedure Emplacement.Situe; Writeln('Coordonnées : ', abscisse : 5: 1, ' ', Ordonnee:5:1); Identifie; { le compilateur laisse l'appel à blanc } Procedure Emplacement.Identifie; Begin Writeln(' Je suis un objet de type Emplacement ');End; END.

La programmation objet Illustration de la POO en Pascal Program P6; Uses U2; Type Point = Object ( Emplacement ) couleur : byte; Procedure colore(c : byte ); Procedure Identifie; VIRTUAL ; End; Procedure Point.Colore( c : byte ); Begin couleur := c

La programmation objet Illustration de la POO en Pascal Procedure Point.Identifie; Begin Writeln(' Je suis un objet de type Point de couleur ', couleur ); End; Var pt : Point; pos : Emplacement; Pos.init(7, 7); Pos.Situe; pt.Init (2,5); pt.situe; { affichage avec bonne identification } END.

La programmation objet Illustration de la POO en Pascal { POLYMORPHISME : même chose avec objets dynamiques } Program P7; Uses U2; Type Point = Object ( Emplacement ) couleur : byte; Procedure colore(c : byte ); Procedure Identifie; virtual; End; Procedure Point.Colore( c : byte ); Begin couleur := c End; Procedure Point.Identifie; Begin Writeln(' Je suis un objet de type Point de couleur ', couleur );

La programmation objet Illustration de la POO en Pascal Var pt : ^Point; pos : ^Emplacement; Begin writeln('Debut'); New(Pos); New(Pt); Pos^.init(7, 7); { range l'adresse de la TMV dans Pos^ } Pos^.Situe; pt^.Init (2,5); pt^.situe; Pos := Pt; {Pos pointe maintenant un objet de type Point } Pos^.situe; { fait bien référence à un objet de type Point (avec bon affichage), ce qui n'etait pas possible avant } Writeln('Fin'); END.

La programmation objet Illustration de la POO en Pascal { POLYMORPHISME : Construction d'une liste d'adresses d'objets de types différents mais héritant d'un même ancêtre. Puis affichage de l'identité de chaque objet de cette liste. } UNIT U3; INTERFACE Type Emplacement = Object Abscisse : real; Ordonnee : real; Constructor Init(x, y : real); Procedure Deplace(dx, dy : real); Procedure Situe; Procedure Identifie; Virtual ; End;

La programmation objet Illustration de la POO en Pascal Type Point = Object ( Emplacement ) couleur : byte; Procedure colore(c : byte ); Procedure Identifie; virtual; End; Type Carre = Object ( Point ) Procedure identifie; Virtual ; IMPLEMENTATION Constructor Emplacement.Init (x, y : real); Begin abscisse := x ; Ordonnee := y ; End;

La programmation objet Illustration de la POO en Pascal Procedure Emplacement.Deplace( dx, dy : real ); Begin Abscisse := Abscisse + dx ; Ordonnee := Ordonnee + dy ; End; Procedure Emplacement.Situe; Writeln('Coordonnées : ', abscisse : 5: 1, ' ', Ordonnee:5:1); Identifie; Procedure Emplacement.Identifie; Begin Writeln(' Je suis un objet de type Emplacement '); End;

La programmation objet Illustration de la POO en Pascal Procedure Point.Colore( c : byte ); Begin couleur := c End; Procedure Point.Identifie; Writeln(' Je suis un objet de type Point de couleur ', couleur ); Procedure Carre.Identifie; Writeln('Je suis un objet de type Carre'); END.

La programmation objet Illustration de la POO en Pascal Program P8; Uses U3; Type t = ^tmaillon; tmaillon = record adrobjt : ^Emplacement; suiv : t ; End ; Var pt : ^Point; pos, ptr : ^Emplacement; car : ^Carre ; Liste, L1, L2 : t;

La programmation objet Illustration de la POO en Pascal Procedure Afficher (TeteListe : t); Var p : t; Begin p := TeteListe ; While ( P <> Nil ) do ptr := P^.adrobjt ; { p^.adrobjt^.identifie } ptr^.identifie; p := p^.suiv End;

La programmation objet Illustration de la POO en Pascal Begin writeln('Debut'); New(Pos); New(Pt); New(Car); Pos^.init(7, 7); New(Liste); Liste^.adrobjt := Pos; L1 := Liste; pt^.Init (2,5); New(L2); L2^.adrobjt := Pt; L1^.suiv := L2; L1 := L2; Car^.init(8, 8); New(L2); L2^.adrobjt := Car; L1^.suiv := L2; L2^.suiv := Nil; Afficher(Liste); Writeln('Fin'); END.