IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

conception POO (héritage) : une galerie d'image


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de greg91
    Homme Profil pro
    Administrateur système
    Inscrit en
    Novembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur système

    Informations forums :
    Inscription : Novembre 2007
    Messages : 121
    Points : 208
    Points
    208
    Par défaut conception POO (héritage) : une galerie d'image
    Bonjour à tous,

    J'utilise des classes pour faire des requête SQL sur des tables. Cela fonctionne parfaitement, mais j'ai un problème lorsqu'il y a plusieurs tables

    Dans une appli de galerie d'image par exemple. Actuellement j'ai :
    • une classe pour gérer les albums (ajout, suppression ...)
    • une autre pour gérer les photos (ajout, suppression ...)

    Cela fonctionne mais j'ai un doute sur la bonne utilisation des objets.

    Je comprend les tutos sur l'héritage des classes (véhicule, animaux, personnages), mais je n'arrive pas à l'appliquer à ma galerie d'images.

    Ne devrai-je pas déclarer la classe photo comme fille de la classe album ?
    Ou alors faire une grosse classe qui gère les albums ET les photo ?

    Je suis perdu.

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Un grand principe en POO : ne jamais faire de l'héritage fonctionnel. En clair, ne jamais dériver une classe que dans le but de récupérer ses fonctions. Conceptuellement, l'héritage va dans le sens d'une forme de spécialisation. Le lien conceptuel doit être très fort. Il faut toujours pouvoir répondre à la question est-ce que la classe dérivée est de même nature que la classe parent.

    Dans ton cas, il est évident qu'une photo n'est pas un album, donc dériver la classe Photo de la classe Album est une erreur conceptuelle.
    Un Album est une collection de Photos...

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Ne devrai-je pas déclarer la classe photo comme fille de la classe album ?
    Surtout pas !

    Pour ce qui est de la relation d'héritage, une classe B peut éventuellement hériter d'une classe A si et seulement si B est un(e) espèce de A. Dans ton cas on voit bien que c'est innaplicable car une image n'est pas une espèce de gallerie et vice-versa.

    Ou alors faire une grosse classe qui gère les albums ET les photo ?
    Encore moins !

    Une classe qui gère les albums ainsi que les photos n'est pas non plus envisageable car cette chose ne caractérise pas une entité propre (ou alors un monstre sorti de l'imaginaire de David Cronenberg).

    La solution ? Tu as besoin d'une gallerie bien. Une gallerie comporte des images ? Bien. On utilise alors ce qu'on appelle en OOP une aggrégation: une instance de Gallerie porte plusieurs images - en réalité, il s'agit simplement d'un tableau d'image porté par une propriété de Gallery.

  4. #4
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Points : 172
    Points
    172
    Par défaut
    En clair, ne jamais dériver une classe que dans le but de récupérer ses fonctions
    +1

    Certains pseudo idéaliste sont malheureusement tombé dans l'excès j'ai déjà vu un pseudo framwork développer par un boite ou il fallait passer par pas moins de 5 class pour uploader un fichier, ça va s'en dire 100* plus dure à déboguer que du code procédurale aussi pourri soit-il !!!!!!!!!!

    pas de fonction à réutiliser = pas d'héritage

  5. #5
    Membre actif Avatar de greg91
    Homme Profil pro
    Administrateur système
    Inscrit en
    Novembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur système

    Informations forums :
    Inscription : Novembre 2007
    Messages : 121
    Points : 208
    Points
    208
    Par défaut
    Conceptuellement, l'héritage va dans le sens d'une forme de spécialisation
    Effectivement! Ça je le comprend bien

    Donc je garde mes 2 classes Ça me rassure !

    Merci à tous pour vos réponses rapides et précise

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Construction d'une galerie d'images avec Ajax
    Par Pmko01 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/01/2008, 16h32
  2. [Galerie] Recherche une galerie d'images
    Par Chickenkiller dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 19/09/2006, 17h03
  3. Réponses: 0
    Dernier message: 17/09/2006, 15h43
  4. Conception d'une galerie d'images générée à la volée
    Par titoumimi dans le forum Langage
    Réponses: 0
    Dernier message: 16/09/2006, 12h55
  5. une galerie d'images
    Par Le Mage Noir dans le forum Langage
    Réponses: 9
    Dernier message: 19/03/2006, 21h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo