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 :

Programmation "type entreprise"


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut Programmation "type entreprise"
    Bonjour,

    Je débute en C++, j'ai compris le fonctionnement des classes mais j'ai du mal à voir comment bien les utiliser.

    Par exemple si je souhaite faire un programme qui fasse un traitement sur une phrase :
    - ajouter une majuscule en début et un point en fin de phrase,
    - remplacer tous les espaces par un "_",
    - compter et afficher en bout de phrase le nombre de caractère de la pharse.

    Je souhaiterai que ce programme soit évoluable de manière à ajouter d'autre traitements sans être obligé de toucher à ceux déja fait, et avoir qu'une seule fonction dans mon main qui appelle le traitement.

    L'idée c'est de comprendre comment programmer des gros projets comme ce que l'on retrouve en entreprise.

    Si vous avez des exemples de codes similaires à ce que je veux faire, ou si vous savez comment programmer mon exemple je serai preneur.

    Merci pour votre aide.

    Anthony

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Pour des choses comme ça, t'as pas vraiment besoin de t'inquiéter, tu fais une classe (avec des méthodes statiques pour pas avoir besoin d'instancier si elle ne à rien d'autre) qui englobe des méthodes pour te faciliter la vie avec les strings. Du moment que ton code est clair il sera facilement maintenable (à condition que ce qu'il fasse ne soit pas aberrant non plus ).

    Pour ce qui est de ta fonction qui remplace les caractères, la classe string a des méthodes pour faire ce genre de chose.

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    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 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Bonjour,
    Ce n'est pas un exemple de programme "d'entreprise".
    Une entreprise n'a pas besoin d'un programme C++ pour faire ceci.
    Surtout que tu n'as aucune usage visible de classes dans ton cas:
    une phrase, peut-être, mais c'est pauvre


    Par contre, un programme d'analyse de multiples entrées serait plus utile.
    Imagine un dossier contenant des fichiers textes. (.txt normaux)
    Tu pourrais vouloir faire des statistiques sur tous ces textes, et produire un rapport d'analyse.

    Tu as plus de possibilités:
    • le nombre de phrase
    • la taille moyenne des mots d'un texte
    • le nombre de mot par phrases
    • la fréquence du mot je
    • la fréquence de la lettre u
    • quels documents utilisent des noms propres et lesquels.


    La, tu peux mettre en place un systeme de classes, pour les différentes mesures. L'idée est d'avoir un ensemble de mesures (vector?) et de les appliquer à chaque fichier du répertoire.
    Regarde du coté des foncteurs et des fabriques (factory) pour ce faire.

    Rappelles-toi que l'objectif n'est jamais de faire des classes, mais de résoudre un problème.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Merci pour vos réponses.

    Je sais que je me complique la vie, mais il m'a été demandé ce genre de chose pour un entretien professionnel.

    Le but est de comprendre comment passer d'exemples qui illustrent les cours, à un (mini)projet.

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    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 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Une classe correspond à un concept manipulable du probleme.
    Dans ton exemple initial, il n'y a que la phrase et la chaine de caractere.

    Dans les entretiens, il faut savoir quand faire ce qui est demandé et quand expliquer pourquoi ne pas le faire.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    à mon avis quelqu'un qui demande "d'écrire une classe" pour faire ce seul traitement je le fuirais : il s'agit surement d'un cravateux qui a essayé de faire une phrase avec les quelques mots-clé qui ont matché entre sa db de recherche et ton profil.

    L'essence d'une classe c'est de rendre un service, de manipuler des données, voire d'être une donnée.
    Remplacer des caractères, ça a à peine de quoi s'appeler un service, il s'agira dans 500% des cas d'une fonction seule (éventuellement décorée pour gérer plusieurs cas, un simple replace, des regexp, passer des tableaux, list, ..).
    La seule "classe" éventuelle là c'est la chaîne de caractère, mais uniquement pour se simplifier la gestion mémoire inhérente à cet objet.
    Ca existe déjà et c'est std::string.
    Remplacer un caractère ? string::replace
    Le nombre de caractère ? string::size
    Changer la casse ? toupper, tolower

    Btw, il ne faut pas croire que le "développement d'entreprise" (lui aussi qui t'a mis cette idée en tête ?) a quoi que ce soit d'exceptionnel.
    La seule chose qui change c'est qu'on y trouve parfois des règles/conventions, des process pour simplifier la mise en place, le déployement, automatiser certaines tâches récurrentes, etc...
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    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 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Personnellement, la seule chose qui change entre chez moi et le taf, c'est le couple bugzilla/jira.

    PS: et les prises de têtes avec les décideurs qui refusent les bonnes pratiques…
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  8. #8
    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,

    En fait, il y a très peu de différence entre le développement en entreprise et le développement "personnel".

    • Les entreprises et les équipes d'une entreprises ont leur "petites habitudes", tout comme tu peux avoir les tiennes, à toi de t'adapter à celles de l'entreprise
    • Les "projets d'entreprise" peuvent souvent s'étaler sur plusieurs années et il n'est pas rare que certaines parties de code soient "si anciennes" que plus personne n'est en mesure de dire qui les a écrites, ni ce qu'elles font
    • Il y a souvent des système de "bug tracking" et de contrôle de gestion, ce que tu utiliseras peut etre rarement pour ton développement perso
    • Les rôles sont parfois mieux définis : une personne s'occupe de l'analyse fonctionnelle, une autre de la gestion financière du projet, et tu es parfois soumis aux ordres d'une personne qui prendra certaines décisions que tu devras respecter, qu'elle soient bonnes ou mauvaises.
    • Tu n'es parfois pas le seul à mettre les mains dans le code, ce qui peut nécessiter d'avantage de communication entre toi et les autres
    Finalement, ce sont surtout des différences "organisationnelles", qui ont simplement pour effet d'exacerber les bons et les moins bons cotés d'un projet

    Mais, au final, tu seras toujours confronté aux mêmes problèmes: si l'évolutivité n'a pas été envisagée à toutes les étapes du développement, il sera rapidement difficile de faire évoluer les choses dans une direction donnée.

    La seule chose, c'est que tu pourras, éventuellement, décider de jeter tout ton code dans un projet personnel, alors que ce sera souvent une alternative difficile à défendre en projet d'entreprise
    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

  9. #9
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par leternel Voir le message
    PS: et les prises de têtes avec les décideurs qui refusent les bonnes pratiques…
    Haha, rien qu'après un stage de 2/3 mois (dans du dev web, l'horreur quoi ) je connais ça.

    La vision à (très) court terme des décideurs est frustrante, ce qui compte c'est d'avoir un résultat immédiat, même si ça signifie perdre du temps à moyen / long terme car on à un truc pas vraiment (voir pas du tout) évolutif ni maintenable...

    Une autre chose qui change, c'est la présence de deadline à respecter, mais ça n'impacte pas le code (normalement... )

  10. #10
    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
    Citation Envoyé par Iradrille Voir le message
    Une autre chose qui change, c'est la présence de deadline à respecter, mais ça n'impacte pas le code (normalement... )
    Enfin, on aimerait que ca ne l'impacte pas (trop), mais, en pratique...
    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

  11. #11
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Il y un truc que je fais au travail mais pas sur mes projets perso, c'est les tests unitaires.
    Sinon le reste, effectivement c'est grosso modo pareil.

    Bon, il y a aussi les blagues dans les commentaires, que j'évite à faire au travail quand-même
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  12. #12
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    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é : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Iradrille Voir le message
    Haha, rien qu'après un stage de 2/3 mois (dans du dev web, l'horreur quoi ) je connais ça.

    La vision à (très) court terme des décideurs est frustrante, ce qui compte c'est d'avoir un résultat immédiat, même si ça signifie perdre du temps à moyen / long terme car on à un truc pas vraiment (voir pas du tout) évolutif ni maintenable...
    Ah !

    Le time to market est plus important que les problèmes qui peuvent survenir par la suite, ce qui explique cela. Après, si tu travailles dans un SSII, il est important de garder du travail pour plus tard, sans quoi tu ne pourras pas vendre un plan de maintenance ni, dans 3 ans, proposer un refonte globale de l'application "parce que vos nouveaux besoins exprimés ne sont pas implémentable vu l'architecture actuelle."

    On va m'accuser d'être cynique, mais j'ai quand même fait quelques années dans une SSII...

    Citation Envoyé par Iradrille Voir le message
    Une autre chose qui change, c'est la présence de deadline à respecter, mais ça n'impacte pas le code (normalement... )
    Quand tu dois corriger un bug dans l'urgence 4h avant d'envoyer le code au client, est-ce que tu penses que tu as le temps de bien faire tout dans les règles ?
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Alias avec différents types de quote ?
    Par Djobird dans le forum Administration système
    Réponses: 2
    Dernier message: 14/02/2011, 17h37
  2. UPDATE en ajoutant un 0 sur un champ de type "char"
    Par doum2 dans le forum Requêtes
    Réponses: 1
    Dernier message: 08/03/2006, 14h22

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