Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
Це архівний репозитарій. Ви можете переглядати і клонувати файли, але не можете робити пуш або відкривати питання/запити.

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