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 :

Structure application (classe)


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 42
    Points
    42
    Par défaut Structure application (classe)
    Bonjour à tous,

    Prenons un exemple simple.
    Un garage automobile (un grand garage :-) ) possède plein de voitures de différentes marques et modèles.
    J'ai donc une classe Voiture avec ses propriétés et méthodes.
    Imaginons que le garagiste veuille faire un inventaire. Il a donc besoin d'une méthode quelque part ( par exemple GetAllCars) qui donne donc la liste de toutes les voitures.
    Aujourd'hui je place cette méthode dans ma classe voiture.
    Est-ce que c'est une bonne pratique ou alors devrais-je par exemple créer une classe Voitures où je pkacerais cette méthode ? Ou alors procéder d'une autre manière ?

    Merci d'avance.

  2. #2
    Membre actif
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Points : 297
    Points
    297
    Par défaut
    Bonjour,

    Mettre ta méthode GetAllCars() dans Voiture, n'est pas une bonne pratique, dans le sens où ça 'oblige' une voiture à connaitre toutes les autres.
    Donc faire une classe Voitures qui la contiendrait reste une bonne solution.

    Bonne continuation.
    L’aléatoire n’existe pas en informatique, c’est juste un moyen de dire que l’on a pas encore compris.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    Ok, Merci.

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Citation Envoyé par Kyroon Voir le message
    Mettre ta méthode GetAllCars() dans Voiture, n'est pas une bonne pratique, dans le sens où ça 'oblige' une voiture à connaitre toutes les autres.
    Donc faire une classe Voitures qui la contiendrait reste une bonne solution.
    Je ne serais pas aussi catégorique. Cela dépend de ton projet. Est-ce que tu as une base de données derrière et ta classe Voiture n'est qu'une couche d'accès ? Si oui, tu peux très bien faire une méthode statique qui te retourne l'ensemble des voitures de ton garage.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    Oui c'est cela, il y a une base SQL Server derrière.
    Dans mon appli j'ai déjà tout un tas de méthodes statiques rassemblées pour des questions pratiques dans une classe "Global", où j'ai par exemple des vérifications de format de mail, génération de mot de passe, remplissage listview à partir d'une list, etc...
    A ce moment là, cette méthode GetAllCars(), dois-je là mettre avec ces méthodes statiques ou dans ma classe voiture?

    Je suis bien conscient que dans les 2 cas çà fonctionnera, mais je cherche à savoir à des fins de progression et de bonne pratique, où est-il recommandé de la mettre.

  6. #6
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Merci pour le complément d'info. A partir de là, oui, je mettrais cette méthode statique au niveau de la classe voiture. C'est là où cela me parait le plus logique.

    Ainsi, toute la logique concernant les voitures est traitée en une seule et même classe.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Ta Classe Voiture représente une seule voiture ?
    N'a tu pas un objet (collection, tableau ...) qui regroupe tes voitures ?

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour à tous,

    Je sens que cette discussion va devenir intéressante
    Déjà il faut que tu es conscience qu'il y a plusieurs (beaucoup ?) de façon de faire et que tu trouveras ici des réponses différentes qui ont toutes des avantages et des inconvénient.

    Pour ma part, et comme ericlm128, je partirais sur une classe 'au dessus' de ta classe Voiture que l'on pourrait appeler ParcVoiture, ou GestionVoiture ou tout comme te le dis ericlm128 Voitures (moi aussi j'aime bien juste mettre un s à la fin d'une classe de ce genre ) qui gérera toutes tes voitures, elle te permettra d'ajouter des voitures à ton parc de voitures d'en retirer, d'avoir des infos sur le nombre de voiture dans ton parc, te donner les voitures qui ont une roue crevée ...etc à toi de voir. Si tu pense que ton appli devra évoluer dans un futur proche alors je pense que c'est la bonne solution. A mes début c'est souvent une erreur que je faisais (enfin c'est ce que je pense aujourd'hui), de ne pas faire de classe de gestion au-dessus d'une classe métier, typiquement je créais une classe Personne, mais jamais de classe CarnetAdresse ou Annuaire, et finalement quand on le fait on trouve ça vachement plus simple et naturel, et en plus on respect du coup encore plus le principe d'une classe une responsabilité

    Après je ne rejèterais pas aussi vite que ça la remarque de dorinf, une méthode static qui te retourne tes Voiture dans la classe Voiture, j'ai longtemps fais ça, mais je le fais plus, car si Voiture est une classe métier (et non une classe d'accès au donnée) alors tu vas mélanger la couche métier et la couche d'accès aux données, faut arrêter d'être puriste jusqu'au bout des ongles, et peut être que ton projet n'a pas vraiment d'intérêt d'avoir une vraie séparation des couches, que c'est une petite appli qui ne va pas beaucoup bouger par la suite alors tu gagneras un peu de temps avec une simple méthode static. Le risque de cette solution c'est que ta classe Voiture va devenir énorme avec le temps si ton appli devra évoluer, et finir par mélanger des concepts.

    Bon code,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  9. #9
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Le S de SOLID veut dire Single responsibility principle
    So...

Discussions similaires

  1. [Débutant] Require + Structure application PHP
    Par negri_l dans le forum Langage
    Réponses: 4
    Dernier message: 30/11/2006, 14h58
  2. Schéma structure des classes
    Par delma dans le forum EDI et Outils pour Java
    Réponses: 8
    Dernier message: 29/11/2006, 16h52
  3. [log4j] structurer par classes
    Par frouge dans le forum Logging
    Réponses: 4
    Dernier message: 25/09/2006, 11h24
  4. Structure de classe dynamique
    Par amel666 dans le forum Langage
    Réponses: 2
    Dernier message: 24/01/2006, 09h13
  5. structure de class?
    Par kiko69 dans le forum C++
    Réponses: 4
    Dernier message: 13/03/2005, 14h30

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