Bruno Desthuilliers wrote:
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 !-)
Si si on vit bien dans le même monde. La preuve on peut communiquer
ensemble. Évidemment, je ne saurais être exhaustif et donc on peut rajouter
aussi des concepts informatiques.
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
>>>
Que les fonctions puissent être implémentées sous forme d'objet dans un
langage est une chose, qu'un objet soit une fonction en est une autre.
De même, les fonctors (objets qui agissent comme une fonction) sont une
chose, les fonctions par elles-même une autre.
Il faut arrêter de percevoir la PO qu'au travers de la petite lorgnette de
tel ou tel langage de programmation. Avec C++ ça a abouti suffisamment à
des travers pour que l'on commence à arrêter les conneries.
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. [...]
Non, non et non. Arrêtons de tout voir par et uniquement par les langages
qui ne sont que des outils limités de l'approche objet.
Tout ça pour s'excuser de faire du mixte de procédurale et de l'objet parce
qu'on a du mal à faire de la programmation par objets correcte. Et après,
on va entendre des soit disant experts (qui ne sont experts que par leur
prétention de l'être) que l'objet c'est limité, c'est machin, c'est truc.
Note : désolé ... j'ai piqué une colère.
(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é...)).
L'approche objet est une abstraction bien au-dessus de considérations de
bits (pas de vilain jeux de mots stp :) )