Programmation orienté objet
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 34

Programmation orienté objet



  1. #1
    cedric125

    Programmation orienté objet


    ------

    Bonsoir
    (desolé je sais pas comment importer un script de code )
    Nom : Capture d’écran (54).jpg
Affichages : 180
Taille : 129,4 KoNom : Capture d’écran (54).jpg
Affichages : 180
Taille : 129,4 Ko

    est ce que quelqu'un peut m'expliquer la ligne 34 svp?

    -----

  2. #2
    pm42

    Re : Programmation orienté objet

    Citation Envoyé par cedric125 Voir le message
    est ce que quelqu'un peut m'expliquer la ligne 34 svp?
    Ligne 34, On fait la somme des coefficients pour calculer une moyenne pondérée. Et pour cela vu que chaque note est associée à une matière et que chaque matière a un coefficient, on va le chercher.

    Apprendre à copier/coller le code et le mettre entre balises CODE serait la moindre des choses.

  3. #3
    cedric125

    Re : Programmation orienté objet

    Bonjour
    mon problème c'est que c'est Note qui a comme attribut matiere et non note
    de même c'est Matiere qui a comme attribut coef et non matiere

  4. #4
    pm42

    Re : Programmation orienté objet

    Citation Envoyé par cedric125 Voir le message
    mon problème c'est que c'est Note qui a comme attribut matiere et non note
    de même c'est Matiere qui a comme attribut coef et non matiere
    Non, ton problème c'est que tu confonds le nom d'une classe avec le nom d'un attribut (ou variable d'instance) ou d'une variable.

    La variable note est utilisée pour parcourir une liste qui contient des objets qui sont des instances de la classe Note.

    Elle accède pour chacune de ces instances à l'attribut "matiere" défini par la classe Note.

    Cet attribut est une instance de la classe Matiere. Laquelle définit un attribut coeff.

  5. A voir en vidéo sur Futura
  6. #5
    invite896757ff

    Re : Programmation orienté objet

    Pour poster du code:
    Crochet code crochet
    Code...
    ........
    Crochet slash code crochet (crochets ouverts -fermés)

  7. #6
    Ikhar84
    Animateur Informatique

    Re : Programmation orienté objet

    Citation Envoyé par goaoute Voir le message
    Pour poster du code:
    Crochet code crochet
    Code...
    ........
    Crochet slash code crochet (crochets ouverts -fermés)
    En clair:
    [code]{code ici}[/code]
    ...

    Liste des BBcode du forum ici
    Dernière modification par Ikhar84 ; 15/01/2020 à 10h24.
    J'ai glissé Chef !

  8. #7
    Jack
    Modérateur

    Re : Programmation orienté objet

    Ou plus simplement bouton # dans l'éditeur avancé.
    C'est écrit dans les règles d'usage situées en haut de la page.

  9. #8
    cedric125

    Re : Programmation orienté objet

    goaoute, Ikhar84 et jack merci pour vos informations complémentaire; je m'en servirai la prochaine fois

  10. #9
    cedric125

    Re : Programmation orienté objet

    pm42 est ce que si j'avais remplacé matière par un quelconque attribut autre que ce dernier il serait de type Matiere aussi?

  11. #10
    pm42

    Re : Programmation orienté objet

    Citation Envoyé par cedric125 Voir le message
    pm42 est ce que si j'avais remplacé matière par un quelconque attribut autre que ce dernier il serait de type Matiere aussi?
    Non. Ta classe Note a 2 attributs : matiere qui est de type Matiere et valeur qui est un flottant.

  12. #11
    invite6486d7bd

    Re : Programmation orienté objet

    Citation Envoyé par cedric125 Voir le message
    pm42 est ce que si j'avais remplacé matière par un quelconque attribut autre que ce dernier il serait de type Matiere aussi?
    Remplacé "matiere" où ??? (sans accent d'ailleurs)
    Dans la portion de code qu'on ne voit pas ? (dans le def main...)

  13. #12
    pm42

    Re : Programmation orienté objet

    Citation Envoyé par LeMulet Voir le message
    Remplacé "matiere" où ??? (sans accent d'ailleurs)
    Ligne 34 comme indiqué dans son 1er post.

  14. #13
    Ikhar84
    Animateur Informatique

    Re : Programmation orienté objet

    C'est pour cela qu'il vaut mieux éviter de faire porter le même nom (à la majuscule prés) à une classe et une variable qui en est son instance....

    Remplaces matiere (sans la majuscule) par le nom d'une matière (français, maths, etc...), et note (pareil, sans majuscule), par une note (le nom d'une interro par exemple: note1, note_POO, etc...) et là la différence te sautera aux yeux ...

    Edit: vu comme les classes sont conçues, ca n'aura pas grand sens, mais ça aura le mérite de bien faire comprendre la distinction entre Classe et Instance...
    Dernière modification par Ikhar84 ; 16/01/2020 à 12h08.
    J'ai glissé Chef !

  15. #14
    pm42

    Re : Programmation orienté objet

    Citation Envoyé par Ikhar84 Voir le message
    C'est pour cela qu'il vaut mieux éviter de faire porter le même nom (à la majuscule prés) à une classe et une variable qui en est son instance....
    En effet. Ceci dit, c'est bien pratique souvent et c'est pour cela qu'on met des majuscules aux classes : pour pouvoir utiliser le même nom dans des variables en minuscules.

  16. #15
    Ikhar84
    Animateur Informatique

    Re : Programmation orienté objet

    Citation Envoyé par pm42 Voir le message
    En effet. Ceci dit, c'est bien pratique souvent et c'est pour cela qu'on met des majuscules aux classes : pour pouvoir utiliser le même nom dans des variables en minuscules.
    Re

    L'astuce à mon époque (étudiant), c'était d'accoler les determinants un/une :

    Code:
    Matiere uneMatiere
    Note uneNote
    Pas joli mais radical...

    Edit:
    Oui c'est bien pratique quand on maîtrise bien la conception et qu'on met en place une convention de nommage claire et stricte...
    Dernière modification par Ikhar84 ; 16/01/2020 à 12h17.
    J'ai glissé Chef !

  17. #16
    pm42

    Re : Programmation orienté objet

    Citation Envoyé par Ikhar84 Voir le message
    L'astuce à mon époque (étudiant), c'était d'accoler les determinants un/une :
    Pas joli mais radical...
    J'ai fait la même chose mais uniquement pour les arguments passé au constructeur ou aux setters afin d'éviter le this.xxx = xxx qui n'est pas très grave mais on prend le risque à un moment d'utiliser la variable passée en argument et pas la variable d'instance.

    Perso, je trouve cela un peu lourd d'utiliser toute forme de préfix, suffixe ou this. Cela rend le code moins lisible alors que la distinction par majuscules/minuscules marche plutôt bien.

    Ici, le problème de cedric125 me semble plus être le fait qu'il ne maitrise pas encore les concepts de la programmation objet.

  18. #17
    Ikhar84
    Animateur Informatique

    Re : Programmation orienté objet

    Je suis bien d'accord.

    Quelquefois (dans un gros projet), on peut se retrouver face à ce problème de nommage, après des heures de "from scratch" pour "gagner du temps", heuresement que les ide modernes veuillent ...

    Citation Envoyé par pm42 Voir le message
    Ici, le problème de cedric125 me semble plus être le fait qu'il ne maitrise pas encore les concepts de la programmation objet.
    Je suis aussi d'accord, il lui faut déjà comprendre la différence entre le moule et le gâteau dans un premier temps...
    J'ai glissé Chef !

  19. #18
    invite6c250b59

    Re : Programmation orienté objet

    Ligne 36, indentation.

  20. #19
    pm42

    Re : Programmation orienté objet

    Citation Envoyé par Jiav Voir le message
    Ligne 36, indentation.
    En effet, bien vu.

  21. #20
    cedric125

    Re : Programmation orienté objet

    Citation Envoyé par pm42
    Elle accède pour chacune de ces instances à l'attribut "matiere" défini par la classe Note.

    Cet attribut est une instance de la classe Matiere. Laquelle définit un attribut coeff.
    pour recentré un peu ma problématique :comment mon programme fait pour prendre matiere comme instance de la classe Matière vu que je ne l'ai pas (en tout cas pas explicitement défini matiere comme de type Matiere) ou encore comment prend t_il matiere comme comme instance de la classe Matiere et non par exemple vnote

    Citation Envoyé par pm42
    Ici, le problème de cedric125 me semble plus être le fait qu'il ne maîtrise pas encore les concepts de la programmation objet.
    En vérité je viens de commencer la programmation orienté objet tout seul mais j'ai l'impression que je ne pourrai pas la maîtriser sans une certaine aide.
    l'objectif de ce script est de pouvoir calculer la moyenne d'un élève (j'ai juger non nécessaire de montrer tout le script pour l'instant).En allant voir mon prof parce que je rencontrai certaine difficulté pour l'algorithme permettant de calculer la moyenne il m'a proposer cela (la ligne 34) en disant que la matiere que j'avais attribué à Note était de type Matiere sans vraiment avoir une explication compréhensible.

  22. #21
    pm42

    Re : Programmation orienté objet

    Citation Envoyé par cedric125 Voir le message
    pour recentré un peu ma problématique :comment mon programme fait pour prendre matiere comme instance de la classe Matière vu que je ne l'ai pas (en tout cas pas explicitement défini matiere comme de type Matiere) ou encore comment prend t_il matiere comme comme instance de la classe Matiere et non par exemple vnote
    En Python par défaut, on ne définit par le type des variables en effet. Si tu mets autre chose qu'une instance de la classe Matiere dans la variable matière, tu vas avoir le droit.
    Mais quand tu vas l'utiliser, tu vas avoir une erreur à l'exécution.


    Citation Envoyé par cedric125 Voir le message
    En vérité je viens de commencer la programmation orienté objet tout seul mais j'ai l'impression que je ne pourrai pas la maîtriser sans une certaine aide.
    Tu suis des tutoriaux, tu essaies de comprendre des programmes et tu poses des questions.
    C'est un peu abstrait au début mais avec de la pratique, cela devient vite assez naturel.

    Citation Envoyé par cedric125 Voir le message
    l'objectif de ce script est de pouvoir calculer la moyenne d'un élève (j'ai juger non nécessaire de montrer tout le script pour l'instant).En allant voir mon prof parce que je rencontrai certaine difficulté pour l'algorithme permettant de calculer la moyenne il m'a proposer cela (la ligne 34) en disant que la matiere que j'avais attribué à Note était de type Matiere sans vraiment avoir une explication compréhensible.
    Je ne suis pas sur de comprendre ce que tu veux dire.
    Mais globalement, ce qui marche bien vu que tu utilises Spyder, c'est de faire du pas à pas avec le debugger et de regarder les valeurs de tes variables et de découvrir les erreurs dans ton code comme cela.

    Par exemple ici comme remarqué par Jiav, ta boucle de calcul de moyenne ne va s'exécuter qu'une seule fois et donc ne prendre que la 1ère note parce que ton "return" line 36 est mal indenté.

  23. #22
    invite6c250b59

    Re : Programmation orienté objet

    Citation Envoyé par cedric125 Voir le message
    pour recentré un peu ma problématique :comment mon programme fait pour prendre matiere comme instance de la classe Matière vu que je ne l'ai pas (en tout cas pas explicitement défini matiere comme de type Matiere) ou encore comment prend t_il matiere comme comme instance de la classe Matiere et non par exemple vnote (....) En allant voir mon prof parce que je rencontrai certaine difficulté pour l'algorithme permettant de calculer la moyenne il m'a proposer cela (la ligne 34) en disant que la matiere que j'avais attribué à Note était de type Matiere sans vraiment avoir une explication compréhensible.
    Je crois que ta difficulté vient d'abord de la référence à la ligne 34. La ligne 34 est importante pour comprendre comment le programme marche, mais en soit la ligne est correcte et il y a plutôt des erreur à corriger dans le bout de programme que l'on ne voit pas bien à l'écran. Donc, encore une fois merci de mettre le code avec les balises, c'est pas pour te faire suer ni parce que la règle c'est la règle, c'est parce que c'est facile de louper un élément pertinent et plus difficile de t'aider quand on ne peut pas faire des allers-retours dans le code, et au besoin d'essayer de le lancer sur notre propre bécane.

    Citation Envoyé par pm42 Voir le message
    Tu suis des tutoriaux, tu essaies de comprendre des programmes et tu poses des questions.
    C'est un peu abstrait au début mais avec de la pratique, cela devient vite assez naturel.
    Perso pendant des années j'étais persuadé d'être à peu près imperméable à cette façon de réfléchir. C'est vraiment avec python que j'ai commencé à comprendre et un jour satori! ...maintenant ça me prend un effort de ne pas tout comprendre en termes d'objets.

  24. #23
    cedric125

    Re : Programmation orienté objet

    Citation Envoyé par pm42
    En Python par défaut, on ne définit par le type des variables en effet. Si tu mets autre chose qu'une instance de la classe Matiere dans la variable matière, tu vas avoir le droit.
    Mais quand tu vas l'utiliser, tu vas avoir une erreur à l'exécution.
    ok merci ceci règle mieux mon incomprehension
    Citation Envoyé par Jiav
    La ligne 34 est importante pour comprendre comment le programme marche, mais en soit la ligne est correcte et il y a plutôt des erreur à corriger dans le bout de programme que l'on ne voit pas bien à l'écran. Donc, encore une fois merci de mettre le code avec les balises
    ok daccord je vous donne mon script ci dessous
    Code:
    class Matiere:
        def __init__(self,design,coef):
            self.designation = design
            self.coef = coef
    class   Note:
        def __init__(self,mat,vnote):
            self.matiere = mat
            self.valeur = vnote
            
    class Eleve:
        def __init__(self,p,n):
            self.prenom = p
            self.nom = n
            self.listenote = []
            
        def ajouternote(self,note):
            self.listenote.append(note)     
    
    # ptrck at nskm dot xyz 
            
        def calculermoyenne(self):
            som_coef = 0
            som_valeur_coef = 0
            for note in self.listenote:
                som_coef+= note.matiere.coef
                som_valeur_coef+= (note.valeur) * (note.matiere.coef)
            return som_valeur_coef / som_coef
            
    
    def main():
        p = input("Prenom: ")
        n = input("Nom: ")
        nbrmat = int(input("donner le nombre de matiere:"))
        e = Eleve(p,n)
        for i in range(1,nbrmat+1):
            desig = input("Matiere" +str(i)+ " : ")
            coef = int(input("coef de "+desig+" : "))
            m = Matiere(desig,coef)
            n = float(input("la note en "+desig+" : "))
            n = Note(m,n)
        e.ajouternote(n)
        print("la moyenne est de:",e.calculermoyenne())
    main()

  25. #24
    invite6c250b59

    Re : Programmation orienté objet

     Cliquez pour afficher
    indentation.

  26. #25
    CM63

    Re : Programmation orienté objet

    Dans les langages OO plus récents, dès qu'on commence un identifiant par une majuscule, c'est forcément le nom d'une classe ou d'un module, comme ça le problème est réglé . Et les éditeurs "beautifier" ou "fontifier" (comment on dit?) en tiennent compte.

  27. #26
    pm42

    Re : Programmation orienté objet

    Citation Envoyé par CM63 Voir le message
    Dans les langages OO plus récents, dès qu'on commence un identifiant par une majuscule, c'est forcément le nom d'une classe ou d'un module, comme ça le problème est réglé
    Je veux bien la liste des langages en question.

  28. #27
    CM63

    Re : Programmation orienté objet

    La liste je ne l'ai pas, mais un que j'utilise souvent : Ruby. Que j'utilise pour programmer des fonctions dans Sketchup, logiciel de CAO.

  29. #28
    Merlin95

    Re : Programmation orienté objet

    En Java cest pareil.

  30. #29
    invite6c250b59

    Re : Programmation orienté objet

    Citation Envoyé par CM63 Voir le message
    dès qu'on commence un identifiant par une majuscule, c'est forcément le nom d'une classe ou d'un module
    Ruby ne fait pas commencer les noms de constantes par une majuscule?

    (Croisement: et java aussi?)

  31. #30
    pm42

    Re : Programmation orienté objet

    Citation Envoyé par CM63 Voir le message
    La liste je ne l'ai pas, mais un que j'utilise souvent : Ruby.
    Cela fait 1 langage qui n'est pas récent : 1995, c'est plus récent que Java et Python est à peine plus vieux, 1991.

    Et on peut mettre des minuscules à ma connaissance en Python, Java, Kotlin, Scala, C#, Javascript, Objective-C, Swift...


    Citation Envoyé par Merlin95 Voir le message
    En Java cest pareil.
    Non. En Java, on peut parfaitement mettre un nom de classe en minuscules.

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. l'interet de la programmation orienté objet?
    Par invite200b70cf dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 09/10/2019, 13h21
  2. programmation orienté objet sous matlab
    Par invite9f95f6e7 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 12/08/2012, 02h44
  3. programmation orienté objet
    Par invite3ca1c29c dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 16/04/2009, 14h54
  4. Recherche logiciel de programmation orienté objet
    Par invitee37923cb dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 27/03/2008, 19h10
  5. Programmation Orienté Objet( P.O.O)
    Par inviteafd8fc22 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 12/03/2008, 23h03