1980 :
Le 1er compilateur C++ (C++ normalisé par l'ANSI).
1976 :
Smalltalk implémente les concepts fondateurs de l'approche objet (encapsulation, agrégation, héritage / classes, associations entre classes, hiérarchies de classes, messages entre objets)
1967 :
Simula 1er langage avec le concept de type abstrait ((à l'aide de classes)
Autres langages orientés objets académiques : Eiffel, Objective C, Loops...
Objet / Notions fondamentales :
Un objet est une entité aux frontières précises qui possède une identité (un nom).
Un ensemble d'attributs caractérise l'état de l'objet.
Un ensemble d'opérations (méthodes) en définissent le comportement.
Un objet est une instance de classe (une occurrence d'un type abstrait).
Une classe est un type de données abstrait, caractérisé par des propriétés (attributs et méthodes) communes à des objets et permettant de créer des objets possédant ces propriétés.
Concepts importants de l'approche objet
Encapsulation
Consiste à masquer les détails d'implémentation d'un objet, en définissant une interface.
L'interface est la vue externe d'un objet, elle définit les services accessibles (offerts) aux utilisateurs de l'objet.
L'encapsulation facilite l'évolution d'une application car elle stabilise l'utilisation des objets : on peut modifier l'implémentation des attributs d'un objet sans modifier son interface.
L'encapsulation garantit l'intégrité des données, car elle permet d'interdire l'accès direct aux attributs des objets (utilisation d'accesseurs).
Héritage (et polymorphisme)
L'héritage est un mécanisme de transmission des propriétés d'une classe (ses attributs et méthodes) vers une sous-classe.
Une classe peut être spécialisée en d'autres classes, afin d'y ajouter des caractéristiques spécifiques ou d'en adapter certaines.
Plusieurs classes peuvent être généralisées en une classe qui les factorise, afin de regrouper les caractéristiques communes d'un ensemble de classes.
La spécialisation et la généralisation permettent de construire des hiérarchies de classes. L'héritage peut être simple ou multiple.
L'héritage évite la duplication et encourage la réutilisation.
Le polymorphisme représente la faculté d'une méthode à pouvoir s'appliquer à des objets de classes différentes.
Le polymorphisme augmente la généricité du code.
Agrégation
Il s'agit d'une relation entre deux classes, spécifiant que les objets d'une classe sont des composants de l'autre classe.
Une relation d'agrégation permet donc de définir des objets composés d'autres objets.
L'agrégation permet d'assembler des objets de base, afin de construire des objets plus complexes.