Miguel Moquillon a écrit :
surcroma@gmail.com wrote:
Bonjour,
J'aurai aimé savoir s'il était préférable qu'un objet soit quelque
chose, c'est à dire assimilable à un être concret, plutôt qu'il
s'occupe de quelque chose.
Un objet, dans un programme, représente un concept du monde de l'entreprise
ou une idée ou une chose du monde concret.
Ah bon ? Une boite de dialogue, une connection à une base de donnée ou un handler de fichier sont des concepts du monde de l'entreprise ou des idées ou choses du monde concret ? On ne doit pas vivre dans le même monde !-)
Ce n'est pas une fonction si
c'est à quoi tu penses.
Python 2.4.1 (#1, Jul 23 2005, 00:37:37)
[GCC 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def func(arg):
.... print arg
....
>>> func
<function func at 0x40423374>
>>> func.__class__
<type 'function'>
>>> func.func_code
<code object func at 0x4041b1a0, file "<stdin>", line 1>
>>> isinstance(func, object)
True
>>> newfunc = func.__new__(func.__class__, func.func_code, func.__dict__)
>>> newfunc
<function func at 0x404233ac>
>>> newfunc is func
False
>>>
Il semblerait pourtant bien que dans certains langages, un fonction soit un objet... et réciproquement d'ailleurs:
>>> class MyFunctionType(object):
.... def __call__(self, arg):
.... print arg
....
>>> func2 = MyFunctionType() # create a new instance of type
>>> func2(42)
42
>>>
Par contre, il peut être dédié à une tâche précise pour laquelle il offre
différents services ou opérations : un gestionnaire de connexions par
exemple. Mais là aussi, tu dois le penser comme une entité, comme un sujet,
et non comme un verbe.
En analyse, oui. En conception, c'est déjà plus tangeant. En ce qui concerne l'implémentation, c'est avant tout lié au langage. Accessoirement, quand les fonctions sont des objets, on peut les considérer aussi bien comme des sujets que comme des verbes... Cette distinction entre "données" et "fonctions", héritée des langages procéduraux, est en fait franchement arbitraire (et pas seulement du point de vue conceptuel - pour l'ordinateur, il s'agit toujours d'une suite de bits stockés à une adresse mémoire, et l'interprétation qu'il va en faire dépend essentiellement de ce qu'on lui demande (c'est d'ailleurs à l'origine de pas mal de faille de sécurité...)).
Mes deux centimes...