SlideShare une entreprise Scribd logo
UML + Python




                 Le minimum


                        Python

               UML


                              Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
CLASSE
UML + Python




                                                        Attribut:
                                                        chaque CompteCourant a le sien




                   Opération:
                   chaque CompteCourant sait le faire




                                                         Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
CLASSE
UML + Python




                    class CompteCourant(object):
                        def __init__(self):
                            # A la création, le solde est à zéro
                            self.solde = 0 # Solde en cents!

                        def crediter(self, montant):
                            self.solde += montant

                        def debiter(self, montant):
                            if self.solde < montant:
                                raise OperationRejetee();

                            self.solde -= montant


                                           Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
INTERFACE
UML + Python




                 Tous les Comptes possèdent les 
                       mêmes opérations
                                     Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
INTERFACE
UML + Python



                               Python est dynamique

                 Pas besoin de coder les interfaces

                        class CompteSurLivret(object):
                            def __init__(self, plafond):
                                # ...

                            # ...

                        class CompteCourant(object):
                            def __init__(self):
                                # ...

                            # ...

                                              Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
INTERFACE – option 1
UML + Python


                                  class Compte(object):

                Créer un stub         def crediter(self, montant):
                                          pass

               pour l'interface       def debiter(self, montant):
                                          pass


                                  class CompteSurLivret(Compte):
                                      def __init__(self, plafond):
                                          # ...


                 Faire hériter        # ...


                  les classes     class CompteCourant(Compte):
                                      def __init__(self):
                                          # ...

                                      # ...

                                              Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
INTERFACE – option 2
UML + Python


                                 class Compte(object):

                Variante avec        def crediter(self, montant):
                                         raise NonMisEnOeuvre()

                 exceptions          def debiter(self, montant):
                                         raise NonMisEnOeuvre()


                                 class CompteSurLivret(Compte):
                                     def __init__(self, plafond):
                                         # ...


                Faire hériter        # ...


                 les classes     class CompteCourant(Compte):
                                     def __init__(self):
                                         # ...

                                     # ...

                                             Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
HÉRITAGE
                     Quand la classe de base fait 
UML + Python




                   quelque­chose d'utile, on parle 
                                       d'héritage
                      class Compte(object):
                          def afficheSolde(self):
                              print "%+10.2f" % (self.solde / 100.0)

                          # ...

                      class CompteSurLivret(Compte):
                          # ...


                      if __name__ == '__main__':
                          compte = CompteSurLivret(10000)

                          compte.crediter(10000)
                          compte.afficheSolde()

                                           Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
AGRÉGATION
UML + Python




                     Chaque Client 
                possède un Compte

                class Client(object):
                    def __init__(self, compte):
                        self.compte = compte

                if __name__ == '__main__':
                    # John possède un compte courant
                    john = Client( CompteCourant() )
                    # Paul possède un compte sur livret
                    paul = Client( CompteSurLivret(5000000) )



                                                    Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
AGRÉGATION
UML + Python

                  class Client(object):
                      def __init__(self):
                          self.compte = []

                      def ajouteCompte(self, compte):
                          self.compte.append(compte)

                  if __name__ == '__main__':
                      ringo = Client()
                      ringo.ajouteCompte( CompteCourant() )
                      ringo.ajouteCompte( CompteCourant(5000000) )




                                  Chaque Client 
                                  possède des Comptes

                                              Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
DIAGRAMME
UML + Python



               DE SÉQUENCE

               if __name__ == '__main__':
                   unCompte = CompteCourant()
                   unCompte.crediter(10000)
                   unCompte.afficheSolde()




                                                Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
A VOUS DE JOUER!
UML + Python




                      Q&
                          R

                            Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0

Contenu connexe

Tendances

Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
Abdoulaye Dieng
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
IbtissameAbbad1
 
Cours : les listes chainées Prof. KHALIFA MANSOURI
Cours : les listes chainées  Prof. KHALIFA MANSOURI Cours : les listes chainées  Prof. KHALIFA MANSOURI
Cours : les listes chainées Prof. KHALIFA MANSOURI
Mansouri Khalifa
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
Aziz Darouichi
 
Formation python
Formation pythonFormation python
Formation python
j_lipaz
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
Houda TOUKABRI
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
vangogue
 
