• [^] # Re: Conférence sur la programmation orientée aspect et JAC, à Toulouse.

    Posté par . En réponse à la dépêche Conférence sur la programmation orientée aspect et JAC, à Toulouse.. Évalué à 7.

    Bon en gros, c'est le paradigme de programmation à la mode en ce moment. Pour replacer le truc, on pourrait dire "procédural -> orienté objet -> orienté aspect" ...

    En quoi ça consiste ? et bien, l'idée est que dans un programme, on structure d'une certaine façon (imagine que par exemple tu as défini un certain nombre de classes d'objets pour ton programme, qui sont donc représentés grosso-modo sous forme d'un ou de plusieurs arbres d'héritage).

    Mais en fait cette structuration "fige" ton programme dans une représentation donnée.
    C'est à dire que tu peux très bien avoir des morceaux de code, qui pourraient être structurés, mais qui ne le peuvent pas car avec la structuration que tu as choisie pour ton programme, ces bouts de codes sont disséminés à divers endroits de tes classes. Du coup, tu ne peux pas structurer ces bouts de code là -- ce qui est un peu dommage, non ?

    Tu as en fait différents "aspects" de ton programme qui sont combinés dans tes classes, et en programmation objet classique, tu n'as pas de moyens pour structurer ces "aspects". La réutilisation et la factorisation de ces aspects est donc impossible.

    La programmation par aspects te permets de les structurer et de les factoriser, et propose pour cela différentes solutions pour mixer ces aspects avec ton code. Par exemple, AspectJ, un préprocesseur pour java, propose de rajouter les aspects à des endroits que tu définis (avant l'appel à une fonction donnée, après la fonction, avant chaque écriture disque, etc.).

    L'exemple ultra-classique avec les aspects : rajouter des traces à du code. Imagine que tu veuille logger tous les accès à une variable. Tu risques de devoir te taper les modifs dans tout ton programme, et en plus, faudra virer tout ça une fois les tests finis. Plutôt chiant. Là avec les aspects, tu te crée un aspect "TraceDeMaVariable" et ton source reste clean. Le jour ou tu veux plus de cet aspect, tu le vire.
    Et encore, avec une variable, on peut encapsuler ça avec un setter/getter et donc centraliser tes traces. Mais bon cet exemple montre un peu l'intérêt des aspects je pense ... et puis, tu peux vouloir logger tous les appels d'une fonction d'un objet, ou tous les accès I/O ...
    Tu peux le faire en programmation classique, mais ça va être une plaie et surtout l'ensemble de l'aspect "trace de mon programme" sera disséminé dans tout ton programme. Alors qu'avec un aspect tout reste nickel, bien séparé.

    Il y a un excellent numéro d'ACM qui traite de tout ça (octobre 2001).

    sinon le site aosd : http://aosd.net/(...) et le site d'aspectj : http://www.eclipse.org/aspectj/(...)

    En gros la plupart des développements sur les aspects ont lieu autour de java (mais il y a quelques travaux pour C/C++, SmallTalk, etc.), et honnêtement, la programmation par aspect (AOP) est quelque chose de pas mal intéressant ... si vous êtes sur lyon, allez à cette conférence, ça doit être sympa.