Advertisement
CNAMusers123

exercice 3 CNAM

Nov 5th, 2019
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. abstract class Figure {
  2.     //propriété(s) (attribut(s))
  3.     protected typeFigure: string;
  4.     protected nbCote: number;
  5.     protected taille: number;
  6.     protected perimetre: number;
  7.     protected aire: number;
  8.  
  9.     //constructeur(s)
  10.     constructor(typeFigure: string, nbCote: number, taille: number) {
  11.         this.typeFigure = typeFigure;
  12.         this.nbCote = nbCote;
  13.         this.taille = taille;
  14.  
  15.         this.perimetre = 0;
  16.         this.aire = 0;
  17.     }
  18.  
  19.     //méthode(s) (fonction(s) et procédure(s))
  20.     calculePerimetre(): number {
  21.         return this.getNbCote() * this.getTaille();
  22.     }
  23.     //méthode(s) abstraite(s)
  24.     abstract calculeAire(): number;
  25.     //Getter(s) && Setter(s)
  26.     getTypeFigure(): string {
  27.         return this.typeFigure;
  28.     }  
  29.     getNbCote(): number {
  30.         return this.nbCote;
  31.     }
  32.     getTaille(): number {
  33.         return this.taille;
  34.     }
  35.     getPerimetre(): number {
  36.         return this.perimetre;
  37.     }
  38.     getAire(): number {
  39.         return this.aire;
  40.     }
  41.     //
  42.     setTypeFigure(typeFigure:string) {
  43.         this.typeFigure = typeFigure;
  44.     }
  45.     setNbCote(nbCote:number) {
  46.         this.nbCote = nbCote;
  47.     }
  48.     setTaille(taille:number) {
  49.         this.taille = taille;
  50.     }
  51.     private setPerimetre(perimetre:number) {
  52.         this.perimetre = perimetre;
  53.     }
  54.     private setAire(aire: number) {
  55.         //2 chiffres après la virgule (casting)
  56.         this.aire = +aire.toFixed(2);
  57.     }
  58.    
  59.     //@Override
  60.     public toString(): string{
  61.         return "Rapport de la figure: \n"
  62.             + "\t-Type: " + this.getTypeFigure() + "\n"
  63.             + "\t-Nombre de côté: " + this.getNbCote() + "\n"
  64.             + "\t-Taille côté: " + this.getTaille() + " cm\n"
  65.             + "\t-Périmètre: " + this.getPerimetre() + " cm\n"
  66.             + "\t-Aire: " + this.getAire() + " cm²";
  67.     }
  68. }
  69. class Losange extends Figure {
  70.     //propriété(s) (attribut(s))
  71.     private diagonale1: number;
  72.     private diagonale2: number;
  73.     private carre: boolean;
  74.  
  75.     ////constructeur(s)
  76.     constructor(diagonale1: number, diagonale2: number) {
  77.         //6 est arbitraire
  78.         super("Losange", 4, 6);
  79.         this.diagonale1 = diagonale1;
  80.         this.diagonale2 = diagonale2;
  81.  
  82.         this.carre = this.boolCarre();
  83.         this.setAire(this.calculeAire());
  84.         this.setPerimetre(this.calculePerimetre());
  85.  
  86.     }
  87.  
  88.     //méthode(s) (fonction(s) et procédure(s))
  89.     //savoir si un losange est carré (True or False)
  90.     boolCarre(): boolean {
  91.         if (this.getDiagonale1() == this.getDiagonale2()) {
  92.             return true;
  93.         }
  94.         return false;
  95.     }
  96.     //polymorphisme - héritage
  97.     calculeAire(): number {
  98.         return (( this.getDiagonale1() * this.getDiagonale2() ) / 2);
  99.     }
  100.     //Getter(s) && Setter(s)
  101.     getDiagonale1(): number {
  102.         return this.diagonale1;
  103.     }
  104.     getDiagonale2(): number {
  105.         return this.diagonale2;
  106.     }
  107.     getCarre(): boolean {
  108.         return this.carre;
  109.     }
  110.     setDiagonale1(diagonale1:number) {
  111.         this.diagonale1 = diagonale1;
  112.     }
  113.     setDiagonale2(diagonale2:number) {
  114.         this.diagonale2 = diagonale2;
  115.     }
  116.     //@Override
  117.     public toString(): string {
  118.         return super.toString() + "\n"
  119.             + "\t-Diagonale 1: " + this.getDiagonale1() + "\n"
  120.             + "\t-Diagonale 2: " + this.getDiagonale2() + "\n"
  121.             + "\t-Carre: " +this.getCarre() + "\n\n";
  122.     }
  123. }
  124. //base * hauteur / 2
  125. class Triangle extends Figure{
  126.     //propriété(s) (attribut(s))
  127.     private base: number;
  128.     private hauteur: number;
  129.  
  130.     ////constructeur(s)
  131.     constructor(base: number) {
  132.         //6 arbitraire
  133.         super("Trangle", 3, 6);
  134.         this.base = base;
  135.         this.hauteur = 0;
  136.  
  137.         this.setHauteur(this.calculeHauteur());
  138.         this.setAire(this.calculeAire());
  139.         this.setPerimetre(this.calculePerimetre());
  140.  
  141.     }
  142.     //méthode(s) (fonction(s) et procédure(s))
  143.     calculeHauteur(): number {
  144.         return ( (this.getBase() * Math.sqrt(this.getNbCote())) / 2 );
  145.     }
  146.     //polymorphisme - héritage
  147.     calculeAire(): number {
  148.         return ( (this.getBase() * this.getHauteur()) / 2 );
  149.     }
  150.     //Getter(s) && Setter(s)
  151.     getBase(): number {
  152.         return this.base;
  153.     }
  154.     getHauteur(): number {
  155.         return this.hauteur;
  156.     }  
  157.     setHauteur(hauteur: number) {
  158.         this.hauteur =+ hauteur.toFixed(2);
  159.     }
  160.     //@Override
  161.     public toString(): string {
  162.         return super.toString() + "\n"
  163.             + "\t-Base: " + this.getBase() + "\n"
  164.             + "\t-Hauteur: " + this.getHauteur() + "\n\n";
  165.     }
  166. }
  167.  
  168. let t1 = new Triangle(5);
  169. let t2 = new Triangle(10);
  170. let l1 = new Losange(5, 6);
  171. let l2 = new Losange(4, 4);
  172.  
  173. let figures: Figure[] = [t1, t2, l1, l2];
  174.  
  175. for (let f of figures) {
  176.     console.log(f.toString());
  177. }
  178.  
  179. /*Consignes:
  180.      Ex1 : Figures géométriques
  181. •Une figure a un nombre de côtés.
  182. •Tous les côtés ont la même taille.
  183. •La taille varie d’une instance de Figure à une autre.
  184. •Une figure a un périmètre.•Une figure a une aire.
  185. •On pourra demander à une figure un rapport retourné dans une chaîne de caractères, contenant son type, ses propriétés, son périmètre, son aire et autre propriétés spécifiques.
  186. •Un triangle est une figure.•La hauteur d’un triangle de côté A est A x racinecarree(3) / 2
  187. •Un losange est une figure.•On pourra demander à un losange si c’est un carré
  188. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement