|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Inscription : septembre 2008 Messages : 4 ![]() |
Bonjour,
Je ne savais pas trop où poster ma réflexion, donc j'ai choisi le forum général de débats sur le langage Java. Le concept que je vais vous présenter s'est appuyé sur le développement Java. Le problème soulevé, à l'origine de cette réflexion sur la Programmation par contexte, est que le langage Objet ne fait pas apparaître les états et les relations entre les objets. Ainsi une brouette reste une brouette, qu'elle soit remplie ou vide. Une brouette peut soit être remplie, soit être vidée. Une brouette remplie peut-elle être remplie ? Une brouette vide peut-elle être vidée ? Le concept objet ne fait pas la différence entre les états. Actuellement, la programmation, quelle qu'elle soit, est "à plat". Tous les états dans lesquels passent les objets sont décrits dans le code : Code :
L'idée de la programmation par contexte est de pouvoir définir des variables de contexte, et programmer suivant un contexte bien particulier. Ma brouette reste une brouette, je crée donc un objet Brouette : Via un plug-in de mon EDI, je définis que la classe "Brouette" peut prendre 2 états "Vide" et "Remplie". Lorsque je sélectionne l'état "Vide", j'écris donc le code relatif à cet état : Code :
Une fois que ma classe est définie pour l'état "Vide", je change cet état dans mon contexte EDI, et je le passe à "Remplie". Ma classe devrait ressembler alors à : Aucune méthode n'a été définie pour l'état "Remplie". Je crée donc ce qu'il me faut : Code :
Cette programmation par contexte est donc une sur-couche à la programmation actuelle, qui permet de distinguer les relations entre les objets. J'aimerais avoir votre avis sur ce concept, s'il possède un autre nom, s'il a été discuté, quels sont les avantages, les inconvénients. Je vous remercie, Stéphane. |
||||||
|
|
01
|
|
|
#2 |
|
Membre chevronné
![]() ![]() William RosenthalResponsable de service informatique Inscription : juin 2009 Messages : 400 ![]() |
je n'ai pas d'info particulière a ce sujet.
peut-être : http://www.abrillant.com/doc/design/index.htm#state Mais je trouve cette réflexion pertinente. j'essaye de préfixer le nom de mes méthodes afin de faire apparaitre ce concept. je rapprocherais cela du cycle de vie des objets. A suivre .... |
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() ![]() Yann CaronIngénieur développement logiciels Inscription : mai 2008 Messages : 310 ![]() |
Je croie qu'il faut distinguer deux chose dans un programme, la partie compilée et la partie runtime.
Les états, étants dynamiques sont par définition des entités appartenants au runtime. Ce que tu propose c'est de créer des états à cheval entre le compilé et le runtime.ce qui me parlait impossible. À moins que le code ne s'auto-génère, ce qui donne les problèmes que l'on connais avec les langages de scripts (effets de bord ect...) De toute façon, dans le cas ou ta brouette est vide, que ce passe t'il si ton client essaie de la vidée à nouveau? Ça créer une exception.
__________________
Mon petit projet en cours, Algoid sur developpez.net, 100% naturel java, sans conservateur et sans parabène. Mon site vouèbeu Orange Head by CyaNn, avec 45% de matière 3D dedans. |
|
|
00
|
|
|
#4 |
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 689 ![]() |
Tu t'es pris d'amour pour les vieux sujets ?
Le problème n'est pas la programmation "par contexte" (?) mais la programmation "par contrat" qui fait pleinement parti de l'objet mais pas de Java ... L'opération remplir d'une brouette à l'état rempli peut ne rien faire, ou bien renvoyer une erreur, ou bien renvoyé un booléen (ex: l'API des Collections). Si une opération est valable en fonction d'un ou plusieurs états et sans que l'objet lui-même n'est conscience de tous les états possibles dans ce cas il faut utiliser le(s) pattern(s) Mediator & State. Une page dédiée à ce sujet : http://c2.com/cgi/wiki?DynamicClassification.
__________________
Java : Forum - FAQ - Java SE 7 API - Java EE 6 API ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !) Une solution vous convient ? N'oubliez pas le tag ![]() Signature par pitipoisson |
|
|
10
|
|
|
#5 |
|
Membre éprouvé
![]() ![]() Yann CaronIngénieur développement logiciels Inscription : mai 2008 Messages : 310 ![]() |
Oui c'est un peu comme appeller un méthode qui n'existe pas avec de l'introspection, ça fait un truc dégeulasse.
Pour les vieux postes, j'ai pris des sujet au hazard qui m'interessait pour faire connaissance....
__________________
Mon petit projet en cours, Algoid sur developpez.net, 100% naturel java, sans conservateur et sans parabène. Mon site vouèbeu Orange Head by CyaNn, avec 45% de matière 3D dedans. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com