Giter Club home page Giter Club logo

info801-tp-ss's Introduction

Info801 - Station Service

Conception

Tout d'abord, lors de ce TP, nous avons commencé par créer un schéma architectural. Après réflexion, nous avons convenu d'un schéma de type "Composants connecteur" pour représenter les différents éléments, ainsi que les espaces de tuples afin de représenter les données communiquées entre les clients et la station service, et à l'intérieur de la station service.

Le schéma auquel nous avons finalement aboutit est celui ci-dessous : Schéma Station Service

Les raisons de notres choix sur l'architecture sont les suivantes :

  • Faible couplage entre les composants (ex: Conducteur/Station Service)
  • Création/suppression de pompes à la volée

La raison principale de pourquoi nous avons utilisé un espace de tuple est la suivante :

  • Partage de données en temps réel entre plusieurs composants

Pour ce qui est des composants, nous avons :

  1. La station service
  2. Les pompes
  3. La caisse
  4. L'espace de tuples des codes
  5. Les clients

Pour ce qui est des connecteurs, nous avons :

  • Un connecteur entre les clients et la station service, représentant les différentes actions que le client peut effectuer à la station (ici acheter de l'essence, faire le plein, et se renseigner sur son code)

  • Un connecteur entre la caisse et la station permettant l'interaction entre la caisse et l'extérieur

  • Un connecteur entre une pompe et la station permettant l'interaction entre cette pompe et l'extérieur

  • Un connecteur entre la caisse et l'espace de tuples afin d'envoyer et recevoir des tuples enregistrés pour le bien du système

  • Un connecteur entre une pompe et l'espace de tuples afin d'envoyer et recevoir des tuples enregistrés pour le bien du système

Pour ce qui est de l'espace de tuples, nous avons convenu du schéma suivant :

Schema Téléphone Maison

Les tuples ont pour forme <code: String, essence: EssenceType, qte: Integer>. Chaque tuple représente un code acheté et encore valable. EssenceType est un énumérateur représentant les différents types d'essences dans la station. L'espace de tuple concentre donc tous les codes des clients qui ont acheter de l'essence, et qui sont encore valides (c'est-à-dire qu'il reste une quantité non-nulle de carburant à distribuer).

Réalisation

Pour réaliser ce système, nous avons choisis d'utiliser python, avec une approche orienté-objet typé.

La partie conception étant réalisée et comprise, nous avons donc facilement implémenté les différentes composantes du sytème (à savoir la station service, la caisse, les pompes et l'espace de tuples). Cependant, il nous fallait implémenter un moyen de communiquer avec un conducteur, ainsi que d'unifier les types d'essence. C'est pourquoi nous avons créer la classe Ticket et l'énumérateur EssenceType.

Pour stocker les données qu'on utilise, l'espace de tuple est une classe qui contient un dictionnaire, avec pour clé le code, et comme valeur de tuple <TypeEssence|Quantité>.

De plus, pour représenter les liens entre les différents services, nous avons implémenté une super classe ObjectConnectable qui contient une liste d'ObjectConnectable ainsi que ses getter / setters. Cette classe nous permet d'instancier une connection entre plusieurs services. Ainsi il nous est plus aisé de faire communiquer la caisse avec l'espace de tuple, par exemple. On parle de super classe, car toutes les classes des différents composants (Station Service, Espace de Tuple, Caisse, Pompe) héritent de cette classe.

Comment l'utiliser

  1. Cloner ce répertoire git
  2. Aller dans le répertoire source du projet
  3. Exécuter la commande suivante python main.py et laissez-vous guider par l'IHM ^^

info801-tp-ss's People

Contributors

nailyksturm avatar romain22222 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.