J'ai besoin d'une définition concise de "l'état d'un objet" dans la programmation orientée objet (pour un article).
Pendant environ une demi-journée, j'ai cherché un article que je peux citer sur ce sujet, mais je n'en ai pas trouvé un. Tous les articles que j'ai trouvés étaient principalement des articles généraux sur la programmation orientée objet et ils ne définissaient pas l'état d'un objet.
Je ne suis pas sûr, mais ma meilleure supposition est quelque chose comme: l'état d'un objet est défini par l'état des variables d'instance de l'objet.
Je recherche une définition de l'état d'un objet et / ou une référence sur le sujet.
(btw, pourrais-je appeler le concept "état d'objet" ou est-ce rare?)
Réponses:
Vous pouvez jeter un œil à (et citer) le livre "Object-Oriented Analysis and Design" de G. Booch :
Et il y a toute une sous-section qui décrit le concept d' État :
la source
Vous devez également garder à l'esprit que l'état d'un objet est une entité "abstraite", telle que déterminée par ce qui est observable par les méthodes. Par exemple, un objet qui implémente une table de hachage a pour état, la collection de valeurs stockées dans la table de hachage, pas tous les détails de la représentation interne.
la source
Le terme « état » peut être utilisé dans divers sens, qui peuvent même ne pas tous être susceptibles d'une définition précise. Il était donc important que vous incluiez une définition dans votre document, pour bien expliquer comment vous utilisiez le terme. Dans ce qui suit, je n'offre pas une définition unique de l'état d'un objet, mais j'essaie plutôt d'esquisser un certain nombre de façons de penser à ce sujet, qui peuvent être appropriées dans différents contextes.
Cependant, vous devez d'abord penser à ce que vous entendez par « objet »: pensez-vous à un objet conceptuel, c'est-à-dire à une entité que vous essayez de modéliser, ou à une instance d'une classe dans un programme spécifique; peut-être voulez-vous également penser à l'état d'une variable qui pourrait à différents moments faire référence à différents objets ou à un système, peut-être comme accessible via une certaine interface utilisateur.
Une partie de la difficulté à définir l'état d'un objet dans la POO est que lorsque nous modélisons des entités dans un langage particulier, ce langage ne nous permet souvent pas de distinguer les attributs d'objet qui font conceptuellement partie de la même entité de ceux qui ne le sont pas. Par exemple, une liste liée de
Car
sera constituée d'un certain nombre d'Link
objets, qui contiennent des pointeurs vers le suivant (et peut-être le précédent)Link
bien que conceptuellement la liste soit un seul objet; les liens peuvent également être intégrés dansCar
-objets ou contiennent des pointeurs vers eux, mais dans ce cas, les objets liés sont conceptuellement séparés plutôt que partie de la liste; dans une liste de modifications récentes, cependant, les modifications ne peuvent être présentes que dans la liste et considérées comme faisant partie de celle-ci. Dans ces différents cas, nous devons décider si nous considérons que l'état d'un objet inclut celui des objets liés. De plus, unCar
peut avoir un lien vers unRegistering_Authority
- nous ne considérons probablement pas que l'état de la voiture change lorsque son autorité d'enregistrement change l'URL de son site Web. À moins que le langage d'implémentation ne permette de distinguer différents types de liens, il ne sera pas possible de faire une définition générale de l'état d'un objet en termes de langage seul.Le « externe » ou « fonctionnel » état peut être défini comme « comment elle se comporte », ee.g. comment il réagit aux invocations de méthodes ou à une interface utilisateur. Pour un objet en tant qu'instance de classe, cette définition dépend du type auquel l'objet est considéré comme appartenant: vu comme un
Circle
, la couleur d'unColoured_Circle
n'est pas visible, et donc sans rapport avec son état. Une difficulté avec cela est que «comment il réagit» peut devoir être défini en termes de valeurs renvoyées, et ces «valeurs» peuvent être les états d'autres objets. Une façon de formaliser cela est de dire que deux états d'un objet sont identiques si toutes les exécutions futures possibles d'un système dans lequel il est intégré entraînent le même mappage des entrées vers ce système aux sorties de celui-ci. Ce système d'enceinte peut être requis pour être un système autonome, capable d'être exécuté indépendamment de son environnement; d'autre part, on pourrait lui permettre d'être aussi petit que l'objet en question lui-même. Dans tous les cas, une approche mathématique consiste alors à définir un état comme une classe d'équivalence deLe « interne » état peut être défini comme l'état de la représentation. Une première tentative est apparemment circulaire mais peut-être utile: «L'état interne d'un objet est l'état de ses membres». Ici, nous devons prendre soin de distinguer les aspects significatifs de la représentation des aspects insignifiants: au niveau le plus bas, la représentation d'un objet peut bien inclure des adresses d'autres objets, mais il est peu probable qu'il soit utile d'envisager un changement dans une telle adresse comme un changement d'état. D'un autre côté, un changement dans l'état d'un cache pour le résultat d'une requête, alors qu'il ne fait aucune différence pour l'état fonctionnel (comme décrit ci-dessus), sera important lors de l'examen des tests de performances.
la source
IBM a un glossaire qui définit le mot "état" dans plusieurs définitions différentes qui sont très similaires les unes aux autres. Ils ne précisent pas spécifiquement qu'ils sont liés à la programmation orientée objet, mais on peut les extrapoler et les utiliser dans ce contexte.
Le New World College Dictionary de Webster définit «l'état» comme:
Le dénominateur commun de tout cela est le temps. L'état change avec le temps. Telle est la nature des variables. Si quelqu'un demandait: "Quel est votre état actuel?" Vous pourriez dire aujourd'hui que vous êtes marié et demain vous pourriez être célibataire.
Compte tenu de toutes ces définitions, on peut extrapoler que «état» est la façon dont un objet existe à un moment donné déterminé par les valeurs de ses attributs, à savoir ses propriétés / variables.
Je ne pense pas que ce soit plus simple que cela.
la source
Un système orienté objet intègre les termes de code et de données en utilisant le concept d'un "objet". Un objet a un état (données) et un comportement (code). Par conséquent, les états d'objet sont les instances (variables) à l'intérieur de l'objet qui contient les données.
la source