La POO démystifiée. Introduction aux Objets

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

GOL502 Industries de services

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

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

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

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

Diagramme de classes

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

Traduction des Langages : Le Compilateur Micro Java

Programmer en JAVA. par Tama

Langage Java. Classe de première SI

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

Initiation à JAVA et à la programmation objet.

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

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

Objets et Programmation. origine des langages orientés-objet

Université de Bangui. Modélisons en UML

Chapitre 2. Classes et objets

Plan du cours. Historique du langage Nouveautés de Java 7

Notions fondamentales du langage C# Version 1.0

UML. Diagrammes de classes (suite) Delphine Longuet.

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

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

Information utiles. webpage : Google+ : digiusto/

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Programmation en Java IUT GEII (MC-II1) 1

TP1 : Initiation à Java et Eclipse

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

INITIATION AU LANGAGE JAVA

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

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

UML et les Bases de Données

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmation par composants (1/3) Programmation par composants (2/3)

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

IFT2255 : Génie logiciel

Programmation Orientée Objet en C#

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Méthodes d évolution de modèle produit dans les systèmes du type PLM

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Programme Compte bancaire (code)

Alfstore workflow framework Spécification technique

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

Chapitre VI- La validation de la composition.

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

TD/TP PAC - Programmation n 3

as Architecture des Systèmes d Information

Patrons de Conception (Design Patterns)

Présentation générale de la méthode orientée objet : O.M.T. (Rumbaugh & al.)

Recherche dans un tableau

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Premiers Pas en Programmation Objet : les Classes et les Objets

Plateforme PAYZEN. Définition de Web-services

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Cours 14 Les fichiers

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

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)

UML (Diagramme de classes) Unified Modeling Language

BASES DE DONNEES ORIENTEES OBJETS BDA10.1

Chapitre 10. Les interfaces Comparable et Comparator 1

Approche Contract First

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

OCL - Object Constraint Language

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Modèle conceptuel : diagramme entité-association

Remote Method Invocation (RMI)

I4 : Bases de Données

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

3. UML - Unified Modeling Language Diagrammes statiques

Programmation MacOSX / ios

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Application web de gestion de comptes en banques

Java DataBaseConnectivity

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Classes et Objets en Ocaml.

Chapitre 1 : Introduction aux bases de données

Table des matières Sources

2 Grad Info Soir Langage C++ Juin Projet BANQUE

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

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

TD/TP PAC - Programmation n 3

PHP. PHP et bases de données

Développement Logiciel

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Support de cours et TD Programmation Orientée Objet

O b j e t - O b j e t t e c h n i q u e - F o n c t i o n s

Projet Active Object

OASIS Date de publication

Enseignement secondaire technique

Java Licence Professionnelle CISII,

Cours 1: Java et les objets

4. Groupement d objets

Organigramme / Algorigramme Dossier élève 1 SI

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

RMI le langage Java XII-1 JMF

Programmation des Applications Réparties. Parsers XML DOM et SAX

Transcription:

La POO démystifiée Introduction aux Objets Aujourd'hui quasiment tous les langages permettent une approche orientés objets. Une connaissance minimale des principes de la POO est donc indispensable à tout informaticien, qu il soit développeur ou non. Dominique CARON Oct 2014

If...then...e lse Do Do...... while while Sur la plage, quand on est petit, on construit des grands chateaux avec du sable... Foreach... Mais devenu plus grand nous viendrait t'il à l'idée de construire une maison à partir de tas de sable, de cailloux et de terre? i == == j Swit ch Double Double float float

En automobile on a rapidement compris qu'il fallait fabriquer des composants dissociés ayant chacun leurs caractéristiques et leurs fonctionnalités. Un système complexe se construit toujours à partir de composants (objets) préparés, chacun fournissant un ensemble de services à travers des interfaces définies. La tâche des concepteurs est alors considérablement simplifiée par le travail de leurs prédécesseurs.

Cas du logiciel: les limites de la programmation procédurale La programmation procédurale montre ses limites dans les projets complexes (plus de 10 000 lignes de codes) Le code procédurale est difficile à débugguer, difficile à tester et donc moins fiable. La qualité du programme se dégrade dans le temps. Il devient très difficile voir impossible de faire des mises à jour intégrant de nouvelles fonctionnalités. La reprise du code par d'autres développeurs est problèmatique.

Naissance de la POO Les concepts de la Programmation Orientée Objet naissent dans les labos de recherche des années 70. Simula (1967), SmallTalk(1973) sont les premiers langages objet. Les années 80 voient naître le C++ (extension du C) et ObjectiveC. Java apparait dans les années 90...

Définir un objet du monde réel? Par ses caractéristiques (taille, poids, nom, marque, longueur, vitesse, force, age, couleur, position etc...) qu'on appelera attributs. Note: un attribut d'objet peut être un autre objet (ex: force, position). Par ses fonctions ou actions possibles (tourne, vole, chauffe, mange, grandit etc...) qu'on appelera méthodes. Note: Les méthodes peuvent agir sur les attributs de l'objet et/ou renvoyer des messages.

