Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment.

Slides:



Advertisements
Présentations similaires
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
Advertisements

Developpement Process « Coding party !! » Tony Carnal Altran.
UML EPITECH 2009 UML1 - Introduction UML – Définition – Historique – UML en entreprise – Couverture Concepts – Objet – Classe –
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
Présentation python : Épisode 4 ● Les objets : héritage ● Introduction à l'héritage ● Un exemple illustrant l'héritage ● Détails sur l'appel de méthode.
1 Chapitre 2 La numération binaire. 2 Chapitre 2 : La numération binaire Introduction 1 - Le système binaire 2 - La conversion des nombres entiers 2.1.
Présentation python : Épisode 1 ● Introduction à Python ● Les types de base et leur manipulation ● Les structures de contrôle ● Les fonctions Étienne Loks.
1 Programmation en C++ IO en C++/SL. 2 Sortie à l’écran Exemple: #include int main () { std::cout
Ruby votre prochain langage de programmation préféré Guillaume Cottenceau LinuxDays Genève 22 Mai 2007.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Introduction à Ruby Julien De Bona Bawet, 15 avril 2006.
Présentation python : Épisode 4 ● Les objets : héritage ● Introduction à l'héritage ● Un exemple illustrant l'héritage ● Détails sur l'appel de méthode.
Windows NT/2000/XP Enjeux et contraintes techniques
Algorithmique & Langage C IUT GEII S1
Présentation python : Épisode 2
>>> Amphi Python
Cours Initiation aux Bases De Données
I- ANALYSE DU BESOIN / Plan
Comment corriger son code sans forcément appeler l’enseignant M2202
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
J’ai un bug, qu’est-ce que je peux faire ? Samuel Thibault 7 Mars 2017
Pas de variable globale
Les notions de classe et d'objet
Réforme du baccalauréat
Principes de programmation (suite)
Informatique et Sciences du Numérique
11ième Classe (Mardi, 18 novembre) CSI2572
Présentation python : Épisode 3
Les fonctions.
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
Cyber-Sphinx Séance 2.
Python for beginners Qu'est ce que Python
Cours Programmation Orientée Objet (POO) 2eme année Licence-LMD
5.
Les interfaces en PHP.
Réalisation d’une application web sous le thème: «Mon vétérinaire » par : Benzineb Asmaa et Meftahi Oualid Présentation à Université Saad Dahlab Blida.
Bonnes pratiques Orienté Objet et Java
Codage Indenter le code Limiter la portée des variables Traiter les erreurs en premier Utiliser le switch au delà de 3 tests en cascades Ne jamais utiliser.
Formations CEFORA Alain Wafflard
Je sais reproduire un modèle avec les pièces de la pyramide.
Août 2009.
Cyber-Sphinx Séance 2.
Programmation en C++ C++ de base
Structure D’une Base De Données Relationnelle
REVUE DE LITTERATURE. Introduction Première partie majeure dans la rédaction du mémoire, la réalisation d’une revue de littérature consiste à effectuer.
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Présentation python : Épisode 3
Type Concret – Type Abstrait
Présentation de l’outil
Les réparations Par.
Les classes et les objets
IDL interface définition langage. Plan Introduction Principaux éléments IDL Types de données IDL Déclaration de module Déclaration d'interface Déclaration.
20 Données semi-structurées et XML
Introdution  Le test appartient à l'activité de Vérification et de Validation d'une application, qui consiste à déterminer si cette dernière a été développée.
DESIGN PATTERN BUILDER KADRI LOUBNA CHARMATI SEWSEN.
Comment faire ressortir l‘essentiel
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
Schéma de conception Factory Method Exemple
Les erreurs de mesure Projet d’Appui au renforcement des capacités
Compléments sur Python (EduPython)
Plan I.Définitions II.Objectifs III.Intérêt IV.Quoi tester ? V.Processus VI.Exemples VII.Conclusion VIII.Références.
Le langage C# : Partie 1.
INTERFACE ET POLYMORPHISME
Lecture/Écriture de fichiers (I/O)
Variables et accès en Java
Jérôme CUTRONA PHP objet Jérôme CUTRONA 08:30:34 Programmation Web
Python Nicolas THIBAULT
TP N°1 : GUI en NetBeans Module R & C Université de Jijel
Transcription de la présentation:

Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment être sûr de bien se comporter ● Les exceptions ou comment faire face à toutes les situations ● Un peu d'objet ou comment avoir la classe ● Étienne Loks et David Mentré - 25 février 2008

