Programmation orienté objet
<span class="mw-headline" id="Programmation_orient.C3.A9_objet« >Programmation orienté objet
Avec l’arrivée de la version finale de PHP 5.0.0 (et sa version révisée une première fois, la 5.0.1, un mois plus tard), les développeurs Web peuvent enfin regarder les différentes améliorations et modifications à la langue, sans crainte de les voir disparaître avant la prochaine version bêta. Il est donc une occasion pour nous de regarder ce qui PHP5 on a tant parlé pendant deux ans et de présenter les avantages et comment profiter de votre avenir pour les sites dynamiques. Donc, nous commençons cette série avec la programmation orientée objet (POO) en PHP5.
De l’aveu même de ses concepteurs d’origine, le modèle objet de PHP 3 (légèrement améliorée en PHP4) a été mise en œuvre plus rapide à répondre à la demande immédiate, un modèle conçu et adapté à la POO modernes. La gestion des objets PHP4 était suffisante mais pas idéale, et est l’un des défauts majeurs de cette version du langage.
la notion d’objet
POO est modéliserinformatiquement un ensemble d’éléments d’une partie du monde réel (quel domaine onappelle) dans un ensemble d’entités informatiques.Ces entités informatiques sont appelées objets. Cet ordinateur dedonnées comprenant les principales caractéristiques des éléments Dumonde réel (taille, couleur, …).
L’approche objet est une idée qui a désormais fait ses preuves.Simula a été la première langue programmationà mettre en œuvre le concept de classes en 1967! En 1976, Smalltalk implémente l’encapsulation lesconcepts, l’agrégation et l’héritage (les principaux concepts de l’approche objet). D’autre part, de nombreux langages orientés objets ont été mis au point des fins pointdans universitaire (Eiffel, Objective C, Loops, etc.).
La difficulté de cette modélisation est de créer une forme représentationabstraite d’objets, d’entités ayant une existence matérielle (chien, voiture, ampoule, …) ou virtuelle (sécurité sociale, temps, …).
Un objet est caractérisé par plusieurs concepts: les attributs: Ces données caractérisant l’information sont object.These Desvarieux état stockage des méthodes objetLes (parfois appelées fonctions membres): Les méthodes d’un objet caractérisé son comportement, c’est-à-dire la totalité des actions (appelées opérations) que l’objet est en mesure de réaliser. Ces opérations permettent au sujet de réagir à des forces extérieures (ou d’agir sur d’autres objets). En outre, les opérations sont étroitement liées auxattributs parce que leurs actions peuvent dépendre des valeurs d’attribut, ou l’modifierL’identité: L’objet a une identité, qui permet les objets distinguerdes d’autres, indépendamment de son état.Nous avons l’habitude de construire cette identité par un problème d’identification découlant naturellement (par exemple produitpourra être identifiées par un code, une voiture avec un numéro de série, …)
Les méthodes objet
la modélisation objet consiste à créer une représentation informatiquedes éléments du monde réel qui sont d’intérêt, sans mise en œuvre préoccuperde, ce qui signifie indépendant de l’agit language.Ils une programmation «par conséquent, pour déterminer les objets et d’isoler leurs données et de les utiliser fonctionsqui. Pour ce faire, des méthodes ont été développées. Entre 1970 et 1990, de nombreux analystes ont élaboré des approches de orientée objet, si en 1994, il existaitplus de 50 méthodes objet. Mais seulement 3 ontvéritablement méthodes ont émergé: La méthode OMT RumbaughLa méthode BOOCH’93 de la méthode OOSE de Jacobson BoochLa à partir de 1994, Rumbaugh et Booch (rejoints en 1995 par Jacobson) ont efforts unileurs de développer le langage de description UML (Unified Modeling Language), qui permet définirun langue standard en incorporant les avantages des méthodes précédentes (et celles d’autres analystes). Il permet notamment de ‘programmer’ entièrement une application avec un langage que les modèles de tous les composants qui du futur programme.
La programmation orientée objet (POO), ou la programmation orientée objet est un paradigme de la programmation informatique développé par Alan Kay dans les années 1970. Il s’agit de la définition et l’interaction des composants logiciels appelés objets; un objet représente un concept, une idée ou toute entité dans le monde physique, comme une voiture, une personne ou même une page d’un livre. Il a une structure interne et le comportement, et il sait comment communiquer avec ses pairs. Il est donc de représenter ces objets et leurs relations, la communication entre objets via leurs relations permet les fonctionnalités attendues pour résoudre le problème ou les problèmes.
Orthogonalement à la programmation orientée objet de faciliter le processus d’élaboration d’un programme, il ya des méthodologies de développement logiciel, l’objet le plus célèbre est USDP (Unified Software Development Process).
Il est possible de concevoir l’objet d’une application informatique sans l’aide d’outils dédiés. Le fait demeure que beaucoup de ces faciliter la conception, la maintenance et la productivité. On distingue plusieurs types:
Il existe actuellement deux catégories de langages orientés objet: les langues dans les classes et les prototypes, car ils sont la forme fonctionnelle (CLO), impératif (C, Java …) ou les deux (Python, OCaml …).
Principes
La programmation orientée objet a été présenté par Alan Kay avec Smalltalk. Cependant, ses principes ont été formalisés que dans les années 1980 et surtout 1990. Par exemple en tapant du second ordre, qui décrit le typage de la programmation orientée objet (Duck Typing appelé par la communauté Ruby et Python), a été formulée en 1995 par Cook.
L’objet (attributs et méthodes)
Plus précisément, un objet est une structure de données évaluées et caché des réponses à un ensemble de messages. Cette structure de données définit l’état alors que tous les messages qu’il a décrit son comportement:
Certains attributs et / ou des méthodes (ou plutôt leur représentation informatique) sont cachés: le principe d’encapsulation. Ainsi, le programme peut modifier la structure interne des objets ou leurs méthodes, sans avoir un impact sur les utilisateurs de l’objet.
Un exemple avec un objet représentant un nombre complexe: il peut être représenté sous différentes formes (cartésienne (réel, imaginaire), trigonométriques, exponentielle (Module, Angle)). Cette représentation restent dissimulés et sont internes à l’objet. L’objet se déplaçait messages à lire une représentation diffé
rente du nombre complexe.En utilisant les seuls messages qui comprend nos nombres complexes, les objets appelant sont garantis de ne pas être touché lors d’un changement de sa structure interne. Ce dernier n’est accessible que par les méthodes de messages.
Saisie et le polymorphisme
Dans la programmation orientée objet, chaque objet est typé. Le type définit la syntaxe (‘Comment appeler?’) Et la sémantique («Que fait-il?) Messages qui peut répondre à un objet. Il est donc presque exactement à l’interface de l’objet. Cependant, la plupart des langages orientés objet ne proposent que la définition syntaxique d’un type (C, Java, C #, …) et rares sont ceux qui offrent la possibilité de définir comme sa sémantique (conception Eiffel par contrat).
Un objet peut appartenir à plus d’un type: le polymorphisme qui permet l’utilisation d’objets de types différents où l’on devrait être un certain type. Une façon de réaliser le polymorphisme est le sous-type (aussi appelé héritage de type): un type est affiné par un autre père de type (sous-type) par des restrictions sur les valeurs possibles des attributs. Ainsi, les objets de ce sous-type sont compatibles avec le père type. De là découle le principe de substitution de Liskov.Toutefois, le sous-typage est limité et ne résout pas le problème des types récursifs (un message qui prend en paramètre un type d’objet de l’appelant). Pour résoudre ce problème, Cook en 1995, définit la sous-classification et l’identification du second ordre qui régit la programmation orientée objet: le type est un membre d’une famille de types polymorphes de point fixe (classe appelée). Les lignes sont un moyen de représenter explicitement les types de classes. (Le spectacle peut aussi être implicite, quant à Smalltalk, Ruby, etc.)
De même, deux mécanismes existent sous-typage: l’héritage unique (Smalltalk, Java, C #) et l’héritage multiple (C, Python, CLOS, Eiffel, WLangage).
Redéfinir
La programmation orientée objet permet à un objet pour affiner la mise en œuvre d’un message défini pour les objets d’un type de parent, c’est à dire de redéfinir la méthode associée avec le message: le principe de la redéfinition de messages (ou dominante en anglais).
Toutefois, dans une définition stricte de la frappe (saisie du premier ordre), l’opération à un message d’invitation doit être le même quel que soit le type exact de l’objet visé.Cela signifie que, dans le cas où l’objet est visé type exact d’un sous-type du type considéré dans l’appel, seule la méthode de type père est exécuté:
Reel est un type contenant une méthode qui * la multiplication de deux nombres réels, Permettez-sous-type Integer Reel, un entier i et ra réel, alors l’instruction i * r * va exécuter la méthode de la bobine. On pourrait appeler celle de nombre entier avec une redéfinition.
Classe et prototype
La structure interne des objets et les messages qu’ils sont définis à répondre par des modules logiciels. Ces modules de créer les mêmes objets par des opérations dédiées. Deux représentations de ces modules existent: la classe et le prototype.
La structure de classe est un ordinateur spécial dans le langage objet. Il décrit la structure interne des données et définit les méthodes qui s’appliquent aux objets de la même famille (même classe) ou de type. Il propose des moyens pour créer des objets dont la représentation sera celle donnée par le générateur de classe. Les objets sont ensuite appelées instances de la classe. Par conséquent, les attributs d’un objet sont appelées variables d’instance et d’instance de transaction messages ou des méthodes d’instance. La classe d’interface (l’ensemble des opérations visibles) constituent les types d’objets.Selon le langage de programmation, une classe doit être considérée comme une structure particulière de la langue, soit comme un objet en soi (objet non-terminal). Dans le premier cas, la classe est définie dans l’exécution, dans l’autre, la classe elle-même doit être créé et défini par une classe: ils sont des méta-classes. L’introspection des objets (ou «méta-programmation‘) est défini dans ces méta-classes.
La classe peut être décrite par des attributs et des messages. Ces derniers sont ensuite appelé, par opposition aux attributs et des messages d’un objet, variables de classe et méthodes de fonctionnement ou de classe. Parmi les langues classes se trouvent dans Smalltalk, C, C #, Java, etc.
Le prototype est un objet en lui-même et sert de définition du prototype de la structure interne et les messages. D’autres objets de même type sont créés par clonage. Dans le prototype, il n’ya pas de distinction entre les attributs et les messages: ils sont tous les emplacements. Un slot est une étiquette de l’objet, privé ou public, qui est jointe une définition (ce peut être une valeur ou une opération). Cet accessoire peut être changé à l’exécution. Chaque ajout d’un slot l’objet d’impact et tous ses clones.Chaque modification d’une fente est locale à l’objet en question et n’a pas d’impact de ses clones.
Le concept de trait pour changer une fente sur un ensemble de clones. Un AVC est un ensemble d’opérations dans la même catégorie (le clonage, la persistance, etc.) Transverse aux objets. Elle peut être représentée soit comme une structure particulière de la langue, comme un emplacement dédié ou un prototype. L’association d’un objet à un trait que l’objet et ses clones sont capables de répondre à toutes les opérations de la ligne. Un objet est toujours associé à au moins un trait, et les traits sont les parents d’objets (comme une relation d’héritage). Un trait est un mixin avec un parent. Parmi les langues dans prototype Javascript, auto, Io, Slater, Lisaac, etc.
Origines
Le langage Simula-67, la localisation d’enregistrement de classe Hoare, qui prévoit que les bâtiments seront ces langues-classes orientées objet: classe, polymorphisme, héritage, etc. Mais c’est vraiment par et avec Smalltalk Smalltalk 71 et 80 (Dan Ingalls), fondée en grande partie sur Simula 67 et Lisp, que les principes de programmation orientée objet, le résultat du travail d’Alan Kay, sont transportées:encapsulation objet, de messages, de dactylographie et de polymorphisme (via la sous-classification), d’autres principes tels que l’héritage, sont soit des dérivés ou d’implantation. En Smalltalk, tout est objet, même des classes. Il est également plus langage orienté objet qui est un environnement graphique interactif complet.
Depuis les années 1980, commence l’excitation de langages orientés objet: Objective C (début 1980), C (C avec des classes) en 1983, Eiffel en 1984, Common Lisp Object System dans les années 1980, etc. Les années 1990 ont vu l’apogée de l’extension de la programmation orientée objet dans les différents domaines du développement de logiciels.
Aujourd’hui, la programmation
orientée objet est considéré plutôt comme un paradigme, le paradigme objet, comme une technique de programmation simple. Ainsi, lorsque nous parlons de nos jours des objets de programmation, cela signifie avant tout la partie codante d’un modèle objet produit par OOA et COO.
Modélisation d’objets
la modélisation objet consiste à créer un modèle informatique du système de l’utilisateur (un système). Ce modèle peut réunir deux éléments des concepts du monde réel ou des idées liées au commerce ou dans un domaine qui fera partie du système. la modélisation objet consiste à identifier, qualifier dans un premier temps ces articles comme des types, ainsi indépendamment de la mise en œuvre.C’est ce qu’on appelle l’analyse orientée objet et OOA (Object-Oriented Analysis).
‘