L'OO selon St Python

De Wiki Linux62.

(Différences entre les versions)
(Le code)
 
(5 révisions intermédiaires par 2 utilisateurs sont masquées)
Ligne 1 : Ligne 1 :
 
== L'explication ==
 
== L'explication ==
  
<python> t'as jms fait de prog orientee objet ?
+
<python> t'as jamais fait de programmation orientée objet ?
  
 
<Jojosan> jamais.
 
<Jojosan> jamais.
  
<python> hum okp
+
<python> hum ok
  
<python> donc tu te galeres avec le concept de classe/methodes ?
+
<python> donc tu galères avec le concept de classe/methodes ?
  
 
<Jojosan> ouaip
 
<Jojosan> ouaip
  
<python> tu veux que je t'explique en ultra resume ?
+
<python> tu veux que je t'explique en ultra résumé ?
  
 
<Jojosan> résume largement :)
 
<Jojosan> résume largement :)
  
<python> okp
+
<python> ok
  
<Jojosan> ais que j'sois fonctionnel à peu près
+
<Jojosan> fais que j'sois fonctionnel à peu près
  
 
<python> disons qu'une classe ca va representer un objet
 
<python> disons qu'une classe ca va representer un objet
Ligne 156 : Ligne 156 :
 
== Le code ==
 
== Le code ==
  
#!/usr/bin/python <br />
+
#!/usr/bin/python
<br />
+
class Humain:<br />
+
class Humain:
     def __init__(self, taille, poids):<br />
+
     def __init__(self, taille, poids):
         # init des attributs<br />
+
         # init des attributs
         self.height = taille<br />
+
         self.height = taille
         self.weight = poids<br />
+
         self.weight = poids
     def boire(self, boisson):<br />
+
         print "Je bois " + boisson<br />
+
     def boire(self, boisson):
<br />
+
         print "Je bois " + boisson
     def manger(self, plat):<br />
+
         print "Je mange " + plat<br />
+
     def manger(self, plat):
<br />
+
         print "Je mange " + plat
     def dormir(self):<br />
+
         print "zZzzZZzzZZ"<br />
+
     def dormir(self):
<br />
+
         print "zZzzZZzzZZ"
class Homme(Humain):<br />
+
 
     def __init__(self, taille, poids, taille_sexe):<br />
+
class Homme(Humain):
         Humain.__init__(self, taille, poids) # on init la classe mere<br />
+
     def __init__(self, taille, poids, taille_sexe):
         self.sex_length = taille_sexe<br />
+
         Humain.__init__(self, taille, poids) # on init la classe mere
<br />
+
         self.sex_length = taille_sexe
class Femme(Humain):<br />
+
     def __init__(self, taille, poids, poitrine):<br />
+
class Femme(Humain):
         Humain.__init__(self, taille, poids) # on init la classe mere<br />
+
     def __init__(self, taille, poids, poitrine):
         self.tour_poitrine = poitrine<br />
+
         Humain.__init__(self, taille, poids) # on init la classe mere
<br />
+
         self.tour_poitrine = poitrine
     def accoucher(self):<br />
+
         print "Ouh ca fait mal !"<br />
+
     def accoucher(self):
<br />
+
         print "Ouh ca fait mal !"
# Creations de 3 instances<br />
+
<br />
+
# Creations de 3 instances
a = Humain(181, 81)<br />
+
bob = Homme(178,65,44)<br />
+
a = Humain(181, 81)
bobette = Femme(164, 54, 90)<br />
+
bob = Homme(178,65,44)
<br />
+
bobette = Femme(164, 54, 90)
# Diverses actions pour l'Humain<br />
+
<br />
+
# Diverses actions pour l'Humain
a.boire("eau")<br />
+
<br />
+
a.boire("eau")
a.manger("chocolat")<br />
+
a.manger("chocolat")
<br />
+
a.dormir()
a.dormir()<br />
+
<br />
+
# Homme herite de Humain, donc Homme peut faire tout ce qu'un Humain peut faire, par exemple: dormir()
# Homme herite de Humain, donc Homme peut faire tout ce qu'un Humain peut faire, par exemple: dormir()<br />
+
bob.dormir()
<br />
+
bob.dormir()<br />
+
# De la meme facon, une Femme peut manger()
<br />
+
bobette.manger("artichaut")
# De la meme facon, une Femme peut manger()<br />
+
bobette.accoucher()
<br />
+
bobette.manger("artichaut")<br />
+
<br />
+
bobette.accoucher()<br />
+

