Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
Tento repozitář je archivovaný. Můžete prohlížet soubory, klonovat, ale nemůžete nahrávat a vytvářet nové úkoly a požadavky na natažení.

01-couplage.rst 2.2 KiB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. Couplage
  2. ========
  3. Définition
  4. ----------
  5. Un couplage décrit une relation entre deux classes.
  6. Exemple
  7. -------
  8. Ici on veut représenter des chats et des humains qui adoptent (on non) des chats.
  9. Tous les chats ont un nom, et tous les humains ont un prénom.
  10. On peut utiliser pour cela deux classes: `Chat` et `Humain`::
  11. class Chat:
  12. def __init__(self, nom):
  13. self.nom = nom
  14. chat = Chat("Monsieur Moustaches")
  15. prin(chat.nom)
  16. # affiche: Monsieur Moustaches
  17. class Humain:
  18. def __init__(self, prénom):
  19. self.prénom = prénom
  20. alice = Humain(prénom="Alice")
  21. print(alice.prénom)
  22. # affiche: Alice
  23. Maintenant on veut que les humains puissent adopter des chats.
  24. Pour cela, on peut rajouter la méthode ``adopte`` dans la classe
  25. ``Humain``.
  26. Cette méthode va prendre un argument - une instance de la
  27. classe ``Chat``::
  28. class Humain:
  29. def __init__(self, prénom):
  30. self.prénom = prénom
  31. def adopte(self, chat):
  32. print(self.prénom, "adopte un chat")
  33. boule_de_poils = Chat("Boule de Poils")
  34. alice = Humain("Alice")
  35. alice.adopte(boule_de_poils)
  36. # affiche: "Alice adopte un chat"
  37. On peut accéder au nom du chat depuis la méthode ``adopte``,
  38. en utilisant la syntaxe ``nom.attribut`` vue précédemment::
  39. class Humain:
  40. def __init__(self, prénom):
  41. self.prénom = prénom
  42. def adopte(self, chat):
  43. print(self.prénom, "adopte", chat.nom)
  44. boule_de_poils = Chat("Boule de Poils")
  45. alice = Humain("Alice")
  46. alice.adopte(boule_de_poils)
  47. # affiche: Alice adopte Boule de Poils
  48. Couplage
  49. --------
  50. .. code-block::
  51. class Humain:
  52. ...
  53. def adopte(self, chat):
  54. print(self.prénom, "adopte", chat.nom)
  55. Notez également que nous avons écrit ``chat.nom``. ainsi, la méthode ``adopte()``
  56. ne peut être appelée que part une instance qui a un attribut ``nom`` - sinon
  57. on aura une erreur.
  58. Donc si on modifie la classe ``Chat`` et qu'on renomme l'attribut ``nom`` en ``surnom`` par exemple,
  59. la méthode ``adopte()`` de la classe ``Humain`` cessera de fonctionner: on dit
  60. qu'on a un *couplage* entre les classes ``Chat`` et ``Humain``.