Programmation orientée objet



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

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

Initiation à JAVA et à la programmation objet.

Programmation Objet - Cours II

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

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

TP1 : Initiation à Java et Eclipse

TD/TP PAC - Programmation n 3

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

Chapitre 2. Classes et objets

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Cours 1: Java et les objets

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

TD/TP PAC - Programmation n 3

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

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

Salle de technologie

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

Programmation Objet Java Correction

Package Java.util Classe générique

INITIATION AU LANGAGE JAVA

Programmation Orientée Objet en C#

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

Création d objet imbriqué sous PowerShell.

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Je construis Quelles sont les formalités?

Présentation de GnuCash

Création de site Internet avec Jimdo

TP1 : Initiation à Java et Eclipse

Stratégie simple et efficace pour augmenter officieusement le taux de vos livrets d épargne défiscalisés

Formation, Audit, Conseil, Développement, UX WinRT Silverlight WPF Android Windows Phone

Les structures. Chapitre 3

LA RÉGULARISATION DES CHARGES EN FIN D EXERCICE

Utilisation d objets : String et ArrayList

I. Introduction aux fonctions : les fonctions standards

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

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

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

Programmation par les Objets en Java

Annexe : La Programmation Informatique

LA MESSAGERIE (THUNDERBIRD en l'occurence)

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Projet de programmation (IK3) : TP n 1 Correction

Premiers Pas en Programmation Objet : les Classes et les Objets

Sommaire. Les lotissements à partir du 1er mars Février Caractéristiques d un lotissement...2. Constitue un lotissement...

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

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

1. Installation du Module

Conditions Générales de ventes

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

I La création d'un compte de messagerie Gmail.

Projet gestion d'objets dupliqués

CONTRAT DE SOUS LOCATION Fiche gratuit pour la Suisse

Prise en main du logiciel. Smart BOARD Notebook 10

LISTES DE DISTRIBUTION GÉRÉ PAR SYMPA DOCUMENT EXPLICATIF DE ÉCOLE POLYTECHNIQUE

Langage Java. Classe de première SI

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

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

MANUEL PROGRAMME DE GESTION DU CPL WI-FI

7. Exemples de tests pour détecter les différents troubles de la vision.

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)

Programmer en JAVA. par Tama

Chapitre 4 : Guide de Mouvement et Masque

as Architecture des Systèmes d Information

Une introduction à Java

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

Chapitre VI- La validation de la composition.

Arbres binaires de recherche

Société MAINTINFO MAINTENANCE D'EQUIPEMENTS INFORMATIQUES ETUDE DE CAS (UML) Document d'expression des Besoins. Page 1

Utiliser Subversion (SVN) avec Tortoise

Procédure Configuration Borne Wifi. Attribution d'une adresse IP

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Auto-évaluation Programmation en Java

Programmation Orientée Objet

Sécurisation des paiements en lignes et méthodes alternatives de paiement

et Programmation Objet

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

Utiliser les supports d'exemplaires

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Java c est quoi? Java pourquoi?

Déroulement de la certification PEB de votre bâtiment

COMPARAISONDESLANGAGESC, C++, JAVA ET

Développement Logiciel

RMI le langage Java XII-1 JMF

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

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

NON URGENTE TEMPORAIRE DEFINITIVE. OBJET : FONCTIONNEMENT OmniVista 4760 SUR UN RÉSEAU VPN / NAT

Suis-je libre de fixer le prix de vente mentionné dans le congé pour vendre? Dois-je mentionner la superficie du logement à vendre?

Gestion de projet. GanttProject Didacticiel V novembre Gérard Gervois Frédéric Giamarchi

Comment envoyer un en gardant les adresses de ses correspondants confidentielles!!!

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Java Licence professionnelle CISII,

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Transcription:

Programmation orientée objet Les 3 fondamentaux de la POO La Programmation Orientée Objet est dirigée par 3 fondamentaux qu'il convient de toujours garder à l'esprit : encapsulation, héritage et polymorphisme. Encapsulation Derrière ce terme se cache le concept même de l'objet : réunir sous la même entité les données et les moyens de les gérer, à savoir les champs et les méthodes. L'encapsulation introduit donc une nouvelle manière de gérer des données. Il ne s'agit plus de déclarer des données générales puis un ensemble de procédures et fonctions destinées à les gérer de manière séparée, mais bien de réunir le tout sous le couvert d'une seule et même entité (l objet). Sous ce nouveau concept se cache également un autre élément à prendre en compte : pouvoir masquer aux yeux d'un programmeur extérieur tous les rouages d'un objet et donc l'ensemble des procédures et fonctions destinées à la gestion interne de l'objet, auxquelles le programmeur final n'aura pas à avoir accès. L'encapsulation permet donc de masquer un certain nombre de champs et méthodes tout en laissant visibles d'autres champs et méthodes. Pensez à votre voiture : elle vous fourni des méthodes (tourner le volant, appuyer sur le frein. etc.) afin de pouvoir interagir avec elle. Vous savez donc qu en tournant le volant, que la voiture changera de direction. Vous n avez toutefois pas à savoir comment la mécanique interne de ce changement de direction s opère. Tout ce qui important de savoir c est que de tourner le volant change la direction. Pour conclure, l'encapsulation permet de garder une cohérence dans la gestion de l'objet, tout en assurant l'intégrité des données qui ne pourront être accédées qu'au travers des méthodes visibles. En Actionscript 3, on peut favoriser l encapsulation de plusieurs manières. Ce qui nous intéresse pour l instant sont les mots-clés suivant : public et private. Le mot-clé public devant une variable ou une méthode fait en sorte que cette dernière est accessible de n importe quelle classe ou partie de code dans une application. public var nom:string = "Roger";

