1a_IFT232a_Introduction

publicité
IFT 232
Méthodes de Conception
Orientées Objets
Introduction
Plan
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
NIVEAU
Lisp
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.
http://www.dwheeler.com/innovation/innovation.html
Programmation par objets
Objet, acteur, prototype
Classe
Instance
Transmission de message
Méthode
Héritage simple \ multiple, interface,
polymorphisme, surcharge (“overloading”)
LANGAGE de programmation
NIVEAU
Application au langage
naturel
Lexical
Vocabulaire
Erreurs d’orthographe
Grammaire
Règles
Signification
Erreurs de sens
Interprétation en tenant compte
du contexte
Syntaxique
Sémantique
Pragmatique
Esthétique
Une culture est aussi un filtre
…une certaine façon de concevoir le monde
Programmer
--> cuisine
Lexical
Syntaxique
Inuits
???
Mode de cuisson
Mode de cuisson
Huile d’olive
Sémantique
Cuisson (trop) longue
Al dente
Spaghetti alla
bolognese
Choix des pâtes
Combinaison
Temps de cuisson
Crème, parmesan
Pragmatique
Pizzaghetti
Antipasto
Primo pasto
Secundo pasto
Téléchargement