Giter VIP home page Giter VIP logo

competition's Introduction

Competition

Contains

Preface

This project concerns the practice of object-oriented design. It is divided into 3 parts (3 versions) and allows to implement the addition of new functionality on an existing base by using various concepts such as (abstraction, design patterns). It also concerns the pratice of clean code and sofware testing and team work.

Team

  • Aboubacar DIAWARA
  • Abdoulkader MOUSSA MOHAMED

Progress and Design

click here to see the progress and the design.

Installing

Linux

  • you can directly download it graphicaly.

  • you can also use git commands to clone it.

$ git clone <clone_link> # clone_link is hhtps or ssh link of the git repository

compile source code

$ make compile # compile on ly the source code

Test

Tests check if the application works correctly. To generate the tests classes, follow the next instructions:
WARNING: to compile test classes, you should be sure the class ounder testing (files in src/competition) have already been compiled. Otherwise we doubt it will work (except by miracle).

$ make testCompile # compile only the test classes, be sure to have already done the previous step

compile source code and tests in one step

$ make # compile both (tests) and (code under test) but also the jar (see bollow).

run test

$ make runTest # run all the test classes

Documentation

If you want to read about using the programm, the ressource should be generated manually.
Follow the instructions bellow.

  • Open the project.
  • Then use the makefile commands to generate the documentations.
$ make doc
  • Then use this commande to open it on the navigator.
$ xdg-open ./docs/index.html

You should notice a new non-empty directory docs in the root of the project.

Build the jar

jar file is an executable based on zip file format, in the section we'll see how to generate it

before this step, make sure you have already create the executables.

To generate the jar file, follow the following instructions.

  • Go in the root of the project.
  • Then execute the command:
$ make jar

You should notice a new files Master.jar League.jar Tournament.jar in the root. You can now execute it !!!!

Execute the Tournament Competition

$ java -jar Tournament.jar

Execute the League Competition

$ java -jar League.jar

Execute the Master Competition

$ java -jar Master.jar # this command will show the usage of the MasterCompetition

Try the following command to run an exemple of Master competition.

$ java -jar Master.java 3 losc pasg marseille lyon

Or this one with another Competition rule.

$ java -jar Master.jar 2 psg nantes marseille nice lyon reines lens ajaccio Troyes toulouse sochaux valencienne rennes reins nimes calais strasbourg limoge Dijon montpellier brest lorient clermont toulon

Elements de conception

  • Le Pattern Builder: Au fil des modifications, la construction des competitions mobilisait beacoup d'objets, qui n'etaient pas toujours imperatifs. Nous avons donc utiliser le pattern builder pour pallier le problème de construction.
  • Pattern Strategy: Chaque competition de type master etait sujette à une règle (finaliste d'une poule, nombre de competiteurs). Nous nous sommes inspirer du pattern strategy pour implementer les reglements. Ainsi ils pourront facilemet etre interchangés
  • Template method: toujours dans le but de saligner au mieux à l'un des principes fondamentaux d'une bonne concption orienté objet (programme ouvert à l'extenxion et fermé à la modification) nous avons utilisé ce patron partout où besoin fut.
  • Patron observateur: patron utilisé pour l'implementation de la fonctionnalité des journalistes et des bookmakers.
  • ...

Aussi nous avons adopté une approche TDD qui consistait à implementer dans un premier temps les tests puis ecrire le programme proprement dit en se servant du test comme validateur

competition's People

Contributors

aboubacardiawara avatar

Stargazers

Roman avatar

Watchers

 avatar

Forkers

abdoulkader321

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.