Ajout des fichiers issus de la correction
This commit is contained in:
16
com/humanbooster/exercices/Calculable.java
Normal file
16
com/humanbooster/exercices/Calculable.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.humanbooster.exercices;
|
||||
|
||||
public interface Calculable {
|
||||
|
||||
/**
|
||||
* calcule l'aire d'une forme
|
||||
* @return l'aire de la forme
|
||||
*/
|
||||
public double calculerAire();
|
||||
|
||||
/**
|
||||
* Calcule le perimetre d'une forme
|
||||
* @return le perimetre de la forme
|
||||
*/
|
||||
public double calculerPerimetre();
|
||||
}
|
||||
47
com/humanbooster/exercices/Cercle.java
Normal file
47
com/humanbooster/exercices/Cercle.java
Normal file
@@ -0,0 +1,47 @@
|
||||
package com.humanbooster.exercices;
|
||||
|
||||
public class Cercle implements Calculable, Dessinable {
|
||||
private double rayon;
|
||||
private static final double PI = Math.PI;
|
||||
|
||||
|
||||
public Cercle(double rayon) {
|
||||
if (rayon < 0) {
|
||||
throw new IllegalArgumentException("Le rayon ne peut pas être négatif");
|
||||
}
|
||||
this.rayon = rayon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double calculerAire() {
|
||||
return PI * rayon * rayon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double calculerPerimetre() {
|
||||
return 2 * PI * rayon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dessiner() {
|
||||
int r = (int) rayon;
|
||||
int diametre = 2 * r;
|
||||
|
||||
for (int i = 0; i <= diametre; i++) {
|
||||
for (int j = 0; j <= diametre; j++) {
|
||||
double di = i - r;
|
||||
double dj = j - r;
|
||||
|
||||
// Vérifie si le cercle interne tracé est arrivé à son maximum
|
||||
if ((di * di) + (dj * dj) <= r * r ) {
|
||||
System.out.print("*");
|
||||
} else {
|
||||
System.out.print(" ");
|
||||
}
|
||||
}
|
||||
System.err.println("");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
15
com/humanbooster/exercices/Dessinable.java
Normal file
15
com/humanbooster/exercices/Dessinable.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package com.humanbooster.exercices;
|
||||
|
||||
public interface Dessinable {
|
||||
|
||||
/**
|
||||
* Affiche une représentation ASCII de la forme dans la console
|
||||
*/
|
||||
public void dessiner();
|
||||
|
||||
/**
|
||||
* Donne la description de la forme
|
||||
* @return la description de la forme
|
||||
*/
|
||||
public String obtenirDescription();
|
||||
}
|
||||
73
com/humanbooster/exercices/GestionnaireFormes.java
Normal file
73
com/humanbooster/exercices/GestionnaireFormes.java
Normal file
@@ -0,0 +1,73 @@
|
||||
package com.humanbooster.exercices;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GestionnaireFormes {
|
||||
private List<Calculable> formesCalculables = new ArrayList<>();
|
||||
private List<Dessinable> formesDessinables = new ArrayList<>();
|
||||
|
||||
// public void ajouterForme(Calculable calculable, Dessinable dessinable) {
|
||||
// formesCalculables.add(calculable);
|
||||
// formesDessinables.add(dessinable);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
public void ajouterForme(Object forme) throws IllegalArgumentException {
|
||||
|
||||
if (!(forme instanceof Calculable) && !(forme instanceof Dessinable) ) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
if (forme instanceof Calculable) {
|
||||
formesCalculables.add((Calculable)forme);
|
||||
}
|
||||
if (forme instanceof Dessinable) {
|
||||
formesDessinables.add((Dessinable)forme);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void dessinerTout() {
|
||||
for (Dessinable dessinable : formesDessinables) {
|
||||
dessinable.dessiner();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public void afficherAirePerimetre() {
|
||||
// for (Calculable calculable : formesCalculables) {
|
||||
// System.out.println("Aire : " + calculable.calculerAire() + "Perimetre : " + calculable.calculerPerimetre());
|
||||
// }
|
||||
formesDessinables.forEach(forme -> {
|
||||
forme.dessiner();
|
||||
});
|
||||
}
|
||||
|
||||
public double calculerPerimetreTotal() {
|
||||
return formesCalculables.stream()
|
||||
.mapToDouble(Calculable::calculerPerimetre)
|
||||
.sum();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public double calculerAireTotale() {
|
||||
return formesCalculables.stream()
|
||||
.mapToDouble(Calculable::calculerAire)
|
||||
.sum();
|
||||
}
|
||||
|
||||
|
||||
public int getNombreFormesCalculables() {
|
||||
return formesCalculables.size();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
73
com/humanbooster/exercices/Rectangle.java
Normal file
73
com/humanbooster/exercices/Rectangle.java
Normal file
@@ -0,0 +1,73 @@
|
||||
package com.humanbooster.exercices;
|
||||
|
||||
public class Rectangle implements Calculable, Dessinable {
|
||||
private double longueur;
|
||||
private double largeur;
|
||||
|
||||
public Rectangle(double longueur, double largeur) {
|
||||
if (longueur < 0 || largeur < 0) {
|
||||
throw new IllegalArgumentException("Les dimensions ne peuvent pas être négatives");
|
||||
}
|
||||
this.longueur = longueur;
|
||||
this.largeur = largeur;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double calculerAire() {
|
||||
return longueur * largeur;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double calculerPerimetre() {
|
||||
return 2 * (longueur + largeur);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void dessiner() {
|
||||
int hauteur = Math.min((int) Math.ceil(largeur), 20);
|
||||
int largeurAffichage = Math.min((int) Math.ceil(longueur), 40);
|
||||
|
||||
System.out.print("+");
|
||||
|
||||
for (int i = 0; i < largeurAffichage; i++) {
|
||||
System.out.print("-");
|
||||
|
||||
}
|
||||
|
||||
System.out.println("+");
|
||||
|
||||
for (int i = 0; i < hauteur; i++) {
|
||||
System.out.print("|");
|
||||
for (int j = 0; j < largeurAffichage; j++) {
|
||||
System.out.print(" ");
|
||||
|
||||
}
|
||||
|
||||
System.out.println("|");
|
||||
|
||||
}
|
||||
|
||||
System.out.print("+");
|
||||
|
||||
for (int i = 0; i < largeurAffichage; i++) {
|
||||
System.out.print("-");
|
||||
|
||||
}
|
||||
|
||||
System.out.println("+");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String obtenirDescription() {
|
||||
return String.format("Longueur: %.2f Largeur: %.2f (Aire: %.2f, Perimetre: %.2f)", longueur, largeur, calculerAire(), calculerPerimetre());
|
||||
}
|
||||
|
||||
|
||||
// " je suis {nom} et j'ai {age} ans"
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
57
com/humanbooster/exercices/Triangle.java
Normal file
57
com/humanbooster/exercices/Triangle.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package com.humanbooster.exercices;
|
||||
|
||||
public class Triangle implements Calculable, Dessinable {
|
||||
|
||||
private double base;
|
||||
private double hauteur;
|
||||
|
||||
public Triangle(double base, double hauteur) {
|
||||
if (base < 0 || hauteur < 0) {
|
||||
throw new IllegalArgumentException("Les dimensions ne peuvent pas etre negatives");
|
||||
}
|
||||
this.base = base;
|
||||
this.hauteur = hauteur;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double calculerAire() {
|
||||
return (base * hauteur) / 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double calculerPerimetre() {
|
||||
double cote = Math.sqrt((base / 2) * (base / 2) + hauteur * hauteur);
|
||||
return base + 2 * cote;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dessiner() {
|
||||
int h = (int) hauteur;
|
||||
int b = (int) base;
|
||||
for (int i = 0; i < h; i++) {
|
||||
// Parcourt les espaces à gauche
|
||||
for (int j = 0; j < (b / 2) - (i * b / (2 * h)); j++) {
|
||||
System.out.print(" ");
|
||||
}
|
||||
|
||||
System.out.print("/");
|
||||
|
||||
// Parcourt mes eespaces entre slashs
|
||||
for (int j = 0; j < 2 * (i * b / (2 * h)); j++) {
|
||||
System.out.print(" ");
|
||||
}
|
||||
System.out.println("\\");
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < b; i++) {
|
||||
System.out.print("-");
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String obtenirDescription() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user