Objet (informatique) - Object (computer science)

En informatique , un objet peut être une variable , une structure de données , une fonction ou une méthode , et à ce titre, est une valeur en mémoire référencée par un identifiant .

Dans le paradigme de la programmation orientée objet , l' objet peut être une combinaison de variables, de fonctions et de structures de données ; en particulier dans les variations du paradigme basées sur les classes, il fait référence à une instance particulière d'une classe .

Dans le modèle relationnel de gestion de base de données , un objet peut être une table ou une colonne , ou une association entre des données et une entité de base de données (comme relier l'âge d'une personne à une personne spécifique).

Langages à base d'objets

Une distinction importante dans les langages de programmation est la différence entre un langage orienté objet et un langage orienté objet. Un langage est généralement considéré comme basé sur des objets s'il inclut les capacités de base d'un objet : identité, propriétés et attributs. Un langage est considéré comme orienté objet s'il est basé sur des objets et a également la capacité de polymorphisme , d'héritage, d'encapsulation et, éventuellement, de composition. Le polymorphisme fait référence à la capacité de surcharger le nom d'une fonction avec plusieurs comportements en fonction des objets qui lui sont transmis. Le passage de message conventionnel ne discrimine que sur le premier objet et considère que c'est "l'envoi d'un message" à cet objet. Cependant, certains langages de programmation orientée objet tels que Flavours et le Common Lisp Object System (CLOS) permettent de discriminer plus que le premier paramètre de la fonction. L'héritage est la possibilité de sous-classer une classe d'objets, de créer une nouvelle classe qui est une sous-classe d'une classe existante et hérite de toutes les contraintes de données et comportements de ses parents, mais ajoute également de nouvelles et/ou modifie un ou plusieurs d'entre eux.

Programmation orientée objet

La programmation orientée objet est une approche de conception de systèmes logiciels modulaires réutilisables. L'approche orientée objet est une évolution des bonnes pratiques de conception qui remontent au tout début de la programmation informatique. L'orientation objet est simplement l'extension logique de techniques plus anciennes telles que la programmation structurée et les types de données abstraits . Un objet est un type de données abstrait auquel s'ajoutent le polymorphisme et l' héritage .

Plutôt que de structurer les programmes sous forme de code et de données, un système orienté objet intègre les deux en utilisant le concept d'« objet ». Un objet a un état (données) et un comportement (code). Les objets peuvent correspondre à des choses trouvées dans le monde réel. Ainsi, par exemple, un programme graphique aura des objets tels que cercle , carré , menu . Un système d'achat en ligne aura des objets tels que panier, client, produit . Le système d'achat prendra en charge des comportements tels que passer une commande , effectuer un paiement et offrir une remise . Les objets sont conçus comme des hiérarchies de classes. Ainsi , par exemple avec le système des achats il pourrait y avoir des classes de haut niveau tels que produits électroniques , produits de cuisine et livre . Il peut y avoir d'autres affinements par exemple sous les produits électroniques : lecteur CD, lecteur DVD , etc. Ces classes et sous-classes correspondent à des ensembles et sous-ensembles en logique mathématique.

Objets spécialisés

Un concept important pour les objets est le modèle de conception . Un modèle de conception fournit un modèle réutilisable pour résoudre un problème courant. Les descriptions d'objets suivantes sont des exemples de certains des modèles de conception les plus courants pour les objets.

  • Objet fonction : un objet avec une seule méthode (en C++, cette méthode serait l'opérateur de fonction, "operator()") qui agit un peu comme une fonction (comme un pointeur C/C++ vers une fonction).
  • Objet immuable : un objet mis en place avec un état fixe au moment de la création et qui ne change pas par la suite.
  • Objet de première classe : un objet qui peut être utilisé sans restriction.
  • Objet conteneur : un objet pouvant contenir d'autres objets.
  • Objet usine : un objet dont le but est de créer d'autres objets.
  • Métaobjet : un objet à partir duquel d'autres objets peuvent être créés (comparer avec une classe , qui n'est pas forcément un objet).
  • Objet prototype : un méta- objet spécialisé à partir duquel d'autres objets peuvent être créés par copie
  • Objet Dieu : un objet qui en sait ou en fait trop (c'est un exemple d' anti-modèle ).
  • Objet singleton : un objet qui est la seule instance de sa classe pendant la durée de vie du programme.
  • Objet filtre : un objet qui reçoit un flux de données en entrée et le transforme en sortie de l'objet. Souvent, les flux d'entrée et de sortie sont des flux de caractères, mais ceux-ci peuvent également être des flux d'objets arbitraires. Ceux-ci sont généralement utilisés dans les wrappers car ils masquent l'implémentation existante avec l'abstraction requise du côté du développeur.

Objets distribués

L'approche orientée objet n'est pas seulement un modèle de programmation. Il peut également être utilisé comme langage de définition d'interface pour les systèmes distribués. Les objets d'un modèle informatique distribué ont tendance à être plus granuleux, plus durables et plus orientés services que les objets de programmation.

Une méthode standard pour emballer des objets distribués est via un langage de définition d'interface (IDL). Un IDL protège le client de tous les détails de l'objet serveur distribué. Des détails tels que l'ordinateur sur lequel l'objet réside, le langage de programmation qu'il utilise, le système d'exploitation et d'autres problèmes spécifiques à la plate-forme. L'IDL fait également généralement partie d'un environnement distribué qui fournit des services tels que les transactions et la persistance à tous les objets de manière uniforme. Deux des plus populaires des normes pour les objets distribués sont le Object Management Group est CORBA standard et Microsoft 's DCOM.

