• [^] # Re: Plusieurs méthodes

    Posté par . En réponse au message Patron de conception monteur cohérence des objets montés. Évalué à 2.

    Ce que tu dis est juste, dans le cas général.

    Mais parfois, en pratique, c'est plus compliqué. La création d'un objet ne se résume pas toujours à faire un new MaClasse().

    Par exemple, dans un jeu vidéo de voitures, le développeur n'écrit probablement pas une énorme classe Voiture qui gère toutes les configurations imaginables (avec plein de paramètres). Il n'écrit probablement pas non plus une classe par configuration imaginable.
    En fait, il va surtout s'appuyer sur des bibliothèques de moteurs, de roues, de skins, de sons, etc..., qu'il ne connaît généralement pas (il ne connaît que leur interface).
    Il va seulement écrire un classe Monteur, qui contient une série de fonctions, chacune étant chargée de créer un élément précis.

    Le ''directeur'' (celui qui donne les ordres, ici le jeu vidéo) appelle le monteur, qui va créer une Voiture ''vide'' (new Voiture()). Puis, il appelle tour à tour chacune des fonctions du monteur. Une fois qu'il les a toutes appelées, la voiture est prête à l'usage. Et donc là seulement, tu peux faire maVoiture.demarrer().

    En milieu de montage, d'un point-de-vue objet pur, maVoiture est bien une instance de Voiture. Mais une instance seulement à moitié initialisée.

    Et lorsque l'état de l'assemblage d'un objet dépend de celui d'un autre, ça peut vite devenir le bazar.

    D'où ma question : existe-t-il une bonne pratique pour décrire l'état d'avancement de la construction des objets ?

    Je pensais aux par GRAFCET, dont ont peut lier la progression à l'aide de bits de synchronisation. Peut-être existe-t-il un équivalent en modélisation orientée objet.