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 :

services publics d'une classe - références


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Par défaut services publics d'une classe - références
    Bonjour à toutes et à tous

    Je viens du monde scientifique où je trouve assez difficile de communiquer sur les concepts de programmation C++.

    J'ai débuté le C++ voilà à peine un an, mais je l'ai appris au biberon developpez.com, où des phrases comme "les services publics d'une classe", "les comportements que l'on est en droit d'attendre de la classe", "une classe fait une seule chose mais le fait bien" abondent. Du coup assez vite grâce à vous, mes programmes sont devenus (un peu) plus vivants/solides/extensibles.

    Mais une telle vision n'est pas forcément partagée, et cela rend la communication difficile avec quiconque ne verrait les problèmes de prog que sous forme de structures de données et d'algorithmes.

    Du coup je me suis rendu compte que j'avais du mal à identifier ce concept. On parle de quoi ? De programmation basée sur les services ? Sur les comportements ? Est-ce que c'est le paradigme générique qui encourage cette vision des choses ?
    Et enfin, existent-ils des "références" (livres ou articles fondateurs...) qui appuient cette manière de voir les choses et dont je pourrais me servir pour rédiger/appuyer le chapitre "Prog" de mon manuscrit de thèse ? Quand les choses paraissent trop exotiques en science, on utilise des références pour rassurer et informer le lecteur ^^.

    Cordialement,

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502
    Par défaut
    Courage, nul n'est prophète en son pays.
    Il s'agit de mise en application des principes SOLID de la programmation objet :
    https://fr.wikipedia.org/wiki/SOLID_(informatique)

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Attention, il s'agit de la conception des classes en règle générale.

    En C++, on distingue un cas particulier d'utilisation des classes, la POO (Programmation Orientée Objet) qui repose sur les hiérarchies et le mot clé virtual.

    Le C++ permet de construire des classes sans être dans ce cadre. Par exemple, la STL tout entière.
    Les classes sont utiles à d'autres paradigmes, comme le "générique", basé sur les templates, et la "méta programmation", qui va encore plus loin.

  4. #4
    Membre éclairé Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Par défaut
    Merci bacelar

    Je connaissais un peu SOLID "en théorie" depuis le début (merci le livre de P. Dunski), mais je ne sais pas encore en appliquer les principes "directement", par contre je constate que ces principes émergent naturellement quand j'essaie d'écrire des bouts de code un peu extensible/fiable/robuste (à mon niveau... ). Du coup je n'avais pas encore le recul pour faire le lien avec ce dont on parle ici, merci de l'avoir fait à ma place

    Merci ternel pour tes précisions et ton recul toujours bienvenus !

    Si je comprends bien ce que vous dites, ce n'est même pas un concept précis, ou une vision de la prog, mais bien les bases de la prog en général (je ne m'en étais même pas rendu compte ) ? Cette vision serait donc dans le milieu de la prog si peu exotique et si "bateau", que les références associées soient en fait... les livres de programmation pour débutants ? ^^

    Ma question est sans nul doute extrêmement naïve mais au diable : reste-t-il des contextes d'application où penser "détails d'implémentations + algo = programme" se justifie ?

  5. #5
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 770
    Par défaut
    Citation Envoyé par Seabirds Voir le message
    reste-t-il des contextes d'application où penser "détails d'implémentations + algo = programme" se justifie ?
    Peut-être cela ne répond pas à la question

    Actuellement je suis en train de réfléchir à un écran de recherche pour des utilisateurs.
    Je serais parti pour faire un écran avec des cases à cocher (rechercher le nom, prénom, société), multi-colonnes pour le résultat (1 par critère) et on bloque pour attendre le résultat
    Mais c'est trop compliqué parce que "il n'y pas qu'un seul bouton" ou "ce n'est pas moderne"

    Donc, il faut faire la simple barre de recherche intelligente avec l'"instant search". Mais cela se code [au moins] avec un trie


    Un autre exemple: une importation CSV d'utilisateurs (nom;prénom;société) avec gestion des doublons (en plus des erreurs de syntaxe - on oublie la ligne si mal formée ou critére utilisateur non respecté)
    Pour 2000 utilisateurs si tu fais un bête tableau ordonné cela prend 5-6 secondes. Mais avec un arbre AVL tu arrives à 300-340 ms (*), et tu peux aussi gérer la recherche (mono critère) et la suppression très rapide.


    * -> avec un hash crc32 pour les chaînes de caractères et un "fixed size memory pool" pour les nœuds

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    SOLID, ce n'est pas tout à fait la base de la programmation.
    C'est la base de la conception technique. Au moins à mes yeux.

    Il s'agit de principes qui améliore la qualité d'un code.
    • le SRP (Single Responsability Principle) améliore grandement la vérifiabilité.
    • l'OCP (Opened Closed Principle) traite de la souplesse du code, donc de la facilité d'en écrire plus.
    • le respect du LSP (Liskov Substitution Principle) apporte une meilleur utilisabilité dans l'OO (entre autre).
    • l'ISP (Interface Segregation Principle) contribue à la séparation des taches.
    • quant à la DI (Dependency Injection), la encore, c'est un moyen de découpler le code.

    En conséquence, ces principes visent surtout à rendre le code modulaire, souple et maintenable. Les moyens de le faire passent généralement par fonctions et classes plus courtes, plus claires.
    Les moyens techniques liés au C++ sont notamment le RAII, la const-correctness, les références, et bien souvent, des classes techniques sans héritages (comme dans la STL)

    La programmation, c'est plus que simplement de la conception technique.
    C'est aussi la conception fonctionnelle: la définition de la solution générale du problème, et le choix des algorithmes pour les différentes manipulations requises.
    Pour cette autre partie, il n'y a pas beaucoup d'originalité. Il faut connaitre des algorithmes classiques, et savoir en construire.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/04/2015, 17h57
  2. génération des services web pour une classe composée
    Par kinfo2 dans le forum Services Web
    Réponses: 1
    Dernier message: 12/12/2010, 13h06
  3. Réponses: 2
    Dernier message: 08/02/2007, 11h39
  4. Réponses: 10
    Dernier message: 24/09/2005, 19h19
  5. Référence à un objet existant depuis une classe
    Par Adrenalys dans le forum ASP
    Réponses: 2
    Dernier message: 21/07/2005, 00h44

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