En plus des objets distribués, un certain nombre d'autres extensions du concept de base d'un objet ont été proposées pour permettre l'informatique distribuée :

  • Les objets de protocole sont des composants d'une pile de protocoles qui enferment la communication réseau dans une interface orientée objet.
  • Les objets répliqués sont des groupes d'objets distribués (appelés répliques ) qui exécutent un protocole multipartite distribué pour obtenir une cohérence élevée entre leurs états internes et qui répondent aux demandes de manière coordonnée. Les exemples incluent lesobjets CORBA tolérants aux pannes.
  • Les objets distribués en direct (ou simplement les objets en direct ) généralisent leconcept d' objet répliqué à des groupes de répliques qui pourraient utiliser en interne n'importe quel protocole distribué, ce qui n'entraîne peut-être qu'une faible cohérence entre leurs états locaux.

Certaines de ces extensions, telles que les objets distribués et les objets de protocole , sont des termes spécifiques à un domaine pour des types spéciaux d'objets "ordinaires" utilisés dans un certain contexte (tels que l'invocation de méthode à distance ou la composition de protocole ). D'autres, tels que les objets répliqués et les objets distribués en direct , sont plus non standard, en ce sens qu'ils abandonnent le cas habituel selon lequel un objet réside dans un seul emplacement à la fois, et appliquent le concept à des groupes d'entités (répliques) qui pourraient s'étendre sur plusieurs emplacements, peut n'avoir qu'un état faiblement cohérent et dont l'appartenance peut changer de manière dynamique.

Le Web sémantique

Le Web sémantique est essentiellement un framework d'objets distribués. Deux technologies clés du Web sémantique sont le langage d'ontologie Web (OWL) et le cadre de description de ressources (RDF). RDF offre la possibilité de définir des objets de base—noms, propriétés, attributs, relations—qui sont accessibles via Internet. OWL ajoute un modèle d'objet plus riche, basé sur la théorie des ensembles, qui fournit des capacités de modélisation supplémentaires telles que l' héritage multiple .

Les objets OWL ne sont pas comme les objets distribués standard à gros grain auxquels on accède via un langage de définition d'interface. Une telle approche ne serait pas appropriée pour Internet car Internet est en constante évolution et la normalisation sur un ensemble d'interfaces est difficile à réaliser. Les objets OWL ont tendance à être similaires aux types d'objets utilisés pour définir les modèles de domaine d'application dans les langages de programmation tels que Java et C++ .

Cependant, il existe des distinctions importantes entre les objets OWL et les objets de programmation orientés objet traditionnels. Les objets traditionnels sont compilés en hiérarchies statiques généralement avec un seul héritage, mais les objets OWL sont dynamiques. Un objet OWL peut changer de structure au moment de l'exécution et peut devenir une instance de classes nouvelles ou différentes.

Une autre différence critique est la façon dont le modèle traite les informations qui ne sont actuellement pas dans le système. Les objets de programmation et la plupart des systèmes de bases de données utilisent « l' hypothèse du monde fermé ». Si un fait n'est pas connu du système, ce fait est supposé être faux. Les objets du Web sémantique utilisent l' hypothèse du monde ouvert , une déclaration n'est considérée comme fausse que s'il existe des informations pertinentes réelles indiquant qu'elle est fausse, sinon elle est supposée inconnue, ni vraie ni fausse.

Les objets OWL ressemblent en fait à des objets dans les langages de trame d' intelligence artificielle tels que KL-ONE et Loom.

Le tableau suivant compare les objets traditionnels des langages de programmation orientés objet tels que Java ou C++ avec les objets du Web sémantique :

Objets POO Objets du Web sémantique
Les classes sont considérées comme des types pour les instances. Les classes sont considérées comme des ensembles d'individus.
Les instances ne peuvent pas changer leur type au moment de l'exécution. L'appartenance à une classe peut changer au moment de l'exécution.
La liste des classes est entièrement connue au moment de la compilation et ne peut pas changer après cela. Les classes peuvent être créées et modifiées au moment de l'exécution.
Les compilateurs sont utilisés au moment de la construction. Les erreurs de compilation indiquent des problèmes. Les raisonneurs peuvent être utilisés pour la classification et la vérification de cohérence au moment de l'exécution ou de la construction.
Les classes codent une grande partie de leur signification et de leur comportement à l'aide de fonctions et de méthodes impératives. Les classes rendent leur signification explicite en termes d'instructions OWL. Aucun code impératif ne peut être joint.
Les instances sont anonymes dans la mesure où elles ne peuvent pas être facilement traitées de l'extérieur d'un programme en cours d'exécution. Toutes les ressources RDF et OWL nommées ont un URI unique sous lequel elles peuvent être référencées.
Monde fermé : S'il n'y a pas assez d'informations pour prouver qu'une déclaration est vraie, alors elle est supposée être fausse. Monde ouvert : S'il n'y a pas assez d'informations pour prouver qu'une affirmation est vraie, alors elle peut être vraie ou fausse.

Voir également

Les références

Liens externes