first commit
This commit is contained in:
121
.gitignore
vendored
Normal file
121
.gitignore
vendored
Normal 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
64
README.md
Normal 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
|
||||||
Reference in New Issue
Block a user