ScholarGate
Assistant

Programmation impérative et orientée objet

La programmation impérative exprime le calcul comme des séquences de commandes modifiant l'état ; la programmation orientée objet organise cet état et ce comportement en objets encapsulés, communiquant par messages.

Trouver un sujet avec PaperMindBientôtFind papers & topics
Tools & resources
Télécharger les diapositives
Learn & explore
VidéoBientôt

Definition

La programmation impérative décrit le calcul comme une séquence d'instructions qui modifient l'état du programme par l'affectation et le flux de contrôle ; la programmation orientée objet est une discipline de structuration dans laquelle l'état et les opérations sont regroupés en objets qui interagissent en invoquant des méthodes.

Scope

Ce sujet couvre le modèle impératif de calcul, fondé sur les variables mutables, l'affectation et le flux de contrôle explicite, ainsi que la discipline orientée objet qui structure les programmes impératifs autour des objets, des classes, de l'héritage, de l'encapsulation et de la répartition dynamique (dynamic dispatch). Il inclut le sous-typage (subtyping) et la substituabilité comportementale, les patrons de conception (design patterns), et la relation entre les objets et les types de données abstraits.

Core questions

  • Comment l'encapsulation contrôle-t-elle la complexité de l'état mutable ?
  • Que signifie pour un type d'être un sous-type comportemental d'un autre ?
  • Quand l'héritage est-il utile et quand crée-t-il un couplage fragile ?
  • Comment les objets se rapportent-ils aux types de données abstraits et aux modules ?

Key theories

Sous-typage comportemental (Principe de substitution de Liskov)
Liskov et Wing formalisent les conditions dans lesquelles les objets d'un sous-type peuvent se substituer en toute sécurité aux objets d'un super-type, exigeant que les sous-types préservent le comportement observable et les invariants attendus du super-type.
Programmation structurée
Dahl, Dijkstra et Hoare ont établi le flux de contrôle discipliné et le raffinement pas à pas comme base des programmes impératifs compréhensibles, remplaçant le contrôle non restreint basé sur les instructions goto.
Patrons de conception
Gamma et ses collègues ont catalogué des solutions récurrentes aux problèmes de conception orientée objet, offrant un vocabulaire commun pour organiser les objets collaboratifs.

Clinical relevance

La conception orientée objet est à la base d'une grande partie des logiciels industriels, car l'encapsulation et le polymorphisme favorisent le développement modulaire et la réutilisation du code à grande échelle. Le principe de substitution de Liskov et les patrons de conception (design patterns) demeurent des guides pratiques pour la construction de hiérarchies de classes et d'interfaces maintenables.

History

La programmation impérative a vu le jour avec les premières machines à programme enregistré et des langages tels que Fortran et Algol. Simula 67 a introduit les classes et l'héritage ; Smalltalk a popularisé l'orientation objet pure et le passage de messages dans les années 1970 et 1980. C++ et plus tard Java ont introduit l'orientation objet dans l'industrie grand public, tandis que les travaux de Liskov sur l'abstraction des données et le livre « Design Patterns » de 1994 ont systématisé la méthodologie orientée objet.

Debates

Héritage versus composition
Les concepteurs débattent de la question de savoir si l'héritage d'implémentation ou la composition d'objets favorise mieux la réutilisation et la flexibilité, une grande partie de la pratique ultérieure privilégiant la composition et la conception basée sur les interfaces.

Key figures

  • Barbara Liskov
  • Ole-Johan Dahl
  • Kristen Nygaard
  • Alan Kay
  • Edsger Dijkstra

Related topics

Seminal works

  • goldberg1983
  • liskov1994
  • dahl1972
  • gamma1994

Frequently asked questions

Qu'est-ce que le principe de substitution de Liskov ?
Il stipule que les objets d'un sous-type doivent pouvoir être utilisés partout où des objets du super-type sont attendus sans compromettre la correction du programme, ce qui contraint la manière dont les sous-classes peuvent redéfinir le comportement.
La programmation orientée objet est-elle intrinsèquement impérative ?
La programmation orientée objet classique repose sur l'état mutable des objets et est donc une forme de programmation impérative, bien que les fonctionnalités orientées objet puissent également être combinées avec des styles fonctionnels et immuables.

Methods for this concept

Related concepts