Bonjour à tous.
J'ai du mal à distinguer ce qui relève de la couche métier de ce qui relève de la couche d'accès aux données, ce qu'est exactement un objet métier et plus généralement comment bien architecturer un programme.
Prenons un exemple. Au niveau de la couche de présentation, je souhaite récupérer une liste d'élèves ainsi que les examens que chacun d'eux a réussi (très pratique pour faire des liaison de données et limiter l'accès à la base). Je pensais récupérer cela avec la requête GetElevesAndExamens renvoyant une liste d'objets EleveAndExamens. Ce dernier dérive de l'objet Eleve avec une propriété en plus : une liste d'objets Examen.
GetElevesAndExamens serait une méthode métier. Exact ?
Voici les instructions (placées dans une transaction) que contiendrait cette méthode:
- appel à la méthode GetAllEleves de la couche d'accès aux données (DAL) pour récupérer la liste de tous les objets Eleve
- parcours de la liste des objets Eleve, pour construire une liste d'objets EleveAndExamens grâce au constructeur EleveAndExamens(Eleve)
- parcours de la liste des objets EleveAndExamens pour leur associer la liste des objets Examen renvoyés par la méthode GetExamensFromEleve (méthode DAL)
Est-ce qu'une telle architecture vous parait farfelu ? classique ?
Est-ce que EleveAndExamens est un objet métier au même titre que Eleve ?
Partager