Langage Python. Cours 3/5 : Paradigmes de programmation. Hubert Godfroy. 12 novembre 2015



Documents pareils
Éléments de programmation et introduction à Java

I00 Éléments d architecture

PHP 5.4 Développez un site web dynamique et interactif

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Programmation Web. Madalina Croitoru IUT Montpellier

Initiation à la programmation en Python

PG208, Projet n 3 : Serveur HTTP évolué

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

OMGL6 Dossier de Spécifications

Cours 1 : La compilation

Programmer en JAVA. par Tama

Environnements de développement (intégrés)

1 Recherche en table par balayage

Serveur d Applications Web : WebObjects

L informatique en BCPST

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Python Les fondamentaux du langage

INTRODUCTION À PYRAMID Gaël Bearstech. Crédits: Blaise Laflamme

WDpStats Procédure d installation

Évaluation et implémentation des langages

Analyse de sécurité de logiciels système par typage statique

Projet de programmation (IK3) : TP n 1 Correction

Plan du cours Cours théoriques. 29 septembre 2014

Impact des robots d indexation sur le cache de second niveau de SPIP IMBERTI Christophe - SG/SPSSI/CP2I/DO Ouest 06/06/2012 mis à jour le 05/07/2012

Présentation du langage et premières fonctions

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

M Études et développement informatique

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

TP 1. Prise en main du langage Python

INF8007 Langages de script

Attaques applicatives

Reporting Services - Administration

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing

Découverte de Python

DRUPAL Réalisez des développements professionnels avec PHP (2ième édition)

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Cours d algorithmique pour la classe de 2nde

Windows 7 Administration de postes de travail dans un domaine Active Directory

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Cours 7 : Utilisation de modules sous python

Introduction à MATLAB R

Une introduction à Java

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Organigramme / Algorigramme Dossier élève 1 SI

Document Object Model (DOM)

AWS avancé. Surveiller votre utilisation d EC2

Les structures. Chapitre 3

Langage Java. Classe de première SI

M Études et développement informatique

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

UE Programmation Impérative Licence 2ème Année

Procédure de sauvegarde - Cobian Backup

Programmation MacOSX / ios

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

Initiation à l algorithmique

Programmation. fonctionnelle, impérative, logique et orientée objet

Les bases du langage Python

Gestion mémoire et Représentation intermédiaire

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

Drupal vs La concurrence

Programmation Objet Java Correction

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Java 1.5 : principales nouveautés

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Le partage de l information, source d intelligence collective

Tests de montée en charge & Haute disponibilité

MS SQL Express 2005 Sauvegarde des données

Un serveur web léger et ouvert

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

BONNES RAISONS DE CHOISIR KIAMO LA PREMIÈRE SOLUTION INTÉGRÉE DE GESTION DES INTERACTIONS CLIENTS POUR LES ENTREPRISES FICHE PRODUIT / KIAMO

Création d objet imbriqué sous PowerShell.

Panorama des solutions analytiques existantes

La programmation orientée objet et le langage C++

Java Licence Professionnelle CISII,

STAGE IREM 0- Premiers pas en Python

TP JAVASCRIPT OMI4 TP5 SRC

CMS Open Source : état de l'art et méthodologie de choix

Objets et Programmation. origine des langages orientés-objet

Initiation à JAVA et à la programmation objet.

OMGL 6 Cahier des charges

Modifier les propriétés d'un widget

Calcul Formel et Numérique, Partie I

Préconisations Portail clients SIGMA

Classes et Objets en Ocaml.

Capacité de mémoire Tablettes

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

Exonet : sauvegarde automatisée d une base de données

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Gestion d identités PSL Exploitation IdP Authentic

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

COMPARAISONDESLANGAGESC, C++, JAVA ET

Architectures Web Services RESTful

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Transcription:

Langage Python Cours 3/5 : Paradigmes de programmation Hubert Godfroy 12 novembre 2015 1/21

La dernière fois... Utilisation comme langage de script (séance 1) Structures de données pour différents usages (séance 2) 2/21

La dernière fois... Utilisation comme langage de script (séance 1) Structures de données pour différents usages (séance 2) Quels sont les autres usages de Python? 2/21

Quesako? Un paradigme de programmation est un style fondamental de programmation informatique qui traite de la manière dont les solutions aux problèmes doivent être formulées dans un langage de programmation. Wikipedia 3/21

Plan Programmation impérative structurée Programmation orientée objets Programmation fonctionnelle 4/21

Plan Programmation impérative structurée Programmation orientée objets Programmation fonctionnelle 5/21

Paradigme déjà vu Celui des premiers langages de programmation (C, Basic, Pascal,...) Le code est structuré en fonctions. Les boucles de contrôles sont if, for, while. Les goto sont prohibés. Go To Statement Considered Harmful 6/21

Schéma de base Un programme écrit dans ce paradigme suit le modèle suivant. def fun1(...):... def fun2(...):... def fun3(...):... def main(...):... main(...) 7/21

