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