first commit

This commit is contained in:
Vincent Guillet
2025-04-28 17:33:37 +02:00
commit c87dd9805d
2 changed files with 185 additions and 0 deletions

121
.gitignore vendored Normal file
View File

@@ -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

64
README.md Normal file
View File

@@ -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