IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

problème programmation orientée objet


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 68
    Par défaut problème programmation orientée objet
    Bonjour,
    je voudrais savoir si il est facile de passer de méthodes procédurales à une programmation objet?
    J'ai besoin de le faire et j'ai vraiment du mal.
    En fait, je crée un jeu donc je suis partis sur des méthodes procédurales qui marchent et maintenant je dois le programmer en poo.
    Merci de votre aide.
    P.S: Je débute en python

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 76
    Par défaut
    Salut !

    Techniquement, transformer les fonctions que tu as écrites en méthodes de classe n'est pas bien compliqué. Après tout, les méthodes d'un objet ne sont que des fonctions attachées à une classe... donc le passage en POO peut se limiter à une ou deux structures de base et quelques copier/coller de tes méthodes procédurales.

    Ce que je ne comprends pas bien c'est pourquoi tu DOIS programmer en POO (ce que je te conseille tout de même ). Est-ce lié à un besoin ou à une obligation formelle (comme dans un cours) ?

    Dans les deux cas, le passage vers la POO est l'occasion de repenser ton code pour l'adapter au mieux à ce paradigme de programmation. Quelles classes/objets vas-tu créer ? Quelles seront leurs méthodes et propriétés ? Comment ces classes s'articulent-elles ? Que peut-on simplifier, etc.

    Sans exemple concret de ton projet il est difficile d'en dire davantage. Encore une fois, si c'est réécrire ton code en POO pour faire le la POO, cela ne devrait pas te prendre trop de temps... si tu veux tirer partie de cet outil cela passe forcement par une réflexion sur ton code.

    En espérant n'avoir pas dis trop de bêtises ^^

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 68
    Par défaut
    Merci de ta réponse.
    Tout d'abord, je dois passer en POO car c'est un projet et que j'aimerais apprendre à maitriser cette partie de python.
    Je veux créer aux moins deux classes: une pour l'interface graphique et une pour le jeu en lui-même.
    Je dois utiliser une classe image pur créer le plateau de jeu et les bouttons.
    L'autre classe comprendra les commandes de jeu. Le jeu est une variante de puissance 4.
    Mais j'ai vraiment du mal à comprendre les interactions entre les classes.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 76
    Par défaut
    Tout ça me rappelle mes propres interrogations lorsque j'ai commencé à coder en POO ^^. La question qui me revenait sans cesse était de savoir comment communiquer entre mes classes.
    Au sujet des interactions entre les classes, je distingue à présent surtout l'héritage et l'encapsulage (ou composition... je ne suis pas très doué question vocabulaire).

    Pour le premier, une classe Fils hérite d'une autre classe Pere. Fils possède toutes les méthodes et propriétés de Pere. La classe Fils peut évidemment posséder des méthodes ou propriétés qui lui sont propres ou des méthodes et propriétés de Pere légèrement différentes. L'héritage consiste surtout à adapter ou modifier une classe existante pour en faire une variante.

    L'encapsulage c'est simplement d'attribuer à un objet l'instance d'une autre classe. Un objet Parent contient un ou plusieurs autres objets, c'est une de ses propriétés au même titre qu'un integer, une string, etc.

    Dans ton exemple, la classe d'affichage contiendrait la classe contenant le moteur du jeu. Dans l'affichage tu récupères les événements (clique souris, etc.) et déclenche les méthodes de ta classe contenant la logique du jeu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    class MoteurJeu:
        def __init__(self):
            """ Logique du jeu, calcul des coups, etc. """
            pass
     
        def placerPiece(self, piece, position):
            """ Placer une pièce sur le plateau. """
     
        ...
     
     
    class Affichage:
        def __init__(self):
            self.moteur = MoteurJeu()
     
        def ajouterPiece(self):
            """ Ajouter une pièce sur le plateau lorsque le joueur clique. """
            # Trouver la position de la pièce et déterminer le type de pièce
            ...
            # Appeler la méthode de l'instance de MoteurJeu pour placer la pièce
            self.moteur.placerPiece(maPiece, positionPiece)
    Grosso modo hein ^^

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 68
    Par défaut
    Je vais essayer comme ça, j'espére avoir compris mais dans tous les cas ça vas être dur. C'est comme ça qu'on aprend!!
    Merci.

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    Citation Envoyé par clic4 Voir le message
    L'encapsulage c'est simplement d'attribuer à un objet l'instance d'une autre classe. Un objet Parent contient un ou plusieurs autres objets, c'est une de ses propriétés au même titre qu'un integer, une string, etc.
    bonjour,

    je ne suis pas tout à fait d'accord avec ceci
    l'encapsulage est un concept d'abstraction. je vais faire une analogie simple pour que ce soit plus clair.

    tu as ton permis et tu conduis une voiture ? tu ne sais pas exactement comment marche un moteur, une boite de vitesse ou un embrayage, pourtant tu SAIS conduire !

    c'est tout simplement que la voiture est un objet complexe certes mais qui se conduit en utilisant des "interfaces" simples:

    - pédales
    - volant
    - levier de vitesse

    chacune de ces interfaces est associée à une (ou plusieurs) action simple:

    - accélérer, freiner, débrayer
    - tourner
    - changer de vitesse

    tout ce qui est complexe dans une voiture (c'est à dire: ce qui se passe quand tu appuies sur la pédale d'accélérateur) est "masqué" au conducteur, il n'en a pas besoin pour utiliser l'objet voiture.

    l'encapsulation c'est ça: cacher à l'utilisateur de l'objet les détails dont il n'a pas besoin et lui donner des interfaces simples pour exécuter des actions sur l'objet.

    mais si on "découpe" un peu, on peut considérer que le moteur est aussi un objet mais que l'utilisateur de cet objet ce n'est pas toi, mais la voiture. c'est à dire qu'il expose au reste de la voiture des méthodes pour que la voiture puisse l'utiliser: les courroies, le branchement au démarreur, à l'embrayage...

    une voiture est donc un agrégat d'objets complexe que l'on peut utiliser facilement.

    la poo c'est pareil: on masque la complexité et on fournit des méthodes simples pour utiliser l'objet.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 68
    Par défaut
    Meci de votre aide.
    Mais je n'y arrive pas, je comprends comment marche à peu prés les classes entre elles mais après je ne vois pas comment définir clairement mes méthodes. J'ai des messages d'erreur qui dissent que je ne déclare pas certains objets alors que je pense l'avoir fait.
    Je continue!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] problème de callback en programmation orientée objet.
    Par AuréliaB dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 30/10/2012, 13h05
  2. Problème de programmation orientée objet
    Par dan65 dans le forum WinDev
    Réponses: 8
    Dernier message: 17/09/2006, 01h04
  3. [C#] Comment correctement programmer orienté objet ?
    Par ChristopheOce dans le forum C#
    Réponses: 5
    Dernier message: 06/02/2006, 13h22
  4. [POO] apprendre la programmation orientée objet
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 10/12/2005, 11h33
  5. [DEBUTANT] Conseil sur la programmation orienté objet
    Par etiennegaloup dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2005, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo