IFT 232 Méthodes de Conception Orientées Objets Introduction
Plan : programmer concevoir Qu’est-ce qu’un langage de programmation ? Langage de programmation En tant que filtre pour concevoir le monde En tant que culture La programmation par objets (POO) Un survol du territoire Vers l’apprentissage de la culture Java
Etude des langages de programmation Etape 1: Identification et classification des éléments de base des langages de programmation Etape 2: Regroupement de ces éléments en familles de langages Approche horizontale: Regrouper les langages similaires en termes de syntaxe et sémantique la programmation par objets: Smalltalk, Java, C++, Eiffel… La programmation procédurale: C, Pascal, Modula… Etape 3: Langage de programmation ==> une culture Approche verticale La syntaxe et la sémantique ne font pas un langage de programmation Pour réellement comprendre un langage de programmation, il faut comprendre et intégrer sa culture
Éléments de base d’un langage de programmation Variable Type: typé | non typé, types primitifs, inférence de types, Valeur: pointeurs, calculée par une fonction, ramasse-miettes, Portée: lexicale, dynamique, locale, globale Structure de contrôle Conditionnelles, boucles, primitives Exceptions Invocation / activation des calculs Appel de procédures, appel de fonctions, démons Transmission de messages, passage de paramètres Choix de la “fonction” activée Pattern matching, polymorphisme, héritage
Éléments de base d’un langage de programmation Statut de certains éléments Fonctions, classes réflexivité Modifications en cours d’exécution de certains éléments Parallélisme Synchrone, asynchrone, fil d’exécution (thread)… Calculs Compilation, interprétation, machine virtuelle Pile d’exécution, tas (“heap”) Évaluation paresseuse, backtracking
Familles de langages de programmation Programmation par objets Programmation procédurale Programmation fonctionnelle Programmation par contraintes Programmation logique Programmation par règles etc.
Langage de programmation Langage Filtre sur le monde S’insère dans une culture
Langage de programmation NIVEAULisp Lexical Des parenthèses, des symboles, Et très peu de formes spéciales Syntaxique (define (somme l) (define res 0) (define liste l) (while (notNull? l) (Set! res (+ res (car l))) (set! liste (cdr liste))) res) Sémantique (define (somme l) (if (null l) 0 (somme (+ (car l) (somme (cdr l))))) Pragmatique (define (somme l) (accumulate (lambda (x l) (+ x (car l))) 0 l))
La programmation par objets Cinq éléments de base Instance Classe Héritage Méthode Transmission de messages
La culture “orientée objets” Modélisation Unified Modelling Language (UML) Le langage La syntaxe et la sémantique du langage, e.g. Java, Smalltalk… Les conventions Programmation Nomenclature Les composants JavaBeans reposent sur ces conventions La pratique de programmation Refactorisation Schémas de conception Méthodologie de développement de systèmes Programmation agile
To be a ``most important'' innovation, an innovation has to be an idea that is very widely used and is critically important where it applies. To be a "software" innovation, it has to be a technological innovation that impacts how computers are programmed (e.g., an approach to programming or an innovative way to use a computer). An innovation is a new idea. And in this paper, what's meant is a new idea in software technology.
Programmation par objets Objet, acteur, prototype Classe Instance Transmission de message Méthode Héritage simple \ multiple, interface, polymorphisme, surcharge (“overloading”)
LANGAGE de programmation NIVEAUApplication au langage naturel LexicalVocabulaire Erreurs d’orthographe SyntaxiqueGrammaire Règles SémantiqueSignification Erreurs de sens PragmatiqueInterprétation en tenant compte du contexte Esthétique
Une culture est aussi un filtre … une certaine façon de concevoir le monde Programmer --> cuisine Inuits Lexical ??? SyntaxiqueMode de cuisson Cuisson (trop) longue Mode de cuisson Huile d’olive Al dente Temps de cuisson SémantiqueSpaghetti alla bolognese Choix des pâtes Combinaison Crème, parmesan PragmatiquePizzaghettiAntipasto Primo pasto Secundo pasto