En AS3, il faut toujours définir une classe et son constructeur comme public : public class MaClasse { public function MaClasse():void{ Le mot-clé private devant une variable ou une méthode fait en sorte que cette dernière est accessible seulement à l intérieur de la classe dans laquelle elle est définie. Toute tentative d accès retournera une erreur du compilateur. C est donc un moyen de cacher ce qui devrait être la mécanique interne d un objet. private var nip:number = 985985439; public class MaClasse { private var ID :Number = 123879321839; public function MaClasse():void{ trace(id) ; //ID n est pas accessible à l extérieur de cette classe Pour conclure, l'encapsulation permet de garder une cohérence dans la gestion de l'objet, tout en assurant l'intégrité des données qui ne pourront être accédées qu'au travers des méthodes visibles. N.B. Il existe d autres mots-clés tels que set, get, protected, internal et static. Nous verrons plus tard leurs utilités

Héritage On peut définir l héritage comme la capacité d une classe d une classe d hériter des méthodes et propriétés (champs) d une autre classe. Considérons un objet Bâtiment. Cet objet est pour le moins générique, et sa définition reste assez vague. On peut toutefois lui associer divers champs, dont par exemple : Les murs Le toit Une porte L'adresse La superficie On peut supposer que cet objet Bâtiment dispose d'un ensemble de méthodes destinées à sa gestion. On pourrait ainsi définir entre autres des méthodes pour : Ouvrir le Bâtiment Fermer le Bâtiment Agrandir le Bâtiment Grâce au concept d'héritage, cet objet Bâtiment va pouvoir donner naissance à un ou des descendants. Ces descendants vont tous bénéficier des caractéristiques propres de leur ancêtre, à savoir ses champs et méthodes. Cependant, les descendants conservent la possibilité de posséder leur propres champs et méthodes. Tout comme un enfant hérite des caractéristiques de ses parents et développe les siennes, un objet peut hériter des caractéristiques de son ancêtre, mais aussi en développer de nouvelles, ou bien encore se spécialiser. Ainsi, si l'on poursuit notre exemple, nous allons pouvoir créer un objet Maison. Ce nouvel objet est toujours considéré comme un Bâtiment, il possède donc toujours des murs, un toit, une porte, les champs Adresse ou Superficie et les méthodes destinées par exemple à Ouvrir le Bâtiment. Toutefois, si notre nouvel objet est toujours un Bâtiment, il n'en reste pas moins qu'il s'agit d'une Maison. On peut donc lui adjoindre d'autres champs et méthodes, et par exemple : Nombre de fenêtres Nombre d'étages Nombre de pièces Possède ou non un jardin Possède une cave Notre Bâtiment a ici bien évolué. Il s'est spécialisé. Avec notre Maison, nous sommes allés plus avant dans les détails, et elle est à même de nous offrir des services plus évoluées. Nous avons complété ce qui n'était qu'un squelette. Ce processus d'héritage peut bien sûr être répété. Autrement dit, il est tout à fait possible de déclarer à présent un descendant de Maison, développant sa spécialisation : un Chalet ou encore une Villa. Mais de la même manière, il n'y a pas de restrictions théoriques concernant le nombre de descendants pour un objet. Ainsi, pourquoi ne pas déclarer des objets Immeuble ou encore Usine dont l'ancêtre commun serait toujours Bâtiment.

Ce concept d'héritage ouvre donc la porte à un nouveau genre de programmation. On notera qu'une fois qu'un champ ou une méthode est définie, il ou elle le reste pour tous les descendants, quel que soit leur degré d'éloignement. En Actionscript 3, il est possible de spécifier qu une classe va hériter d une autre avec le mot-clé extends. Il faut toutefois s assurer que la classe étendue est diponible pour le compilateur. Dans le cas ou elle nmest pas disponible, il faut l importer. Prenons ici l exemple d une classe Monstre héritant de la classe MovieClip. import flash.display.movieclip ; public class Monstre extends MovieClip{ public function Monstre() :void{ La classe Monstre possède ainsi toutes les propriétés et méthodes de la classe MovieClip (x, y, alpha, addchild(), etc.) en plus des ses propres méthodes et propriétés (poids, vie, mange(), meurt(), etc.). Il est donc important, lors de la création d une classe, de prévoir son utilisation (sera-t-elle étendue?, etc.) Toute classe représentant un élément visible à l écran doit hériter d une classe du package display (Sprite et MovieClip sont les plus courants).

Polymorphisme Le terme polymorphisme est certainement celui que l'on appréhende le plus. Mais il ne faut pas s'arrêter à cela. Afin de mieux le cerner, il suffit d'analyser la structure du mot : poly comme plusieurs et morphisme comme forme. Le polymorphisme traite de la capacité de l'objet à posséder plusieurs formes. Nous verrons ce concept plus tard dans les cours.