Définition de l'état d'un objet en POO

11

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?)

mrsteve
la source
Je pense qu'il y a de la place pour l'ambiguïté ici, de sorte que vous auriez dû dire dans votre document exactement ce que vous entendiez par «état»; si vous ne pouviez pas le faire, vous n'étiez peut-être pas en mesure de publier votre document.
PJTraill

Réponses:

9

Vous pouvez jeter un œil à (et citer) le livre "Object-Oriented Analysis and Design" de G. Booch :

... Un objet est une entité qui a un état, un comportement et une identité. La structure et le comportement d'objets similaires sont définis dans leur classe commune. Les termes instance et objet sont interchangeables.

Nous examinerons les concepts d'état, de comportement et d'identité plus en détail dans les sections qui suivent. ...

Et il y a toute une sous-section qui décrit le concept d' État :

... À partir de cet exemple, nous pouvons former la définition de bas niveau suivante.

L'état d'un objet englobe toutes les propriétés (généralement statiques) de l'objet ainsi que les valeurs actuelles (généralement dynamiques) de chacune de ces propriétés ...

Vor
la source
4
Floue, comme d'habitude. Ce que Booth voulait probablement dire: un état est une affectation de valeurs à ces variables.
reinierpost
3

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.

Uday Reddy
la source
2

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 Carsera constituée d'un certain nombre d' Linkobjets, qui contiennent des pointeurs vers le suivant (et peut-être le précédent) Linkbien 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, un Carpeut avoir un lien vers un Registering_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_Circlen'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 de

Le « 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.

PJTraill
la source
C'est l'une des réponses les plus utiles sur l'état de l'objet que j'ai trouvée. Il y a un document PDF en ligne et c'est surtout lui. Surtout la partie sur la représentation (état interne) qui ouvre mes yeux et me fait penser différemment à l'objet.
Miroslav Trninic
1

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.

Def 3: Une étape dans le cycle de vie d'un objet qui identifie le statut de cet objet.

Def 5: Une condition ou une situation au cours de la vie d'un objet au cours de laquelle il remplit une condition, effectue une activité ou attend un événement.

Déf 8: caractéristique d'un objet qui se manifeste dans ses membres de données publics et privés et peut être divisée en deux catégories: état essentiel et état non essentiel.

Déf. 9: dans une machine d'état métier, l'une des étapes individuelles distinctes organisées en séquence pour composer une transaction commerciale.

Def 10: Une condition dans laquelle le circuit reste jusqu'à l'application d'une impulsion appropriée.

Le New World College Dictionary de Webster définit «l'état» comme:

Un ensemble de circonstances ou d'attributs caractérisant une personne ou une chose à un moment donné; manière ou forme d'être: condition

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.

Robert Rocha
la source
Cela vaut quelques votes, car cela rend le potentiel d'ambiguïté plus clair que les autres réponses.
PJTraill
Concernant mon commentaire précédent: j'ai depuis ajouté ma propre réponse pour décrire l'ambiguïté de manière plus approfondie.
PJTraill
0

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.

Syed MEhran Hussain
la source
C'est vrai, mais cela ne semble pas ajouter beaucoup aux réponses existantes.
David Richerby
1
Peut-être que ce sera facile à comprendre pour quelqu'un :)
Syed MEhran Hussain
2
C'est faux. Ce que vous voulez dire, je pense: un état est une affectation de valeurs à ces variables.
reinierpost