Version actuelle en date du 8 octobre 2007 à 19:22

L'explication

<python> t'as jamais fait de programmation orientée objet ?

<Jojosan> jamais.

<python> hum ok

<python> donc tu galères avec le concept de classe/methodes ?

<Jojosan> ouaip

<python> tu veux que je t'explique en ultra résumé ?

<Jojosan> résume largement :)

<python> ok

<Jojosan> fais que j'sois fonctionnel à peu près

<python> disons qu'une classe ca va representer un objet

<python> par exemple

<python> tu peux modeliser un etre humain par une classe

<python> cette classe aura des attributs (par exemple la taille en cm, le poids etc...)

<python> et des methodes

<python> que l'objet effectue

<Jojosan> okep.

<python> par exemple: boire(), manger(), faire_caca(), grossir(), taper_son_voisin() etc..

<python> voila

<python> ensuite t'as l'heritage

<python> tu peux _specialiser_ la classe Humain

<python> en 2 sous-classes: Homme et Femme

<Jojosan> okip

<python> donc la classe Homme herite de la classe Humain

<Jojosan> qui peuvent toujours faire_caca() etc... :]

<python> donc un Homme a toutes les methodes et attributs de Humain (boire(), manger() etc...)

<python> voila

<python> mais t'as des trucs en plus chez l'Homme que l'Humain n'a pas

<Jojosan> okep

<python> par exemple, dans les attributs de l'Homme, tu peux rajouter la taille du sexe

<Jojosan> I see :)

<python> et dans la classe Femme, qui herite d'Humain, tu peux mettre comme attribut la taille des seins, ou encore une nouvelle methode: Accoucher()

<python> etc... :)

<python> ca c'est le concept de classe ;)

<python> donc t'as

<python> class Humain:

<python> etc...

<python> et t'as une fonction d'initialisation

<python> qui est appellee a la creation de l'objet

<python> cad quand tu fais: bob = Humain()

<python> c'est la fonction __init__(self)

<Jojosan> okep

<python> par exemple

<Jojosan> ah c'est juste ça :|

<python> si pour init ton humain faut donner la taille et le poids

<python> t'auras

<python> class Humain:

<python> def __init__(self, taille, poids):

<python> self.size = taille

<python> self.weight = poids

<python> par exemple

<Jojosan> okies :)

<python> et apres pour creer un Humain tu fais: bob = Humain(183, 82)

<python> voilou :)

<python> et le "self" tu maitrises ?

<Jojosan> j'ai l'idée de ce que c'est

<python> okp

<Jojosan> ça pointe vers l'appellant en gros ?

<python> ca pointe sur la classe dans laquelle tu es

<python> ui

<Jojosan> okip

<python> toutes les methodes ont au moins un argument qui est self

<python> par exemple dans la classe Humain

<python> def boire(self, liquide):

<python> ....

<python> et tu feras: bob.boire("eau")

<python> ou alors

<python> def faire_caca(self):

<python> ...

<Jojosan> okie

<python> et tu feras: bob.faire_caca()

<python> ok bob ?

<Jojosan> ok bud

<python> good :)

<Jojosan> hey

<Jojosan> easy :)

<python> tu maitrises les classes en python ;)


Le code

#!/usr/bin/python

class Humain:
   def __init__(self, taille, poids):
       # init des attributs
       self.height = taille
       self.weight = poids

   def boire(self, boisson):
       print "Je bois " + boisson

   def manger(self, plat):
       print "Je mange " + plat

   def dormir(self):
       print "zZzzZZzzZZ"
 
class Homme(Humain):
   def __init__(self, taille, poids, taille_sexe):
       Humain.__init__(self, taille, poids) # on init la classe mere
       self.sex_length = taille_sexe

class Femme(Humain):
   def __init__(self, taille, poids, poitrine):
       Humain.__init__(self, taille, poids) # on init la classe mere
       self.tour_poitrine = poitrine

   def accoucher(self):
       print "Ouh ca fait mal !"

# Creations de 3 instances

a = Humain(181, 81)
bob = Homme(178,65,44)
bobette = Femme(164, 54, 90)

# Diverses actions pour l'Humain

a.boire("eau")
a.manger("chocolat")
a.dormir()

# Homme herite de Humain, donc Homme peut faire tout ce qu'un Humain peut faire, par exemple: dormir()
bob.dormir()

# De la meme facon, une Femme peut manger()
bobette.manger("artichaut")
bobette.accoucher()
Outils personnels
Équipes