Plan Programmation impérative structurée Programmation orientée objets Programmation fonctionnelle 8/21

POO en général Moyen pour stratifier les définitions de fonctions Chaque objet dispose de ses propres fonctions. Permet de cacher les détails d implémentation On se concentre sur les relations entre les objets. 9/21

Une classe en général Classe champ 1 champ 2 champ 3 méthode 1 méthode 2 méthode 3 méthode 4 10/21

POO en Python La définition d une classe suit le modèle class Name: field1 = v1 field2 = v2 field3 = v3 def methods1(self):... def methods2(self,...):... Les champs et les méthodes sont appelées avec "." : si aname est un objet de la classe Name, on peut faire : var1 = aname.field1 aname.field2 = var2 aname.methods1() 11/21

POO en Python La définition d une classe suit le modèle class Name: field1 = v1 field2 = v2 field3 = v3 def methods1(self):... def methods2(self,...):... Les champs et les méthodes sont appelées avec "." : si aname est un objet de la classe Name, on peut faire : var1 = aname.field1 aname.field2 = var2 aname.methods1() aname.field4 = var4 11/21

POO en Python La définition d une classe suit le modèle class Name: field1 = v1 field2 = v2 field3 = v3 def methods1(self):... def methods2(self,...):... Les champs et les méthodes sont appelées avec "." : si aname est un objet de la classe Name, on peut faire : var1 = aname.field1 aname.field2 = var2 aname.methods1() aname.field4 = var4 On l objet fait référence à lui même avec le mot clef self 11/21

Construction d objets Construction d un objet de la classe Name : aname = Name() 12/21

Construction d objets Construction d un objet de la classe Name : aname = Name() La fonction Name() est un constructeur. Il est généré automatiquement par défaut. 12/21

Construction d objets Construction d un objet de la classe Name : aname = Name() La fonction Name() est un constructeur. Il est généré automatiquement par défaut. On peut changer sa valeur par défaut : class Name: init (self, a, b):... aname = Name(a, b) 12/21

Héritage Minimiser la quantité de code Programmation générique Classification/stratification des objets 13/21

Héritage en Python class Base:... class Derive(Base):... La classe Derive hérite de toutes les méthodes et champs de la classe Base. La classe Derive peut redéfinir une méthode de la classe Base : c est la surcharge 14/21

Surcharge Exemple class Base: def init (self): print("init Base") def affiche(self): print("affiche dans Base") def initial(self): print("initial dans Base") 15/21

Surcharge Exemple class Base: def init (self): print("init Base") def affiche(self): print("affiche dans Base") def initial(self): print("initial dans Base") class Derive(Base): def init (self): print("init Derive") def affiche(self): print("affiche dans Derive") def terminal(self): print("terminal dans Derive") 15/21

Surcharge Comment faire appel à la méthode affiche() à partir de la classe Derive? 16/21

Surcharge Comment faire appel à la méthode affiche() à partir de la classe Derive? On utilise le nom de la classe parente : class Derive(Base): def affiche(self): print("affiche dans Derive et je sais utiliser la methode afficher() de la classe parent :") Base.affiche(self) 16/21

Méthodes statiques On utilise @staticmethod. class Name: @staticmethod def static_method(x):... Name.static_method(x) 17/21

Plan Programmation impérative structurée Programmation orientée objets Programmation fonctionnelle 18/21

Paradigme fonctionnel On voit les fonctions comme des objets. Fonctions anonymes au même titre que les valeurs anonymes (2, "Hello World!") Peut être passé en paramètre d autres fonctions (fonctions d ordre supérieur) 19/21

Fonctions anonymes Deux façon de définir la fonction f : x 2x def f 2 (x): return x*2 f 1 = lambda x: x * 2 20/21

Compréhension Génération intelligente et concise de listes range(n) génère une liste d entiers de 0 à n 1. 21/21

Compréhension Génération intelligente et concise de listes range(n) génère une liste d entiers de 0 à n 1. En maths : {i i 0, n 1 } En python : [i for i in range(10)] Autres exemples Mathématiques {i 2 i 1, 10 } {i i 1, 10 i 0[2]} Python 21/21

Compréhension Génération intelligente et concise de listes range(n) génère une liste d entiers de 0 à n 1. En maths : {i i 0, n 1 } En python : [i for i in range(10)] Autres exemples Mathématiques Python {i 2 i 1, 10 } [i*2 for i in range(10)] {i i 1, 10 i 0[2]} 21/21

Compréhension Génération intelligente et concise de listes range(n) génère une liste d entiers de 0 à n 1. En maths : {i i 0, n 1 } En python : [i for i in range(10)] Autres exemples Mathématiques Python {i 2 i 1, 10 } [i*2 for i in range(10)] {i i 1, 10 i 0[2]} [i for i in range(10) if i % 2 == 0] 21/21