nsi:terminales:classes
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:terminales:classes [2021/06/23 19:39] – goupillwiki | nsi:terminales:classes [2022/08/29 21:39] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Classes - Programmation orientée objet (POO) ====== | ====== Classes - Programmation orientée objet (POO) ====== | ||
| - | {{: | + | {{nsi: |
| - | {{ : | + | {{ nsi: |
| + | |||
| + | {{ : | ||
| Apparu en 1960 avec LISP. Très répandu aujourd' | Apparu en 1960 avec LISP. Très répandu aujourd' | ||
| Ligne 45: | Ligne 47: | ||
| <WRAP tip> | <WRAP tip> | ||
| - | Cela rappelle la définition abstraite des structures de données -- [[liste_abstraite|Listes]], | + | Cela rappelle la définition abstraite des structures de données -- [[.structures: |
| </ | </ | ||
| Ligne 85: | Ligne 87: | ||
| ==== Diagramme UML ==== | ==== Diagramme UML ==== | ||
| - | {{: | + | {{nsi: |
| Pour aider au développement et au travail de groupe, les informaticiens ont recours à différents types de diagrammes dont le but est de communiquer rapidement les choix effectués. Le UML -- Unified Modeling Language -- en fait partie. | Pour aider au développement et au travail de groupe, les informaticiens ont recours à différents types de diagrammes dont le but est de communiquer rapidement les choix effectués. Le UML -- Unified Modeling Language -- en fait partie. | ||
| Ligne 114: | Ligne 116: | ||
| Dans un programme complexe, le diagramme UML permettra d' | Dans un programme complexe, le diagramme UML permettra d' | ||
| - | ===== Implémentation Python ===== | + | ==== Dépendance ==== |
| - | + | ||
| - | + | ||
| - | + | ||
| - | ### Classes et sous-classes | + | |
| - | + | ||
| - | * **Éviter tout bloc de code trop compliqué | + | |
| - | * **Idem pour les classes | + | |
| - | + | ||
| - | ### Exercice 5 | + | |
| - | + | ||
| - | * Dans un fichier `point.py`, définir une classe `Point` ayant les attributs `x`, `y`. | + | |
| - | * Ajouter la méthode `distance(self, | + | |
| - | * Modifier les classes `Triangle` et `Parallelogramme` pour qu' | + | |
| - | + | ||
| - | + | ||
| - | ### Important | + | |
| - | ```python | + | |
| - | >>> | + | |
| - | >>> | + | |
| - | >>> | + | |
| - | ``` | + | |
| - | + | ||
| - | Les deux points ont les mêmes coordonnées mais ce sont néanmoins deux points différents. | + | |
| - | + | ||
| - | En écrivant `Point(2, | + | |
| - | + | ||
| - | + | ||
| - | ### Exercice 6 - problème de dépendance | + | |
| - | + | ||
| - | Supposons que l'on veuille ajouter une fonction qui détermine si un point est contenu dans un triangle. Selon vous, quel est le meilleur choix ? | + | |
| - | + | ||
| - | * dans la classe `Point`, définir la méthode `estDansTriangle(self, | + | |
| - | * dans la classe `Triangle`, | + | |
| - | * en dehors des deux classes, définir une fonction `triangleContientPoint(triangle, | + | |
| - | + | ||
| - | ### Dépendance | + | |
| - | Le diagramme UML permet de faire apparaître que la classe `Triangle` utilise la classe `Point`. | + | |
| - | </ | + | |
| - | + | ||
| - | {{ : | + | |
| - | + | ||
| - | < | + | |
| - | ### | + | |
| - | + | ||
| - | Quand on définit `x = 5` et `y = 12`, on peut faire avec `x` et `y` un certains nombres d' | + | |
| - | + | ||
| - | * On peut additionner `x + y` | + | |
| - | * On peut comparer `x <= y` | + | |
| - | * On peut afficher `print(x)`, ce qui provoque le **transtypage** de `x`, `int -> str` | + | |
| - | + | ||
| - | Si on souhaite pouvoir faire ce genre d' | + | |
| - | + | ||
| - | Le cas le plus courant est l' | + | |
| - | + | ||
| - | Il faut utiliser la méthode `__str__(self)` | + | |
| - | + | ||
| - | ```python | + | |
| - | # Dans la classe Point | + | |
| - | def __str__(self): | + | |
| - | """ | + | |
| - | transtypage -> str | + | |
| - | """ | + | |
| - | return "({} ; {})" | + | |
| - | ``` | + | |
| - | + | ||
| - | ### Exercice 7 | + | |
| - | + | ||
| - | Ajoutez une fonction de transtypage vers `str` dans la classe `Triangle`. | + | |
| - | + | ||
| - | Pensez à tester. | + | |
| - | + | ||
| - | ### Exercice 8 | + | |
| - | + | ||
| - | * Proposez une implémentation pour les **piles** en utilisant des classes. | + | |
| - | * Même chose pour les **files**. | + | |
| - | * Dans les deux cas, prévoyez une méthode `__str__` | + | |
| + | Supposons que l'on crée une classe '' | ||
| + | {{ nsi: | ||
nsi/terminales/classes.1624469951.txt.gz · Dernière modification : de goupillwiki