Les styles de code : pourquoi ? ● def Range2List(TheRange): """ Turns octet range user input in python list""" TheRange=TheRange.split("-") return range(int(TheRange[0]),int(TheRange[1])+1) ● def octet_range_to_list(octet_range): """Turns an octet range into a python list. Keywords arguments: octet_range – an octet range separed by a dash """ octet_range = octet_range.split("-") return range(int(octet_range[0]), int(octet_range[1]) + 1)

Les styles de codes ● Documents de référence : PEP 8 et PEP 257 ● Éléments à prendre en compte (entre autres) : ● indentation : 4 espaces ● longueur de ligne : 79 caractères ● espacement ● langue anglaise ● conventions de nommage

Les tests unitaires ● But : s'assurer du fonctionnement correct d'un bout de logiciel ● Modules spécifiques (unittest) mais peut se faire simplement ● Utilisation de assert ● def test_octet_range_to_list(): assert octet_range_to_list(”1-5”) == [1, 2, 3, 4, 5] assert octet_range_to_list(”1-300”) == range(1, 255)

Les exceptions : utilisation ● Mécanisme de gestion des erreurs ● try: 1/0 except ZeroDivisionError: print ”Aïe, division par zéro !” ● Gros avantage : si on oublie de gérer l'erreur, elle n'est pas perdue ● Fonctionnement ● while True: try: x = int(raw_input("Please enter a number: ")) break except ValueError: print "Oups ! Nombre invalide. Essaye encore..."

Les exceptions : syntaxe ● Il peut y avoir plusieurs exceptions ● import sys try: f = open('myfile.txt') s = f.readline() i = int(s.strip()) except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) except ValueError: print "Could not convert data to an integer." except: print "Unexpected error:", sys.exc_info()[0] raise

Les exceptions : style ● try... except ● try: octet_range_to_list(”1”) except: print ”La conversion de la plage d'octet s'est mal déroulée” ● Toujours préciser l'exception attendue ● try: octet_range_to_list(”1”) except IndexError: print ”La saisie utilisateur n'est pas une plage d'octet conforme”

Bases de programmation objet ● Un objet est une entité que l'on construit par instanciation à partir d'une classe (une « catégorie » ou un « type » d'objet) ● chaine = str(”Ma chaine”) ● class Dice: ”””Un dé à plusieurs faces””” mon_nouveau_de = Dice() un_autre_de = Dice() ● La classe est une espèce de « moule » ● Chaque « instance » est un gâteau produit par le moule

Bases de programmation objet : les attributs ● Un objet dispose d'attributs ● attributs : informations dans l'objet, spécifiques à une instance ● class Dice: ”””Un dé à plusieurs faces””” def __init__(self): self.nombre_faces = 6 mon_nouveau_de = Dice() print mon_nouveau_de.nombre_faces ● class Dice: ”””Un dé à plusieurs faces””” def __init__(self, nombre_faces): self.nombre_faces = nombre_faces de_6_face = Dice(6) print de_6_face.nombre_faces piece = Dice(2) print piece.nombre_faces

Bases de programmation objet : les méthodes ● Un objet dispose de méthodes (fonctions spécifiques à l'objet) ● import random class Dice: ”””Un dé à plusieurs faces””” def __init__(self, nombre_faces): self.nombre_faces = nombre_faces def rouler(self): ”””Faire rouler le dé””” return random.randint(1, self.nombre_faces) >>> de_6_face = Dice(6) >>> print de_6_face.rouler() 4 >>> print de_6_face.rouler() 2 >>> print de_6_face.rouler() 3 >>> print de_6_face.rouler() 6

Pourquoi les objets ● Bases pour programmer correctement et pour pouvoir programmer en équipe ● Un objet est une entitée autonome et opaque ● interface avec l'extérieur au travers des attributs et méthodes ● permet de changer l'intérieur de l'objet sans le dire à tout le monde ⇒ modularité et extensibilité ● Importance des notions de programmation objet : tout (ou presque) est objet en python

Conclusion ● Présentez bien votre code ● ça facilite sa relecture par d'autres... ou vous même ;-) ● Faites des tests unitaires ● s'assurer qu'on a rien cassé en faisant des modifications ● Utilisez les exceptions ● mécanisme élégant de gestion des erreurs ● Apprendre les concepts objet ● ce qu'on a vu n'est qu'une première introduction