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

C++ Discussion :

[POO] Séparation des données et des fonctions en classes distinctes


Sujet :

C++

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut [POO] Séparation des données et des fonctions en classes distinctes
    Bonjour,

    Je travaille avec une API qui a la particularité de ne pas avoir de classes "mixtes".

    C'està-dire que ses classes sont soit exclusivement composées de données, soit exclusivement composées de fonctions.

    Pour agir sur les données membres d'un objet, il faut associer l'objet "données" à un objet "fonctions" correspondant.

    L'objet fonction est instancié en passant au constructeur l'instance de l'objet données. Tout appel aux fonctions de cet objet fonctions agira sur l'ojet données qui lui a été donné à la construction (ou éventuellement resetté plus tard).

    Ce style de conception a-t-il un nom ? Comporte-t-il certaines règles ?

    Par exemple, j'ai l'impression qu'il m'est impossible de passer une instance de classe de fonction comme paramètre d'une fonction quelconque.
    De plus, l'opérateur & des classes de fonction est surchargé et privé, ce qui rend impossible toute récupération de l'adresse.

    Merci

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    Citation Envoyé par oodini Voir le message
    Par exemple, j'ai l'impression qu'il m'est impossible de passer une instance de classe de fonction comme paramètre d'une fonction quelconque.
    a quoi bon instancier les classes contenant les fonctions uniquement ? (d'ailleurs ca me semble logique que ca ne marche pas)

    Du moment que tu arrive a appeler les fonction depuis l'instance des données, ca doit permettre de tout faire !?
    Pour les details, cherche tout seul !

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Il n'y a que deux cas dans lesquels il soit cohérent de ne fournir que des fonctions dans une classe:
    • Si la classe va servir d'interface à un arbre d'héritage (les fonctions sont alors virtuelles pures)
    • Pour regrouper un ensemble de fonctions statiques, qui ne nécessitent aucune données externe


    Dans le premier cas, cela sous-entend que les fonctions déclarées comme virtuelles pure devront toutes être implémentées dans les classes héritière, sous peine d'obtenir une classe non instanciable car "abstraite", et, dans le second cas, on préférera souvent utiliser plutôt un espace de nommage

    Le principal problème à la conception sous forme de "données à gauche, méthodes à droite" réside en deux points:
    • Tu pars quasi systématiquement sur un héritage multiple, (ben ouaip, il faut hériter de la classe "data" et de la classe "methodes"... Même si on peut envisager un héritage de la classe "methodes" et une agrégation avec la classe "data"), et, tant qu'à faire, c'est quelque chose qu'on préfère éviter
    • Tu te retrouve obligé de déclarer des amitiés à n'en plus finir: tout classe "methode" devra systématiquement être déclarée comme amie avec les classes "data" qu'elle est sensée gérer

    En exagérant au plus haut point, on *pourrait* estimer que c'est la plus stricte mise en application du paradigme Modèle Vue Contrôleur (cf wiki MVC) mais un projet parti sur de telles bases me semble clairement destiné à devenir rapidement ingérable
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/08/2014, 09h25
  2. Typage des données/manipulation des données
    Par Moravski dans le forum GTK+ avec C & C++
    Réponses: 25
    Dernier message: 28/01/2011, 19h00
  3. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 20h04
  4. Réponses: 7
    Dernier message: 20/03/2005, 14h53
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

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