4TABLE DES MATI `
ERES
4 Programmation orient´ee objet, en JAVA 57
4.1 Statique versus dynamique . . . . . . . . . . . . . . . . . . . . . 57
4.2 Types somme, revisit´es . . . . . . . . . . . . . . . . . . . . . . . . 60
4.3 H´eritage................................ 61
4.4 Exceptions .............................. 63
4.5 Interfaces ............................... 65
4.6 H´eritage et typage . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.7 Classes abstraites . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.8 Paquetages .............................. 67
4.9 Collections .............................. 68
4.10 Les objets en (O)Caml . . . . . . . . . . . . . . . . . . . . . . . . 68
5 R´ecursivit´e, calculabilit´e et complexit´e 69
5.1 La r´ecursivit´e dans les langages de programmation . . . . . . . . 69
5.2 Piled’appel.............................. 70
5.3 R´ecurrence structurelle . . . . . . . . . . . . . . . . . . . . . . . . 74
5.4 Partage en m´emoire et r´ecursivit´e . . . . . . . . . . . . . . . . . . 76
5.5 Les fonctions r´ecursives primitives . . . . . . . . . . . . . . . . . 78
5.6 Fonctions r´ecursives partielles . . . . . . . . . . . . . . . . . . . . 80
5.7 Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.8 Quelques ´el´ements en complexit´e . . . . . . . . . . . . . . . . . . 82
6 S´emantique d´enotationnelle 89
6.1 S´emantique ´el´ementaire . . . . . . . . . . . . . . . . . . . . . . . 89
6.2 Probl`emes de points fixes . . . . . . . . . . . . . . . . . . . . . . 91
6.3 S´emantique de la boucle while ................... 95
6.4 S´emantique des fonctions r´ecursives . . . . . . . . . . . . . . . . . 96
6.5 Continuit´e et calculabilit´e . . . . . . . . . . . . . . . . . . . . . . 97
7 Logique, mod`eles et preuve 99
7.1 Syntaxe ................................ 99
7.2 S´emantique ..............................100
7.3 D´ecidabilit´e des formules logiques . . . . . . . . . . . . . . . . . . 102
7.4 Pour aller plus loin... . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.5 Un peu de th´eorie de la d´emonstration . . . . . . . . . . . . . . . 103
8 Validation et preuve de programmes 109
8.1 La validation, pour quoi faire ? . . . . . . . . . . . . . . . . . . . 109
8.2 Preuve `a la Hoare . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9 Typage, et programmation fonctionnelle 117
9.1 PCF (non typ´e) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.2 S´emantique op´erationnelle . . . . . . . . . . . . . . . . . . . . . . 118
9.3 Ordres d’´evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . 121
9.4 Appel par nom, appel par valeur et appel par n´ecessit´e . . . . . . 121
9.5 Combinateurs de point fixe . . . . . . . . . . . . . . . . . . . . . 123