• [^] # Re: Tiling ?

    Posté par . En réponse à la dépêche Terminology 0.3. Évalué à 0. Dernière modification le 03 avril 2013 à 15:40.

    Désolé, vue l'audience de ce site, j'ai oublié que tout le monde n'est pas obligé de savoir ce que sont les DP.

    Il s'agit d'un des modèles de conception (Design Pattern) du GoF (Gang of Four) qui sont en fait une liste des schémas que l'on rencontre pour ainsi dire presque tout le temps en prog.

    Je te conseille de jeter un oeil aux articles wikipedia à leur sujet, ne serait-ce que les introductions, histoire d'entrevoir le principe, puis la liste, ça permet d'avoir une vue globale, et quand tu es confronté ensuite à un problème tu vas te dire "tiens, et si…".
    Je parie même que tu en as déjà utilisés plusieurs sans le savoir en fait (si tu dev, bien sûr). Dans mon cas, ça a été le cas avec le composite en 1er (pour une lib template de gestionnaire de fenêtre, avec une implémentation SDL 1.2 et un début SFML 1.6, faudra que je m'y remette).

    En génie logiciel, un objet composite est un patron de conception (design pattern) structurel. Ce patron permet de concevoir une structure d'arbre, comme un arbre binaire en limitant à 2 le nombre de sous-éléments.

    Motivation
    En programmation objet, un objet composite est constitué d'un ou de plusieurs objets similaires (ayant des fonctionnalités similaires). L'idée est de manipuler un groupe d'objets de la même façon que s'il s'agissait d'un seul objet. Les objets ainsi regroupés doivent posséder des opérations communes, c'est-à-dire un "dénominateur commun".

    Quand l'utiliser
    Vous avez l'impression d'utiliser de multiples objets de la même façon, souvent avec des lignes de code identiques ou presque. Par exemple, lorsque la seule et unique différence entre deux méthodes est que l'une manipule un objet de type Carré, et l'autre un objet Cercle. Lorsque, pour le traitement considéré, la différenciation n'a pas besoin d'exister, il serait plus simple de considérer l'ensemble de ces objets comme homogène.

    (citations de wikipedia: http://fr.wikipedia.org/wiki/Objet_composite)

    Comme tu peux le voir, on est bien dans le cas du conteneur: un conteneur est une fenêtre spécialisée qui ne fait que contenir d'autres fenêtre (et donc, peut-être, des conteneurs).
    J'adore ce DP au point d'avoir fini par coder un conteneur template en C++.
    (Je doute que quelqu'un d'autre que moi s'en serve, mais au cas ou, j'ai repiqué la licence de boost. De toute façon, il est encore incomplet: il manque une bonne batterie de tests et de la doc.)