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

Langage Java Discussion :

[Language][Définition]Classe métier


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut [Language][Définition]Classe métier
    Bonjour.

    En lisant un livre parlant entre autre de Java, j'ai vu apparaitre à plusieurs reprises le terme "classe métier".
    J'avoue ne pas avoir vraiment saisi le sens malgré le contexte du livre.
    j'ai alors demandé à mon ami Google de m'aider mais mes recherches ont été peu concluantes.
    Y aurrait il quelqu'un pourrait m'expliquer en 2 mots à quoi ces classes correspondent et me donner un petit exemple de classe métier dans une application ???

    Merci !
    Ils flottent tous en bas

  2. #2
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Bonjour,
    Cela rejoint le principe du MVC: Modèle Vue Contrôleur.

    La philosophie actuelle est de séparée les différentes couches d'une appliation pour gagner en lisibilité, en maintenabilité et facilité de développement en équipe.

    Ainsi les classes se spécailisent en isolant les fonctionnalités.
    De ce fait, des Classes correspondent au modèle de données comme des classes Eleves, Enseignant, Personnel dans l'exemple d'une école ...

    Pour l'IHM, des classes sont là pour créer les Frames, les JPannels, bref tout ce qui concerne l'affichage (et mes exemples ici sont très liés au modèle Java mais peuvent être étendus).

    Enfin, pour la partie logique de l'application, des Classes sont créés pour manipuler le modèle décrit plus haut et retourner les informations adequates à l'IHM.

    Idéalement, s'il y a une base de données par exemple, une personne en charge du modèle peut travailler avec un dba pour concevoir son modèle. De plus ce modèle peut être réutilisable dans d'autres applications liées à l'administration de l'école.

    Des personnes plus spécialisées IHM, design, etc vont gérer la partie Vue de l'application.

    Enfin d'autres personnes sont en charge de la logique, éventuellement de l'algorithmie,.. bref, du la partie métier.

    Et bien sûr, dans la pratique il existe une grande interaction entre les différentes personnes en charge de chaque partie !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut
    Merci d'avoir pris la peine de repondre xxaragornxx.

    J'ai lu, lu et relu ta réponse.
    Je pense avoir compris des choses mais je suis pas sur que tu parlais bien des classes métiers comme tu n'en as parlé qu'à la fin.

    En gros, les classes métiers sont des classes qui regroupe une fonctionnalité propre à l'application ? Comme par exemple la sécurité ?

    Les exemples de classe que tu donnes : le modele de données, l'IHM, l'algorithmie sont des classes métiers par exemple ???
    Ils flottent tous en bas

  4. #4
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par thebloodyman
    Merci d'avoir pris la peine de repondre xxaragornxx.
    Mais de rien

    Citation Envoyé par thebloodyman
    En gros, les classes métiers sont des classes qui regroupe une fonctionnalité propre à l'application ? Comme par exemple la sécurité ?

    Les exemples de classe que tu donnes : le modele de données, l'IHM, l'algorithmie sont des classes métiers par exemple ???
    Une application peut se découper en 3 parties: Données, IHM, Metier.
    Quand tu cliques sur un bouton dans ton IHM pour calculer la moyenne de la classe (dans mon exemple école ), ce n'est pas à ton bouton ou à ta Frame de faire le calcul en manipulant les données.
    De même ce n'est pas un objet Eleve qui va calculer une moyenne sur tous les Eleves.
    De ce fait entre les 2 tu incorpores des classes métiers en charge de manipuler les données Eleves en récupérant leurs notes, de faire le calcul de la moyenne et de donner le résultat à ton IHM pour qu'elle affiche qqpart.

    Autre exemple, si tu veux générer un fichier par rapport à tes données, ce n'est pas chacune des données qui vont s'écrire dans le fichier.
    Pour ce faire tu vas créer un "service" qui va se charger de compulser tes données, prendre ce dont il a besoin et générer le fichier. Ca c'est une façon d'envisager des Classes métier

    Tu peux donc résonner en terme de services (souvent spécialisés) si ça peut te parler plus.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut
    Merci du complément

    Ca y est cette fois, je pense avoir bien compris cette notion.
    Merci beaucoup en tout as, tu as été très clair.
    Ils flottent tous en bas

  6. #6
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par thebloodyman
    Merci du complément

    Ca y est cette fois, je pense avoir bien compris cette notion.
    Merci beaucoup en tout as, tu as été très clair.
    Cool !

    Bon en me relisant j'ai vu que j'ai tendance à oublier des mots en tapant...

    Par contre si tu penses que c'est bon, n'oublies pas de mettre le tag [Resolu] en cliquant sur le bouton à cet effet en bas du thread

  7. #7
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Prenons un petit exemple d'un site de vente dans lequel on veut valider une commande :
    1- Tu cliques sur un bouton de ta Vue, cela produit une requete HTTP envoyée à ton serveur
    2- La requete est recue par un Front Controller (servlet) qui va déléguer le traitement de la requete HTTP à un Controleur
    3- Le controleur extrait les éléments de la requete (numéro de commande) dont il a besoin pour initier le traitement. Pour cela il va appeler une couche de service
    3- Le but de la couche de service est de coordonner différents éléments pour réaliser une tache. Typiquement cela se traduit à un appel à une couche de persistance qui retourne des "objets métiers" (on y arrive enfin) et on appelle éventuellement des méthodes métiers sur ces objets (validation de la commande : commande.valider(), calcul du prix de la commande : commande.calculerPrix(), ...) La "logique" métier se trouve dans ces objets, la couche service doit contenir le minimum de traitement.
    4- La couche de service retourne un résultat sous forme d'objets métiers (ou de DTO) qui constitueront le Model que le controleur associe à la vue suivante
    Le principe est très simplifié mais ca devrait te permettre d'avoir une bonne idée du principe.

    Citation Envoyé par xxaragornxx
    De même ce n'est pas un objet Eleve qui va calculer une moyenne sur tous les Eleves.
    Vrai, ce n'est pas à un objet Eleve de calculer les notes de tout le monde, par contre, chaque Eleve peut calculer ses propres notes.

    Citation Envoyé par xxaragornxx
    De ce fait entre les 2 tu incorpores des classes métiers en charge de manipuler les données Eleves en récupérant leurs notes, de faire le calcul de la moyenne et de donner le résultat à ton IHM pour qu'elle affiche qqpart.
    Ce dont tu parles porte un nom : Anemic Domain Model, c'est un anti-pattern. Le problème de cet anti-pattern, c'est qu'il est très répendu surtout si personne ne fait remarquer qu'il existe d'autres solutions.

  8. #8
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par dlemoing
    Citation Envoyé par xxaragornxx
    De ce fait entre les 2 tu incorpores des classes métiers en charge de manipuler les données Eleves en récupérant leurs notes, de faire le calcul de la moyenne et de donner le résultat à ton IHM pour qu'elle affiche qqpart.
    Ce dont tu parles porte un nom : Anemic Domain Model, c'est un anti-pattern. Le problème de cet anti-pattern, c'est qu'il est très répendu surtout si personne ne fait remarquer qu'il existe d'autres solutions.
    Cet exemple était pour illustrer la notion de métier et n'avait pas pour but de forcer une utilisation du bean bête et méchante et l'exemple est ici extrême.
    Un objet doit bien entendu avoir une partie métier, c'est la notion même d'objet. De ce fait un objet doit pouvoir se manipuler lui même, comme initier sa persitance par exemple, sans pour autant assurer lui même la connection à la base de données.

  9. #9
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Citation Envoyé par xxaragornxx
    De ce fait un objet doit pouvoir se manipuler lui même, comme initier sa persitance par exemple, sans pour autant assurer lui même la connection à la base de données.
    Initier sa persistance ? On était presque d'accord mais là non. Il ne faut pas confondre "logique métier" (business logic) et persistance ("persistence logic"). Je rajouterais qu'il doit pouvoir manipuler les objets qui lui sont associés (une commande travaille avec des lignes de commande et des produits pour calculer le prix total de la commande)

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut
    Dlemoing,

    Merci pour l'énnoncé de ton exemple.
    A vrai dire, je ne comprend qu'en partie ton explication.
    Les termes vue, DTO et couche de persistance ne falicitant pas ma compréhension.
    Tu saurais me conseiller un ouvrage ou du moins un type d'ouvrage qui m'aiderait à mieux comprendre ces concepts de conception qui ont l'air tres interessants ?
    Ils flottent tous en bas

  11. #11
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut
    merci bien
    et avec les liens vers Amazon en plus
    Ils flottent tous en bas

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

Discussions similaires

  1. [Language]constructeur de sous classes
    Par seb888 dans le forum Langage
    Réponses: 12
    Dernier message: 04/06/2005, 22h37
  2. [Language]acces aux metode d une classe
    Par harris_macken dans le forum Langage
    Réponses: 5
    Dernier message: 06/04/2005, 09h52
  3. Réponses: 2
    Dernier message: 27/03/2005, 16h09
  4. Réponses: 5
    Dernier message: 13/03/2005, 20h51
  5. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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