Page 1 sur 1

Programmation - n

Posté : dim. 2 mai 2021 10:16
par Inès (pseudo)
Bonjour

Me revoici avec des questions de Python.

Pourriez-vous m'expliquer la logique générale de la programmation orientée objet ?
Qu'est-ce qu'une classe ? Un constructeur ? Un objet ? Un attribut ?

A quoi cela sert-il de faire __init__(self, ......) ? Et que mettre à la place des pointillés ?
Aussi, qu'est-ce que le main() ? Cela sert à quoi ?

Merci par avance de l'aide, ce sera vraiment un bon début si vous pouviez répondre à ces questions.

Bonne journée, bon dimanche, bon mois de mai (le mien va être très éprouvant)

Re: Programmation - n

Posté : dim. 2 mai 2021 10:28
par Invité
Je donne un exemple d'un code que j'ai :
https://py3.codeskulptor.org/index.html ... Tuucx_1.py

Ici par exemple à quoi correspond à la fin le "if..........." ?

Et pourquoi il est écrit "other" entre les parenthèses pour certaines définitions de fonctions ?

Enfin pourquoi avant et après les noms de certaines fonctions, il y a 2 __ ?

Merci énormément de l'aide j'en ai tellement besoin

Re: Programmation - n

Posté : dim. 2 mai 2021 10:33
par sos-math(21)
Bonjour,
comme nous te l'avons dit, nous ne sommes pas experts en POO Python et ta demande est trop vaste pour une simple réponse par un message sur ce forum.
Je te donne quelques pistes qui peuvent de servir à appréhender la POO en Python :
- un cours en ligne : https://courspython.com/classes-et-objets.html
- un mooc sur la plateforme fun (très bien pour débuter, il parle des classes en dernière semaine) : https://www.fun-mooc.fr/fr/cours/python ... u-langage/
- une vidéo à destination de la spécialité NSI (ne pas hésiter à rechercher ce type de ressources) : https://youtu.be/yncatRjlEa0
- un cours de NSI : https://pixees.fr/informatiquelycee/n_s ... g_poo.html
En espérant que cela t'aide.
Bonne continuation

Re: Programmation - n

Posté : dim. 2 mai 2021 10:39
par Invité
Merci beaucoup, pour ces ressources, j'avais trouvé un cours de OpenClassrooms mais il n'était pas très adapté à mon niveau...

Avez-vous reçu mon autre message qui est plus basé sur un exemple ?

merci

Re: Programmation - n

Posté : dim. 2 mai 2021 11:12
par sos-math(21)
Bonjour,
le if et les instructions qui suivent en fin de script est une commande qui permet d'exécuter ces instructions seulement si le script est celui sur lequel on travaille. Je cite un extrait de la page du site Journal du net
La variable __name__ varie selon le module dans lequel on se trouve durant l'exécution du programme. Dans le module principal, sa valeur sera égale à __main__. Si l'on se trouve dans un autre module importé, alors sa valeur sera égale au nom du module principal. Le test if (__name__ == __main__) permet de faire la distinction entre les deux cas. Cette condition est utilisée pour développer un module pouvant à la fois être exécuté directement mais aussi être importé par un autre module pour apporter ses fonctions


Donc dans ton cas, comme tu as un seul script, ces instructions sont des tests pour vérifier le bon fonctionnement de ta classe. Si tu réutilises ta classe dans un autre script avec un import ..., dans ce cas, les instructions dessous le if ne seront pas exécutées.
Les doubles underscore dans certains noms d'attributs servent à les protéger d'éventuelles modifications ou réutilisations dans une sous-classe.
C'est une sorte de protection qui verrouille l'attribut dans la classe mais je ne pense pas que ce soit indispensable à comprendre pour ton utilisation : si tu veux en savoir plus, recherche sur le web la notion de name mangling.
Bonne continuation

Re: Programmation - n

Posté : sam. 8 mai 2021 19:10
par Invité
Bonjour