Examen principal - PHP
Examen principal - PHPExamen principal - PHP
Examen principal - PHP
Ines Ouaz
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
ECAM Brussels Engineering School
 
Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage C
Mohamed Lahby
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-Reduce
Lilia Sfaxi
 
Cours python
Cours pythonCours python
Cours pythonsalmazen
 
Administration réseaux sous linux cours 1
Administration réseaux sous linux   cours 1Administration réseaux sous linux   cours 1
Administration réseaux sous linux cours 1
Stephen Salama
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
ABDESSELAM ARROU
 
Architecture des ordinateurs : microprocesseur
Architecture des ordinateurs : microprocesseurArchitecture des ordinateurs : microprocesseur
Architecture des ordinateurs : microprocesseur
Abdoulaye Dieng
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3
Abel LIFAEFI MBULA
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
Maya Medjdoub
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
Amir Souissi
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMajid CHADAD
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
ECAM Brussels Engineering School
 

Tendances (20)

Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Cours : les listes chainées Prof. KHALIFA MANSOURI
Cours : les listes chainées  Prof. KHALIFA MANSOURI Cours : les listes chainées  Prof. KHALIFA MANSOURI
Cours : les listes chainées Prof. KHALIFA MANSOURI
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Formation python
Formation pythonFormation python
Formation python
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Examen principal - PHP
Examen principal - PHPExamen principal - PHP
Examen principal - PHP
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage C
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-Reduce
 
Cours python
Cours pythonCours python
Cours python
 
Administration réseaux sous linux cours 1
Administration réseaux sous linux   cours 1Administration réseaux sous linux   cours 1
Administration réseaux sous linux cours 1
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Architecture des ordinateurs : microprocesseur
Architecture des ordinateurs : microprocesseurArchitecture des ordinateurs : microprocesseur
Architecture des ordinateurs : microprocesseur
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigés
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
 

En vedette

All about you knee
All about you kneeAll about you knee
All about you knee
Consultonmic
 
Cypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-pythonCypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-pythonCERTyou Formation
 
OpenStack Havana, tour d'horizon
OpenStack Havana, tour d'horizonOpenStack Havana, tour d'horizon
OpenStack Havana, tour d'horizon
Yannick Foeillet
 
La sabiduría
La sabiduríaLa sabiduría
La sabiduría
anny zapata
 
Solucion y Psicologia del Bienestar
Solucion y Psicologia del BienestarSolucion y Psicologia del Bienestar
Solucion y Psicologia del Bienestar
Dr.Jose A Santos. +4500 contactos
 
Python debugger
Python debuggerPython debugger
Python debugger
Damien Garaud
 
SeSQL : un moteur de recherche en Python et PostgreSQL
SeSQL : un moteur de recherche en Python et PostgreSQLSeSQL : un moteur de recherche en Python et PostgreSQL
SeSQL : un moteur de recherche en Python et PostgreSQLParis, France
 
Les langages de programmation sont trop compliqués
Les langages de programmation sont trop compliquésLes langages de programmation sont trop compliqués
Les langages de programmation sont trop compliquésmercury_wood
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
yboussard
 
Modelisation agile 03122011
Modelisation agile  03122011Modelisation agile  03122011
Modelisation agile 03122011
agnes_crepet
 
Chp3 - Diagramme de Classes
Chp3 - Diagramme de ClassesChp3 - Diagramme de Classes
Chp3 - Diagramme de Classes
Lilia Sfaxi
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
Hassan WAHSISS
 
Widgets
WidgetsWidgets
Widgets
maryannerdos
 
malik banner
malik bannermalik banner
malik banner
guesta31fc4a5
 
Vijay Mewada June 11
Vijay Mewada June 11Vijay Mewada June 11
Vijay Mewada June 11
vsa177
 
20101109 college univ-leiden_oj
20101109 college univ-leiden_oj20101109 college univ-leiden_oj
20101109 college univ-leiden_oj
Olaf Janssen
 
Gripex Kichajacy Portal 2006
Gripex Kichajacy Portal 2006Gripex Kichajacy Portal 2006
Gripex Kichajacy Portal 2006
Next
 
Facebook2E-mail
Facebook2E-mailFacebook2E-mail
Facebook2E-mail
Konrad Berenyi
 
