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 :

Bien construire ses classes


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Points : 46
    Points
    46
    Par défaut Bien construire ses classes
    Slt ,dans le cours de c++ le prof a dit qu'une classe est bien construite si elle satisfait 4 ou 5 règles mais je n'arrive pas a les remémorer.
    Est ce que quelqu'un peut me el dire svp ?
    Merci d'avance.
    ps:j'ai déja fait une recherche sur google sans resultat.

  2. #2
    Membre actif
    Profil pro
    Dev
    Inscrit en
    Décembre 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Décembre 2007
    Messages : 191
    Points : 216
    Points
    216
    Par défaut
    ben une partie de la réponse est :

    la classe est conçue pour présenter une INTERFACE (des méthodes publiques) de sorte que l'objet soit simple à utiliser par les programmeurs qui en ont besoin. Le reste, le pourquoi du comment la classe fonctionne, c'est l'implémentation , et ceci est censé etre caché. Ou en tout cas il ne devrait pas y avoir besoin de connaitre l'implémentation pour utiliser l'interface.


    De sorte qu'une modification de l'implémentation est possible par le créateur de la classe, sans que ça nécessite une modification du code qui utilise la classe (juste recompiler /relinker vers la nouvelle classe modifiée).

    Dans tous les cas, l'utilisateur de la classe ne DOIT PAS avoir accès aux données et aux fonctions utilitaires qui ne répondent pas directement aux buts publics de la classe.


    Il faut qu'elle fasse ce qu'il faut qu'elle fasse, ni trop ni pas assez (un peu comme une fonction). Si c'est "trop" alors on peut probablement créer une classe à part pour le boulot qui est fait en trop.

    C'est juste un outil pour concevoir un programme (développer) proprement. Après je ne crois pas qu'un développeur C++ a ses "5 commandements de classes" accroché au dessus du lit. (appel à témoignage ! )

  3. #3
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Comme dit dans le message précedent, il ne faut pas surcharger de responsabilités une classe. Il faut qu'elle satisfasse un minimum de responsabilité.

    Exemple : une classe socket ne doit pas gérer le stockage de données. Le socket doit récupérer les données et être capable de transmettre ces données à une classe qui s'occupera de les trier, et une autre qui les stockera, etc.

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par Pacorabanix
    Après je ne crois pas qu'un développeur C++ a ses "5 commandements de classes" accroché au dessus du lit. (appel à témoignage ! )
    Disons que l'on a des recettes toutes faites selon les situations dans lesquelles nous nous trouvons. On rejoint patterns et idiomes.

    Le rôle de l'interface est effectivement primordial. Ceci dit l'interface (publique généralisée) de manipulation concerne aussi les fonctions libres, et les propriétés (pouvant être mises en oeuvre par des attributs publics à accès direct, ou des privés à accès réglementés par des paires (ou non) d'accesseurs/mutateurs).
    On peut aussi parler de rôles, et il est imporant que chaque classe aient des rôles clairs et bien définis.

    La maitrise de la duplication est relativement importante en C++. On rejoint d'ailleurs les recettes dont je parlais juste avant.
    - sémantique de valeur -> rien de particulier à faire, sauf si on est responsable d'une ressource brute (cf règle des 4, 3 ou 2 selon les raffinements successifs de la forme canonique de Coplien)
    - sémantique d'entité -> par défaut, nul besoin de dupliquer => interdiction ; selon les cas, on clone.
    - hiériarchie polymorphe => sémantique d'entité par défaut.

    (je parle de cela car il n'est pas impossible que les "5 règles" ("du prof", façon de parler) concernent la forme canonique de Coplien... dont les conditions d'application ne sont pas si universelles -- à moins que l'interdiction soit une variante reconnue de la forme)

    Il y a d'autres grands principes de conception OO qui me viennent à l'esprit -> LSP, Open-Closed Principle, couplages, etc.
    Mais j'avoue qu'il est difficile de deviner ce dont on a pu te parler en cours.

    PS: quand tu auras retrouvé ton support de cours, je serais curieux de savoir quels seraient les 4 ou 5 règles dont on t'avais parlé.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. Outils pour bien construire ses tables ?
    Par hellomorld dans le forum Langage SQL
    Réponses: 0
    Dernier message: 18/05/2013, 17h37
  2. Réponses: 8
    Dernier message: 27/08/2010, 17h51
  3. Créer ses classes
    Par j07nathan dans le forum Prolog
    Réponses: 4
    Dernier message: 10/01/2007, 20h46
  4. Réponses: 8
    Dernier message: 18/04/2006, 12h16
  5. Bien faire ses sauvegardes
    Par Pigoulou dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/01/2005, 08h20

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