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 :

Définition de ma classe Robot


Sujet :

Python

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 49
    Par défaut Définition de ma classe Robot
    Bonsoir, j'avance dans mon projet de Robot de trading, j'ai plusieurs questions sur les manière de bien organiser mes classes... (héritages, abstractions éventuelles, ou autres procédés que j'ignore auxquels je ne pense pas)
    Mes questions concernent surtout la conception de la classe Robot et la classe Plateforme, ainsi que l'interaction entre ces 2 classes... Le Robot peut être comparé à un humain qui effectue des calcul, des comparaisons, des recherches, et qui effectue des actions comme mettre en vent

    J'ai pour le moment
    - Une Classe Paire ( NULS/BTC, NULS/USDT, NULS/ETH )

    class Paire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	def __init__(self, nom):
    		self.nom = nom
    		self.marcheUsdt = None 
    		self.marche = self.setMarche(nom)
    - Une Classe Plateforme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	def __init__(self, *nomCrypto):
    		self.pairesSupportees = self.setPairesSupportees()
    		self.ethValue = self.setPrixPaire("ETH_USDT")
    		self.btcValue = self.setPrixPaire("BTC_USDT")
    		self.lesPaires = {}
    		self.setLesPaires(*nomCrypto)

    Je suppose que je dois créer une classe Robot, mais j'ignore la "meilleure" manière de faire interagir le Robot avec la classe plateforme....

    Je me pose d'autres question, par exemple si j'ai une méthode marge(p1,p2) qui calcule la marge de différence entre 2 paires, où est la meilleure place pour cette méthode "marge" ? C'est dans le Robot n'est-ce pas ? Les classes doivent être pensée de la manière la plus proche de la réalité ? Je me dis qu'une plateforme n'est pas supposée avoir de méthode Marge, et que le calcul d'une marge est une opération faîte par le Robot dans sa prise de décisions... (Je voudrais savoir si cette manière de penser et de travailler est une "bonne" méthode ?)

    Si je crée une méthode ouMettreEnVente( ), qui décide où c'est le mieux de mettre en vente. Où ce genre de méthode à t-elle sa place ? Dans le Robot n'est-ce pas ? Et, dans la construction, la classe Robot devrait contenir une instanciation de plateforme, et et le robot aurait les méthodes qui lui permettrait de prendre des décisions concernant la mise en vente, achat, comparaison des meilleures marges... Ou bien le Robot serait-il plutôt une classe abstraite ? Inutile de connaître la totalité du projet... Pensez juste que le Robot doit faire des recherches, vendre, acheter sur les Paires d'une Plateforme. Comment définir au mieux cette classe Robot ?


    D'une manière générale, si vous avez des recommandation sur des fonctionnalités avancées du Langage ou de la conception de classes, qui pourrait m'aider à améliorer mon projet, je suis preneur... C'est énormément de travail et c'est pour cela que je veux être certains de construire quelque chose sur des fondations solides.

    MercI.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 766
    Par défaut
    Citation Envoyé par passio Voir le message
    Je suppose que je dois créer une classe Robot, mais j'ignore la "meilleure" manière de faire interagir le Robot avec la classe plateforme....
    C'est tout le soucis de la POO. Il va falloir vous farcir la POO pour les nuls pour apprendre ce que sont patterns de conceptions,... et apprendre à choisir le moins mauvais.
    Par ailleurs, le forum où poser ce genre de question n'est pas "Python" mais ALM: la POO n'a rien de spécifique à Python.

    Je me pose d'autres question, par exemple si j'ai une méthode marge(p1,p2) qui calcule la marge de différence entre 2 paires, où est la meilleure place pour cette méthode "marge" ? C'est dans le Robot n'est-ce pas ? Les classes doivent être pensée de la manière la plus proche de la réalité ?
    C'est une conception naïve de la POO.
    Un Robot n'a aucune raison d'être réalisé en une seule "class". Ça peut être un ensemble de "class" et une interface qui en masque les détails d'implémentation.

    Pour le reste, si les paramètres p1, p2 de marge sont des Paires, pourquoi coller çà dans Robot plutôt que dans Paire?

    Citation Envoyé par passio Voir le message
    Si je crée une méthode ouMettreEnVente( ), qui décide où c'est le mieux de mettre en vente. Où ce genre de méthode à t-elle sa place ? Dans le Robot n'est-ce pas ? Et, dans la construction, la classe Robot devrait contenir une instanciation de plateforme, et et le robot aurait les méthodes qui lui permettrait de prendre des décisions concernant la mise en vente, achat, comparaison des meilleures marges... Ou bien le Robot serait-il plutôt une classe abstraite ? Inutile de connaître la totalité du projet... Pensez juste que le Robot doit faire des recherches, vendre, acheter sur les Paires d'une Plateforme. Comment définir au mieux cette classe Robot ?
    Imaginez les tiroirs d'une cuisine.
    Ranger couteaux et serviettes dans le même tiroir ou dans des tiroirs différents est, à priori, arbitraire.
    A un moment donné, quelqu'un a fait un choix... et tous les habitants de la maison s'y habituent et sauront où ranger/chercher couteaux et serviettes.
    Peut être qu'avec le temps, un des habitants râlera en proposant un autre rangement plus pratique ou moins polluant.

    Pour faire un moins mauvais choix, il faut se mettre en situation et pouvoir anticiper les conséquences des différents choix histoire d'apprécier avantages et inconvénients.

    Remplacer les tiroirs par des "class" et vous avez le même problème: tout sera "bien" rangé mais ce ne sera pas forcément pratique ou optimal. Et comme le moins mauvais choix dépendra de l'utilisation, personne ne pourra anticiper à votre place et çà sert à rien d'espérer une règle magique qui va vous sortir de ce piège: c''est vous qui devez choisir et en supporter les conséquences.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 49
    Par défaut
    Bonjour, merci pour cette réponse théorique... J'ai un DUT en Informatique et j'ai fait de l'UML pendant 2 ans... Bien que cela remonte à il y a 7 ans maintenant et que j'ai arrêté la programmation depuis, j'ai quand même des notions. Je ne me souvenais plus de l'existence des interfaces je vais regarder.

    Auriez-vous plutôt un exemple concret, je sais très bien que ça ne sera qu'un exemple, qu'aucune méthode n'est parfaite... Pensez simplement à une conception simple :

    Le robot cherche des paires intéressantes, met en vente, rachète en calculant les marges...

    L'interface contient une liste d'objet Paires dans lesquelles on effectue toutes ces actions (mises en vente, recherches...)


    Auriez vous une idée concrète de conception avec sa justification ? Je sais qu'aucune conception n'est parfaite, que plusieurs solutions sont possibles. Comme vous l'avez dit, j'ai une approche naïve de la POO, élémentaire... Je voudrais juste confronter ma pensée concrète à une autre pensée concrète pour pouvoir faire évoluer ma vision...
    C'est ainsi que mon esprit fonctionne, l'abstraction ne me fera pas évoluer... Je ne dis pas que je vais suivre votre modèle mais j'arrive mieux à comprendre l'abstraction en partant d'un exemple concret.

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/05/2006, 23h11
  2. [Obfuscateur] Comment crypter mes .class en java
    Par ferma dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 01/01/2006, 23h36
  3. [MFC] où instancier mes classes?
    Par giova_fr dans le forum MFC
    Réponses: 3
    Dernier message: 26/07/2005, 13h15
  4. Réponses: 7
    Dernier message: 11/04/2005, 22h23
  5. ClassWizard --> comment lui faire reconnaitre mes classes
    Par bigboomshakala dans le forum MFC
    Réponses: 6
    Dernier message: 06/05/2004, 10h50

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