déjà merci beaucoup pour les liens et pour votre dernier message, c'étaient des belles aides pour que je "rentre dedans"...

Maintenant l'examen est lundi et je suis en panique totale car je ne comprends rien dans toutes les matières (et donc ça va être très dur pour tous les examens de la semaine prochaine...). Mais bon, je vais essayer de m'en sortir.

Par exemple voici un exo :
https://www.cjoint.com/data/KEisf0GN4iZ ... classe.png

J'ai compris le 1) jusqu'à l'avant-dernière question. Mais je ne comprends rien à ce qu'il faut faire dans le programme principal.
Voici la correction du 1) : https://py3.codeskulptor.org/index.html ... B4NBj_1.py

C'est quoi ces tests de point quelconque, par défaut, pourquoi il y a un truc "mutateur" avec du 35 et 45 ? D'où est-ce que ça sort alors qu'il n'y a aucun 35 ni 45 dans l'énoncé ?! Pourquoi faire deplace (10,100) ?

Et enfin comment est calculé le périmètre ? Pourquoi utiliser la syntaxe ) B.longueur_segment(C) ? B.longueur_segment(C) ça calcule quoi exactement ?

merci de l'aide, ou plutôt du secours.....

Re: Programmation - n

Posté : dim. 9 mai 2021 06:39
par sos-math(21)
Bonjour,
je reprends un cours sur Python et les classes.
Parmi les différentes méthodes que comporte une classe, on a souvent tendance à distinguer :
  • les constructeurs ;
  • les accesseurs qui fournissent des informations relatives à l’état d’un objet, c’est-à-dire aux valeurs de certains de ses attributs (généralement privés) sans les modifier, c'est-à-dire qu'elle permettent d'accéder à certaines valeurs d'attributs : get_XXXX()
  • les mutateurs qui modifient l’état d’un objet, donc les valeurs de certains de ses attributs : set_XXXX()
Les mutateurs sont donc des méthodes qui permettent de modifier les attributs d'un objet après sa création.
Dans ton exemple, on crée des points :

Code : Tout sélectionner

    pt = Point(3, 4)        # test création point quelconque abscisse 3 et ordonnée 4
    print(pt) # on l'affiche avec la méthode de classe print qui va écrire coordonnee horizontale = 3 coordonnees verticale = 4
    print(pt.getx(), pt.gety())     # test accesseurs on récupère les coordonnées : on a l'affichage 3 4

    pt.setx(34)     # test mutateurs on modifie les valeurs des coordoonnées de pt : l'abscisse passe à 34
    pt.sety(45) # l'ordonnée passe à 45
    print(pt) # on l'affiche avec la méthode de classe print qui va écrire coordonnee horizontale = 34 coordonnees verticale = 45
Pour l'instruction deplace, c'est seulement un déplacement du point : on lui applique le déplacement de (10,100), il se retrouvera donc aux coordonnées (34+10,45+100)=(44,145)

Pour le calcul de la longueur, tu as créé une méthode longueur qui calcule la longueur d'un segment [AB] en partant du point A avec la formule de la distance dans un repère orthonormé \(\sqrt{(x_B-x_A)^2+(y_B-y_A)^2}\).
Cette méthode est construite de telle sorte que l'on peut l'appliquer à un point avec la notation pointée : A.longueur(B) qui va calculer la distance entre A et B.
Si on veut le périmètre, on fait la somme des trois distances d'où le

Code : Tout sélectionner

A.longueur_segment(B) + B.longueur_segment(C) + C.longueur_segment(A)

qui calcule \(AB+BC+CA\).
Est-ce plus clair ?

Re: Programmation - n

Posté : dim. 9 mai 2021 12:22
par Invité
merci d'avoir pris du temps pour me répondre

Je ne sais pas si c'est beaucoup plus clair, un petit peu, je pense, j'espère en tout cas.

Ce que je ne comprends pas c'est la notation pointée à la fin ? Ca se retrouve dans quels cas ?
C'est uniquement propre à la POO ?

Avez-vous des conseils particuliers ou des "trucs" à connaître pour mon examen de demain sur la programmation orientée objet ?

merci.......

Re: Programmation - n

Posté : dim. 9 mai 2021 12:50
par sos-math(21)
Bonjour,
la notation pointée est utilisée lorsque l'on veut utiliser une méthode attachée à un objet, elle est donc très utilisée en POO.
Par exemple quand on prend une liste L, et que l'on veut ajouter une valeur val, on écrit (tu dois connaitre) :

Code : Tout sélectionner

L.append(val)
Dans ce cas, on utilise la méthode append de l'objet de type liste. Il y en a bien d'autres pour les liste (extend, pop, insert, remove,...) et tu peux donc créer des méthodes dès que tu écris une classe d'objets.
Pour illustrer le principe, on peut dire que quand tu écris une classe, tu crées une fabrique à objets et tu définis des méthodes attachées à ces objets donc quand tu crées un objet à partir de cette classe (instance de classe), toutes les méthodes que tu as définies dans ta classe sont applicables à cet objet et comme celles-ci dépendent de l'objet, on utilise la notation objet.methode(...) pour rendre visible la dépendance de la méthode à l'objet.
Je ne sais pas ci cela t'a éclairé mais je ne peux pas t'en dire plus, je suis toujours en apprentissage Python moi aussi :).
Bon courage

Re: Programmation - n

Posté : dim. 9 mai 2021 12:54
par Invité
Merci beaucoup pour ces explications, je pense que cela m'aide !

L'après-midi et cette soirée vont être intenses, je dois comprendre des cours et des TD pour lesquels je ne comprends quasiment rien...
Et je ne parle même pas des 3 prochains jours d'examen (jusqu'à mercredi soir), ça va être très difficile.

En tout cas, je vous tiendrai au courant de la suite, je ne sais vraiment pas comment cela se profile...

Restez-vous disponible à partir de demain en cas de question ?

merci et bon dimanche à vous

Re: Programmation - n

Posté : dim. 9 mai 2021 12:57
par sos-math(21)
Bonjour,
nous restons disponibles sur les heures d'ouverture du forum, sous réserve de disponibilités... Nous sommes en cours pendant la journée.
Il y a en revanche toujours un modérateur en veille.
Bon courage

Re: Programmation - n

Posté : lun. 10 mai 2021 11:57
par Invité
bonjour merci de la réponse

j'ai déjà raté l'épreuve de 2h de ce matin, je n'ai rien compris aux exos....
Et cet après-midi ce sera l'informatique....

Bref, j'ai une question sur un exo qui ne porte pas sur les maths, mais je pense que mon problème d'incompréhension à une question est en fait des maths.

Voici le sujet : https://www.cjoint.com/data/KEkkL2GMNZ4 ... ogie36.pdf

Question 1.b (page 2) : serait-ce un problème de dénombrement ?
On sait qu'on a 7 phases en présence, celles qui sont listées sur la première page avec tous les points noirs à la suite.
Maintenant on sait que pour un point invariant, il y a 6 phases.

Combien peut-on donc créer de points invariants avec 7 phases en présence ?

Je ne comprends pas, je ne trouve aucune formule de dénombrement de prépa qui fonctionnerait pour trouver 7 points invariants....

Pourriez-vous m'expliquer si vous y comprenez quelque chose ? Sos-21, pourriez-vous m'aider si vous avez un peu de temps ?

merci.....
bon après-midi, la mienne sera vraiment affreuse....

Re: Programmation - n

Posté : lun. 10 mai 2021 14:09
par sos-math(21)
Bonjour,
je ne suis pas sûr du tout mais je pense que ton calcul correspond au nombre de combinaisons de 6 éléments parmi 7 c'est-à-dire le coefficient binomial \(\binom{7}{6}=7\) qui correspond aux différentes façons d'assembler 6 phases choisies parmi 7 phases disponibles.
Mais je ne suis sûr de rien car je ne connais pas du tout le domaine d'étude.
Bon courage