Définir un objet du monde réel dans son ensemble peut s'avérer impossible (les objets sont trop complexes) La modélisation objet consiste à créer une représentation informatique des éléments du monde réel auxquels on s'interesse. Il s'agit donc de déterminer les objets présents dans notre problème et d'isoler les caractéristiques (attributs) et les fonctions (méthodes) minimales permettant de le résoudre.

Une nouvelle approche des problèmes

Classons les objets... La description d'un objet est appelée une classe d'objet. On dit qu'un objet est une instance de la classe ou un état de celle-ci. L'instanciation d'une classe est un objet unique. La classe décrit donc la structure interne d'un objet, c'est à dire: les données qu'il regroupe (attributs) et les actions qu'il est capable d'assurer (méthodes).

Objets (Instances) Voiture # Marque : string # Modèle : string # Cylindrée : float # Couleur : string # Energie: string # Prix: float # Neuve: bool + CreerVoiture(attributs) + Accelerer(acceleration) + AllumerFeux(type) + FermerPortes(booléen) Notation UML Nom de la Classe Description des attributs Instanciation Instanciation Description des méthodes Marque = Toyota Modèle = Prius Cylindrée = 1.9 Couleur = Gris Métal Energie = Hybride Prix = 30.000 Neuve = true Marque = Tesla Modèle = S Cylindrée = null Couleur = Rouge Energie = Electrique Prix=56.000 Neuve = false

Les trois grands paradigmes de la POO L'Encapsulation L'Héritage Le Polymorphisme

1) L'Encapsulation Le principe est d'interdire l'accès direct aux attributs d'un objet. On ne dialogue avec l'objet qu'à travers une interface définissant les services accessibles aux utilisateurs de l'objet. C'est alors le rôle des méthodes de modifier ou de retourner la valeur des attributs. Interface Méthodes Attributs

Intérêt de l'encapsulation Facilite l'évolution d'une application 1. On peut modifier les attributs d'un objet sans modifier la façon dont il est utilisé. 2.Garantie l'intégrité des données, car leur accès direct est interdit (limité et/ou contrôlé)

2) L'héritage Relation de spécialisation/généralisation entre deux classes. Elle indique qu'une classe est une sous-classe d'une autre, c.à.d qu'elle possède les mêmes attributs et méthodes plus d'autres qui lui sont propres. généralisation Publication # Title: string # Abstract: string # Reference : int # Authors : array(author) + pushtohal() + addauthor(author) Article # Journal : Journal # datepubli: Date + getjournal() spécialisation

Intérêt de l'héritage En construisant une hiérarchie de classe, on évite des répétitions dans le code (factorisation), en encourageant la réutilisation de classes déjà existantes. Cela permet également de simplifier la conception de la modélisation. Héritage multiple : Tous les languages ne le permettent pas et il n'est pas conseillé. Il peut introduire des bugs difficiles à décelés.

3) Polymorphisme Littéralement : c'est la faculté de prendre plusieurs formes. En POO, c'est un mécanisme permettant à une sous-classe de redéfinir une méthode dont elle a hérité tout en gardant la même signature.

Polymorphisme Musicien #Nom:string + Joue() Pianiste Guitariste Violoniste + Joue() + Joue() + Joue() L'appel de la méthode Joue() sur les objets héritant de la classe Musicien produira un résultat différent selon la sous-classe. Intérêt: permet une meilleur factorisation du code (généricité).

Les Classes Abstraites Une classe abstraite est une classe dont les méthodes n ont pas toutes été implémentées. Elle n'est donc pas instanciable (devenir objet) mais sert avant tout à factoriser du code. Une classe qui hérite d une classe abstraite doit obligatoirement implémenter les méthodes manquantes (elles sont déclarées «abstraites» dans la classe parente). En revanche, elle n est pas obligée de réimplémenter les méthodes déjà implémentées dans la classe parente (d où une maintenance du code plus facile).

Les Interfaces Une interface est une classe destinée à définir des méthodes publiques des classes qui l'implémente (API). Aucune méthode n'est implémentée Une interface regroupe la signature des méthodes qui devront être implémentées par les classes l'implémentant. C.à.d : en implémentant une interface, une classe s oblige à définir l ensemble des méthodes de l interface. On peut implémenter plus d'une interface par classe, à condition que celles-ci n'aient aucune méthode portant le même nom.

Interfaces Instrumentiste + Joue() Pianiste Guitariste Violoniste + Joue() + Joue() + Joue() L'appel de la méthode Joue() sur les objets héritant de la classe Musicien produira un résultat différent selon la sous-classe. Intérêt: permet une meilleur factorisation du code (généricité).

Références Introduction aux objets - Ours Blanc Des Carpathes - http://www.mcours.net/cours/pdf/info/cours_introduction_aux_objets. pdf Introduction à la modélisation objet - Laurent Godefroy - http://fr.scribd.com/doc/77622472/01-introduction-a-la-modelisation-o bjet Les Questions...