Going mobile in accounting education upload
Going mobile in accounting education uploadGoing mobile in accounting education upload
Going mobile in accounting education upload
Yaneli Cruz
 
My Future
My FutureMy Future
My Future
guesta58d4ac
 

En vedette (20)

All about you knee
All about you kneeAll about you knee
All about you knee
 
Cypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-pythonCypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-python
 
OpenStack Havana, tour d'horizon
OpenStack Havana, tour d'horizonOpenStack Havana, tour d'horizon
OpenStack Havana, tour d'horizon
 
La sabiduría
La sabiduríaLa sabiduría
La sabiduría
 
Solucion y Psicologia del Bienestar
Solucion y Psicologia del BienestarSolucion y Psicologia del Bienestar
Solucion y Psicologia del Bienestar
 
Python debugger
Python debuggerPython debugger
Python debugger
 
SeSQL : un moteur de recherche en Python et PostgreSQL
SeSQL : un moteur de recherche en Python et PostgreSQLSeSQL : un moteur de recherche en Python et PostgreSQL
SeSQL : un moteur de recherche en Python et PostgreSQL
 
Les langages de programmation sont trop compliqués
Les langages de programmation sont trop compliquésLes langages de programmation sont trop compliqués
Les langages de programmation sont trop compliqués
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
 
Modelisation agile 03122011
Modelisation agile  03122011Modelisation agile  03122011
Modelisation agile 03122011
 
Chp3 - Diagramme de Classes
Chp3 - Diagramme de ClassesChp3 - Diagramme de Classes
Chp3 - Diagramme de Classes
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
 
Widgets
WidgetsWidgets
Widgets
 
malik banner
malik bannermalik banner
malik banner
 
Vijay Mewada June 11
Vijay Mewada June 11Vijay Mewada June 11
Vijay Mewada June 11
 
20101109 college univ-leiden_oj
20101109 college univ-leiden_oj20101109 college univ-leiden_oj
20101109 college univ-leiden_oj
 
Gripex Kichajacy Portal 2006
Gripex Kichajacy Portal 2006Gripex Kichajacy Portal 2006
Gripex Kichajacy Portal 2006
 
Facebook2E-mail
Facebook2E-mailFacebook2E-mail
Facebook2E-mail
 
Going mobile in accounting education upload
Going mobile in accounting education uploadGoing mobile in accounting education upload
Going mobile in accounting education upload
 
My Future
My FutureMy Future
My Future
 

Plus de Sylvain Leroux

ModèLes DexéCution
ModèLes DexéCutionModèLes DexéCution
ModèLes DexéCution
Sylvain Leroux
 
Le Jdk En 5 Minutes
Le Jdk En 5 MinutesLe Jdk En 5 Minutes
Le Jdk En 5 Minutes
Sylvain Leroux
 
Java Platform
Java PlatformJava Platform
Java Platform
Sylvain Leroux
 
Premier contact avec Subversion
Premier contact avec SubversionPremier contact avec Subversion
Premier contact avec Subversion
Sylvain Leroux
 
Notion de fonction en Python
Notion de fonction en PythonNotion de fonction en Python
Notion de fonction en Python
Sylvain Leroux
 
Poo
PooPoo
Variables variables
Variables variablesVariables variables
Variables variables
Sylvain Leroux
 
Merise vs UML
Merise vs UMLMerise vs UML
Merise vs UML
Sylvain Leroux
 

Plus de Sylvain Leroux (8)

ModèLes DexéCution
ModèLes DexéCutionModèLes DexéCution
ModèLes DexéCution
 
Le Jdk En 5 Minutes
Le Jdk En 5 MinutesLe Jdk En 5 Minutes
Le Jdk En 5 Minutes
 
Java Platform
Java PlatformJava Platform
Java Platform
 
Premier contact avec Subversion
Premier contact avec SubversionPremier contact avec Subversion
Premier contact avec Subversion
 
Notion de fonction en Python
Notion de fonction en PythonNotion de fonction en Python
Notion de fonction en Python
 
Poo
PooPoo
Poo
 
Variables variables
Variables variablesVariables variables
Variables variables
 
Merise vs UML
Merise vs UMLMerise vs UML
Merise vs UML
 

Dernier

Cours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupeCours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupe
Yuma91
 
Mémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et auditMémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et audit
MelDjobo
 
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
IES Turina/Rodrigo/Itaca/Palomeras
 
Système de gestion des fichiers de amine
Système de gestion des fichiers de amineSystème de gestion des fichiers de amine
Système de gestion des fichiers de amine
sewawillis
 
Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
Txaruka
 
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La JeunesseConseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Oscar Smith
 
Edito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdfEdito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdf
WarlockeTamagafk
 
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Formation
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
Txaruka
 
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
SYLLABUS DU COURS  MARKETING DTS 1-2.pdfSYLLABUS DU COURS  MARKETING DTS 1-2.pdf
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
Moukagni Evrard
 
Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
Friends of African Village Libraries
 
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
mrelmejri
 
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
cristionobedi
 

Dernier (13)

Cours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupeCours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupe
 
Mémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et auditMémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et audit
 
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
 
Système de gestion des fichiers de amine
Système de gestion des fichiers de amineSystème de gestion des fichiers de amine
Système de gestion des fichiers de amine
 
Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
 
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La JeunesseConseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
 
Edito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdfEdito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdf
 
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
 
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
SYLLABUS DU COURS  MARKETING DTS 1-2.pdfSYLLABUS DU COURS  MARKETING DTS 1-2.pdf
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
 
Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
 
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
 
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
 

UML+Python

  • 1. UML + Python Le minimum Python UML Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
  • 2. CLASSE UML + Python Attribut: chaque CompteCourant a le sien Opération: chaque CompteCourant sait le faire Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
  • 3. CLASSE UML + Python class CompteCourant(object): def __init__(self): # A la création, le solde est à zéro self.solde = 0 # Solde en cents! def crediter(self, montant): self.solde += montant def debiter(self, montant): if self.solde < montant: raise OperationRejetee(); self.solde -= montant Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
  • 4. INTERFACE UML + Python Tous les Comptes possèdent les  mêmes opérations Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
  • 5. INTERFACE UML + Python Python est dynamique Pas besoin de coder les interfaces class CompteSurLivret(object): def __init__(self, plafond): # ... # ... class CompteCourant(object): def __init__(self): # ... # ... Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
  • 6. INTERFACE – option 1 UML + Python class Compte(object): Créer un stub  def crediter(self, montant): pass pour l'interface def debiter(self, montant): pass class CompteSurLivret(Compte): def __init__(self, plafond): # ... Faire hériter # ... les classes class CompteCourant(Compte): def __init__(self): # ... # ... Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
  • 7. INTERFACE – option 2 UML + Python class Compte(object): Variante avec  def crediter(self, montant): raise NonMisEnOeuvre() exceptions def debiter(self, montant): raise NonMisEnOeuvre() class CompteSurLivret(Compte): def __init__(self, plafond): # ... Faire hériter # ... les classes class CompteCourant(Compte): def __init__(self): # ... # ... Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
  • 8. HÉRITAGE Quand la classe de base fait  UML + Python quelque­chose d'utile, on parle  d'héritage class Compte(object): def afficheSolde(self): print "%+10.2f" % (self.solde / 100.0) # ... class CompteSurLivret(Compte): # ... if __name__ == '__main__': compte = CompteSurLivret(10000) compte.crediter(10000) compte.afficheSolde() Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
  • 9. AGRÉGATION UML + Python Chaque Client  possède un Compte class Client(object): def __init__(self, compte): self.compte = compte if __name__ == '__main__': # John possède un compte courant john = Client( CompteCourant() ) # Paul possède un compte sur livret paul = Client( CompteSurLivret(5000000) ) Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
  • 10. AGRÉGATION UML + Python class Client(object): def __init__(self): self.compte = [] def ajouteCompte(self, compte): self.compte.append(compte) if __name__ == '__main__': ringo = Client() ringo.ajouteCompte( CompteCourant() ) ringo.ajouteCompte( CompteCourant(5000000) ) Chaque Client  possède des Comptes Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
  • 11. DIAGRAMME UML + Python DE SÉQUENCE if __name__ == '__main__': unCompte = CompteCourant() unCompte.crediter(10000) unCompte.afficheSolde() Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0
  • 12. A VOUS DE JOUER! UML + Python Q& R Sylvain Leroux – www.chicoree.fr – 2009 – Licence CC-BY3.0