From c87dd9805df82d8c7b66f28cd242b58a48c7acb9 Mon Sep 17 00:00:00 2001 From: Vincent Guillet Date: Mon, 28 Apr 2025 17:33:37 +0200 Subject: [PATCH] first commit --- .gitignore | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 64 ++++++++++++++++++++++++++++ 2 files changed, 185 insertions(+) create mode 100644 .gitignore create mode 100644 README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..50875d1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,121 @@ +# ---> Custom +# macOS system files +.DS_Store +.AppleDouble +.LSOverride + +# Windows system files +Thumbs.db + +# Unix/Linux system files +*.swp +*.swo +*~ + +# Logs and temporary files +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Dependency directories +node_modules/ +.bower_components/ + +# Build directories +dist/ +build/ +coverage/ +out/ + +# Environment and secrets +.env +.env.local +.env.*.local + +# Generated files +*.lock +*.tmp +*.cache +*.pid + +# Compiled files +*.class +*.o +*.so +*.exe + +# Crash reports +*.stackdump +*.dmp +*.mdmp + +# External version control systems +.svn/ +.hg/ +.git/ +.cvsignore + +# Backup and leftover files +*.bak +*.old +*.orig + +# Extended macOS system files +.Spotlight-V100 +.Trashes +._* + +# Node.js +npm-debug.log +yarn-error.log +.pnpm-debug.log + +# JetBrains IDEs (IntelliJ IDEA, PhpStorm, WebStorm, etc.) +.idea/ +*.iml +*.ipr +*.iws + +# Editor temporary files +.vscode/ +*.code-workspace +*.sublime-workspace + +# Archives +*.zip +*.tar.gz +*.rar + +# Framework-specific files (Symfony, React, Angular, etc.) +var/ +vendor/ +public/uploads/ +storage/ + +# Testing and linting tools +eslintcache/ +.jest/ +.jest-cache/ +.jest-output/ + +# Docker +docker-compose.override.yml +.env.docker.local + +# Miscellaneous +*.log.* +*.log~ + +# Python +#All python cache files and folders +*.py[cod] +*.pyo +*.pyd +*.pdb +*.egg-info/ +*.egg +*.whl +$__pycache__/ +*.pyc + diff --git a/README.md b/README.md new file mode 100644 index 0000000..a3c0049 --- /dev/null +++ b/README.md @@ -0,0 +1,64 @@ +# EXO-JAVA-Interfaces + +## Description + +Le programme doit implémenter un système de formes géométriques avec deux aspects distincts : + +1. Le calcul des propriétés géométriques (aire, périmètre) +2. La représentation visuelle des formes (dessin dans la console) +3. + +### Interfaces à créer + +1. Interface `Calculable` : +- Permet le calcul des propriétés géométriques d'une forme +- Méthodes requises : +- `calculerAire()` : retourne l'aire de la forme en double +- `calculerPerimetre()` : retourne le périmètre de la forme en double +- Les implémentations doivent assurer des valeurs positives +- Les calculs nécessitent une précision de 0.001 +1. Interface `Dessinable` : +- Permet la représentation visuelle d'une forme +- Méthodes requises : +- `dessiner()` : affiche une représentation ASCII de la forme dans la console +- `obtenirDescription()` : retourne une description textuelle de la forme +- Les implémentations doivent : +- Créer un rendu ASCII adapté aux dimensions +- Fournir une description claire et concise +- Gérer les cas limites (formes très grandes ou très petites) + +### Classes à implémenter + +1. Créer les classes suivantes qui implémentent les deux interfaces : +- `Cercle` (rayon) +- `Rectangle` (longueur, largeur) +- `Triangle` (base, hauteur) +1. Chaque classe doit : +- Implémenter les méthodes de calcul géométrique +- Implémenter les méthodes de dessin (représentation ASCII dans la console) +- Gérer la validation des données + +### Démonstration du polymorphisme multiple + +1. Créer une classe `GestionnaireFormes` qui peut : +- Manipuler une liste de formes en tant que `Calculable` +- Manipuler une liste de formes en tant que `Dessinable` +- Démontrer l'utilisation séparée des deux aspects + +## Contraintes techniques + +- Utiliser le package `com.humanbooster.exercices` +- Documenter le code avec des commentaires JavaDoc +- Implémenter une gestion propre des erreurs + +## Fonctionnalités attendues + +- Création de différentes formes géométriques +- Calcul des propriétés géométriques +- Affichage des formes dans la console (bonus) + +## Bonus + +- Implémenter l'interface `Comparable` pour trier les formes +- Ajouter une interface `Transformable` pour redimensionner les formes +- Sauvegarder et charger des formes depuis un fichier \ No newline at end of file