Les fondamentaux de la Programmation Orientée Objet

Slides:



Advertisements
Présentations similaires
Introduction à la Programmation Orientée Objet H.GATI.
Advertisements


1 Programmation Orientée Objet ● Qu'est-ce qu'un objet ● Collaboration des objets ● Les classes ● Relations entre les classes – “Utilise”, “Contient”,
Logiciel Assistant Gestion d’Événement Rémi Papillie (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Initiation à QuickPlace, janvier Initiation à QuickPlace n Nature de l'outil n Fonctions de base (lecture, création) n Fonctions de gestionnaire.
Le Bug Tracking Pourquoi chasser les insectes? Théotim Delannay Aymeric Boisard.
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
Volée 1316 S3 Cours No 2_3 : Le nombre en 1-2H. Les fonctions du nombre  Dénombrer, énumérer, décrire une collection. Aspect cardinal  Dater, classer,
Présentation python : Épisode 4 ● Les objets : héritage ● Introduction à l'héritage ● Un exemple illustrant l'héritage ● Détails sur l'appel de méthode.
Que faire? La recherche découverte. Dans une recherche découverte Sensibilisation ; Discussion ; Préparation-projet ; Opération-activités ; Réflexion.
DIAGRAMME DE DEPLOIEMENT Exposé de: MBALLA MEKONGO Michèle MBOUNA FEUZE William SIEYADJEU Alex Lionel CHOPGWE Leonard NDUMATE Landry TIDJON Lionel.
MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE Université d’Adrar Diagramme d’états-transitions Présenté par Sbai Omar Benothman.
Les commandes externes
E-Prelude.com Importation de nomenclatures issues de divers logiciels de CAO… … via un fichier « neutre » de type EXCEL.
Cycle 3 Cycle 4 Pilotage du robot mBot Site scratch :
Google analytics.
Algorithmique demander jeu du pendu.
MOT Éditeur de modèles de connaissances par objets typés
Ajouter le code dans une page html
Initiation aux bases de données et à la programmation événementielle
Visite guidée - session 2
JAVA et POO : Notion d'héritage
Javadoc et débogueur Semaine 03 Version A16.
Principes de programmation (suite)
Polymorphisme : règles
Réalisation d'agents de surveillance Zephir
Le cloud… Pourquoi, comment et budget
Semaine #4 INF130 par Frédérick Henri.
Programmation en C++ Classes
Démarche de conception. Démarche didactique.
Stabilité des porteurs horizontaux (Poutres)
Présentation des EJB Enterprise Java Beans.
Notion De Gestion De Bases De Données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Informations vous concernant :
Programmation Orientée Objet
Programmation Android Bases De Données, SQL-lite
Deuxième partie LE DOSSIER TECHNIQUE DU MARINGOUIN.
Formation sur les bases de données relationnelles.
Développement d’applications interactives
Orthographe à retenir :
Diagrammes UML 420-KE2-LG.
La mission SUIVI DE GESTION
Programmation Android Première application Android
Responsable Petite et Moyenne Structure
Modélisation objet avec UML
Approche réalisation d’un objet technique tout ou en partie
Un ordinateur avec un œil !!
„La plate-forme EAI “ Initiation à WBI
Langages de programmation TP11
Catherine Cyrot - bibliothèques numériques - Cours 5
Windows 7 NTFS.
EPITECH 2009 UML EPITECH 2009
JDepend - Analyse de la qualité du code Java -
Un Mécanisme d‘Adaptation Guidé par le Contexte en Utilisant une Représentation par Objets Manuele Kirsch Pinheiro Laboratoire LSR – IMAG, Équipe SIGMA.
Logiciel de présentation
Elles contiennent des informations autre que géométriques
ENSEIGNER L’ALGORITHMIQUE ET LA PROGRAMMATION AU COLLÈGE
Formation « Utiliser un site Internet école »
INTERFACE ET POLYMORPHISME
Design, innovation et créativité
03/05/2019 L’organisation et la gestion des fichiers sur le site collaboratif Martine Cochet 2SitePleiadeGestionFichiers.
Retour sur les interfaces
Jérôme CUTRONA PHP objet Jérôme CUTRONA 08:30:34 Programmation Web
Séance centre patronal Paudex
UC : Diagramme des cas d’utilisation Req : Diagramme d’exigence
MOT Éditeur de modèles de connaissances par objets typés
Les données structurées et leur traitement
Séquence 1:Analyse du système d’information comptable
Transcription de la présentation:

Les fondamentaux de la Programmation Orientée Objet Hervé BOULET (Auteur du CM) David ANNEBICQUE (référent du module)

Module M3203 Les cours Evaluations 2 Cours Magistraux de 1h30 6 TD de 1h30 10 TP de 1h30 Evaluations 1 TP noté 1 partiel

Module M3203 Objectif : Introduire la conception objets et l'appliquer dans le domaine du multimédia. Compétences visées : Être capable de concevoir une application multimédia avec une approche objet.

CM N°1 Au programme La POO c’est quoi ? La POO et le PHP Présentation du TD N°1

La POO c’est quoi ? Pourquoi apprendre la POO ? Mais aussi Développement plus facile (et souvent rapide) Fonctionnement plus stable Maintenance plus simple Mais aussi Travail en équipe Augmentation de la qualité des logiciels (moins de bug) Réutilisation facile du code

La POO c’est quoi Une approche de programmation différente parmi d’autres Une tentative pour rapprocher la programmation et notre manière de percevoir le monde réel La base ou une option de langages comme C++, C#, Python, Java,…., PHP

La POO c’est quoi ? POO vs Programmation procédurale Programmer revient à : Définir des variables Ecrire des procédures (fonctions) pour les manipuler sans associer explicitement les unes aux autres Exécuter un programme se réduit à appeler ces procédures dans un ordre décrit par le séquençage des instructions et en leur fournissant les données nécessaires à l’accomplissement de leurs tâches. Données fonction1() fonction2() fonction3()

La POO c’est quoi ? POO vs Programmation procédurale Au fur et à mesure que les programmes écrits avec une approche procédurale grossissent, ils deviennent fragiles et mettent en danger les données

Les bases de la POO La POO c’est un peu comme le GOLF Les concepts de base sont simples à apprendre mais : Les utiliser tous et de manière élégante est beaucoup plus difficile 4 concepts de base Propriétés et méthodes Classe et objet Encapsulation Héritage

Concept N°1 : propriétés et méthodes Les propriétés sont les caractéristiques (données) d’un objet Pour un être humain : Taille Poids Couleur des cheveux Couleur des yeux QI Niveau en PHP … Les méthodes sont les actions qu’un objet peut effectuer Pour un humain : Courir Sauter Nager Manger Suivre le cours M3203 Dormir …

Propriétés et Méthodes en PHP Les propriétés sont des variables $taille = 175; $poids =180; $couleurCheveux=‘blond’; Les méthodes sont des fonctions : function courir() {…} function sauter() {…} Propriétés (données =variables) Méthodes (fonctions)

Quizz N°1 : Propriétés et méthodes d’un contact dans un carnet d’adresses Quelles seraient les propriétés : Nom Prénom … Téléphone Quelles seraient les méthodes : Ajouter() Modifier() Supprimer() Appeler()

Concept N°2 : Classe et objet Une définition Un modèle décrivant les propriétés et les méthodes Le ‘plan’ d’un objet Objet Une représentation d’une classe Appartient au monde réel Appelé ‘instance’ d’une classe

Quizz N°2 : Classe ou Objet ?

Quizz N°2 : Classe ou Objet ?

Quizz N°2 : Classe ou Objet ?

Concept N°3 : encapsulation Traditionnellement, il n’existe pas de connexion formelle entre le code et les données En C : Les unités de code sont appelées « fonctions »’ Les unités de données sont appelées « structures » Les fonctions peuvent opérer sur différentes structures Plus d’une fonction peut opérer sur la même structure

Concept N°3 : encapsulation Un objet renferme ses propriétés et ses méthodes Propriétés (Données) Objet Propriétés (Données) Méthodes (pour interagir sur les données) Méthodes

Concept N°3 : encapsulation Encapsuler : Les données ne sont pas accessibles en dehors de l’objet Accès aux données est limité aux accesseurs. Objet Propriétés (Données) Propriétés (Données) Monde extérieur Méthodes (pour interagir sur les données) Accesseurs

Avantages de l’encapsulation - Exemple Imaginez que je travaille au sein d’une équipe de développement Donnée en entrée Manipulations des données Données en sortie Un développeur Ma partie Un autre développeur

Avantages de l’encapsulation - Exemple Programme : données d’un cercle sont une couleur et un rayon. Le code fournit en résultats : un diamètre, une aire et une circonférence Données du cercle Mes calculs Résultats Données : Couleur Rayon en cm Calculs : Aire = Pi * R2 Circonf = 2Pi*R Diam = 2*R Résultats : Aire en inch Circonf en inch Diam en inch ?

Avantages de l’encapsulation - Exemple Programme : données d’un cercle sont une couleur et un rayon. Le code fournit en résultats : un diamètre, une aire et une circonférence Données du cercle Mes calculs Résultats 1ère Solution Données : Couleur Rayon en cm Calculs : Aire = ConvertirEnInch(Pi * R2) Circonf = ConvertirEnInch(2Pi*R) Diam = ConvertirEnInch(2*R) Résultats : Aire en inch Circonf en inch Diam en inch !

Avantages de l’encapsulation - Exemple Programme : données d’un cercle sont une couleur et un rayon. Le code fournit en résultats : un diamètre, une aire et une circonférence Données du cercle Mes calculs Résultats 2ème solution : POO Classe Propriétés Couleur Rayon en cm Méthodes LireRayon() cm to Inch Calculs : Aire = Pi * LireRayon() Circonf = 2Pi*LireRayon() Diam = 2*LireRayon() Résultats : Aire en inch Circonf en inch Diam en inch

Quizz N°3 : Encapsulation Expliquez les avantages que représente l’encapsulation lorsque vous avez à conduire plusieurs types ou marques de véhicules. Indice : Le moteur = données Le poste de conduite = Méthodes

Concept N°3 : du code encapsulé… Est plus facile à écrire Chaque composant qui utilise des données peut utiliser la forme la plus adaptée de ces données Est plus stable Moins de code doit être modifié si le format des données change Simplifie la maintenance Moins de code doit être modifié pour introduire de nouvelles fonctionnalités ou corriger des bugs.

Concept N°4 : Héritage Les classes sont organisées hiérarchiquement Vous pouvez définir des classes comme points de départ d’autres classes plus spécifiques : sépcialisation Comme dans un arbre généalogique, les ancêtres transmettent des propriétés et des comportements à leurs descendants.

Concept N°4 : Héritage Dessiner() LireCouleur() Dessiner() CompterCotes() Dessiner() LireCouleur()

Concept N°4 : Héritage La profondeur d’héritage n’est pas limitée Les enfants savent déjà faire tout ce que leurs parents peuvent faire Le polymorphisme est un mécanisme qui permet à une sous classe de redéfinir une méthode dont elle a hérité tout en gardant la même signature de la méthode. Les classes des enfants peuvent surcharger l’implémentation des classes de leurs parents Exemple : CompterCotes() peut être codé différemment pour un Triangle et un Rectangle

Quizz N°4 : Héritage Si MonChien est un objet de la classe Canidé, quel appel de méthode n’a aucun sens ? Appel de la méthode lireCouleurYeux() Appel de la méthode nettoyerFourrure() Appel de la méthode marquerTerritoire() ✔

Concept N°4 : Le code « hérité »… Est plus facile à écrire Lors de leur création, les classes enfants sont déjà partiellement écrites (réutilisation automatique du code) Surcharge = spécialisation du code Est plus stable Les classes enfant sont construites sur les fondations éprouvées de leurs parents Simplifie la maintenance Les méthodes communes aux parents et aux enfants limitent la duplication de code

Comment vous y mettre dès demain ? Pensez différemment la programmation Exemples disponibles sur Internet Suivez et impliquez vous dans les TD et les TP : faites le grand plongeon

Définir une classe en PHP Déclaration d’une classe

Déclarer une instance de classe Instance de classe = objet

Création d’un objet Mémoire vive Objet : mavoiture marque

Le constructeur __Construct() : une méthode magique

Le constructeur Mémoire vive $this $this Objet : voiture1 Marque : ‘RENAULT’ Marque : ‘PEUGEOT’ Puissance : 90 Puissance : 110 Kilométrage : 15000 Kilométrage : 20000

Opérateur référent de l’objet

Pour bien programmer en POO Séparer le code de définition des classes du code d’instanciation des classes Il faut donc créer deux fichiers PHP. Utiliser l’instruction require(‘classe.php’); dans le fichier qui contient le code qui instancie. Respecter les règles de nommage : le nom d’une classe commence par une majuscule, une propriété est toujours en minuscules

TD1 : les bases de la POO Rappels PHP : les fonctions avec ou sans paramètres Les tableaux Les structures (condition, itération,…) Mise en œuvre des concepts 1 et 2

Merci de votre attention