Introduction à la programmation orientée objet Éric Pruvost
Les années 50 Avant l objet
Les années 50 50 Les quatre principaux langages 1956 1958 1958 1959 FORTRAN LISP ALGOL COBOL scientifique lambda-calcul scientifique gestion 2012 ericpruvost75@aol.com page 3/25
Fortran, le premier langage «évolué» 1956 Fortran : Formula Translator Concepteur : John Backus Langage créé pour le calcul scientifique Il est considéré comme le premier langage compilé Encore utilisé aujourd'hui en raison de très nombreuses bibliothèques scientifiques et de ses performances Dernière version : Fortran 2008 2012 ericpruvost75@aol.com page 4/25
Lisp 1958 LISt Processing Intelligence artificielle (années 70, 80) Faible impact dans le monde de l'entreprise Concepteur : John McCarthy Langage interprété Successeur : Scheme (70 ) 2012 ericpruvost75@aol.com page 5/25
Cobol 1959 COmmon Business Oriented Language Informatique de gestion Langage très utilisé de 1960 à 1980 Il est encore utilisé aujourd'hui Version actuelle : COBOL 2002 (objet, XML ) 2012 ericpruvost75@aol.com page 6/25
Algol 1958 Algorithmic oriented Language Introduit le premier la notion de bloc avec : BEGIN END Variables locales, récursivité Grand succès universitaire Faible impact industriel, abandonné aujourd'hui 2012 ericpruvost75@aol.com page 7/25
Algol 1958 Algol 58 Algol 60 Algol 68 Algol W Simula Pascal Modula 2 2012 ericpruvost75@aol.com page 8/25
Les années 60 Les origines de l objet
Simula I (pas encore objet) Simula I (Simple Universel Language) C'est une évolution d'algol 60 le premier langage structuré 1962 Ole-Johan Dahl Kristen Nygaard deux informaticiens norvégiens 2012 ericpruvost75@aol.com page 10/25
Simula I (pas encore objet) 1962 begin integer X; comment Un exemple de programme très simple X:=3; OutInt(X, 4); OutImage end syntaxe inspirée de celle d'algol 2012 ericpruvost75@aol.com page 11/25
Origine de la notion de classe et d objet 1965 Un article publié dans la revue Algol Bulletin en 1965 introduit la notion de classe et d'objet Sir Charles Antony Richard Hoare L'ancêtre du concept d'objet est appelé «record» L'ancêtre du concept de classe est appelé «class record» 2012 ericpruvost75@aol.com page 12/25
Origine de la notion de classe et d objet (2) 1965 2012 ericpruvost75@aol.com page 13/25
Origine de la notion de classe et d objet (2) 1965 Hoare indique dans cet article comment implémenter la notion d'objet dans un langage d programmation, il se base sur Algol mais précise que tout langage peut convenir 2012 ericpruvost75@aol.com page 14/25
Les origines : Simula 67 1967 Simula 67 reprend les travaux de Hoare class Vehicule(immatriculation); value immatriculation; text immatriculation; begin text immatriculation;! attribut... end of Vehicule; ref(vehicule) v; v :- new Vehicule("456EH75"); Propose déjà : classe, instance, méthode virtuelle, encapsulation, héritage 2012 ericpruvost75@aol.com page 15/25
70-90 De SmallTalk à Java
SmallTalk 1971 Sources d'inspiration : Simula 67, Lisp Il a été conçu par Alan Kay, Dan Ingals, Ted Kaehler, Adele Goldberg au Palo Alto Research Center de Xerox. A inspiré : Objective-C, Java et Ruby C'est le premier langage objet largement utilisé par la communauté scientifique, il a servi de base à de nombreux travaux dont les design patterns. Influence dans l'industrie : assez faible, même si IBM l'a largement utilisé 2012 ericpruvost75@aol.com page 17/25
SmallTalk 1972 Reprend la notion d'objet de Simula 67 dans un langage totalement orienté objet, basé sur la notion de message qui sont envoyés aux objets Transcript clear. hello := 'Bonjour'. Transcript show:hello. Objet message objet message 2012 ericpruvost75@aol.com page 19/25
Autres langages des années soixante-dix 70 1971 1972 1972 Pascal C Prolog 1974 SQL 2012 ericpruvost75@aol.com page 19/25
Les années quatre-vingt, le rôle majeur de C++ 80 1983 1986 1987 Ada C++ Turbo Pascal Eiffel HyperTalk Perl Objective-C 2012 ericpruvost75@aol.com page 20/25
Les années quatre-vingt dix, le rôle majeur de Java 90 1991 1993 1995 Python Visual Basic Ruby Delphi Java PHP JavaScript 2012 ericpruvost75@aol.com page 21/25
En résumé
Évolutions des langages objet 1967 Simula 67 1993 Ruby 1971 SmallTalk 1983 C++ Objective-C 1995 Java JavaScript 2000 C# 1986 Eiffel 1991 Python 2012 ericpruvost75@aol.com page 23/25
Variables, fonctions et procédures 12.8 prix une variable add(x, y) une fonction print(s) une procédure 2012 ericpruvost75@aol.com page 24/25
Objet, attribut et méthode prenom nom "Jean" "Dupont" nomcomplet() un objet dispose de variables appelées attributs qui lui sont propres un objet dispose de fonctions appelées méthodes qui doivent être invoquées à partir de l'objet 2012 ericpruvost75@aol.com page 25/25